Thomas: Im Firefox gehts - im IE nicht

Hi,

ich habe ein Spiel in JavaScript Programmiert. (17 und 4)

wärend des Programmierens habe ich nur mit dem Firefox getestet. Dort hat es einwandfrei funktioniert. Leider geht es im IE Überhaupt nicht. Im IE hab ich eine Endlosschleife.

Ich habe aber keine so ausgefallenen Dinge benutzt. Kann mir also nicht erklären wo der Fehler liegt.

Ich hatte die while schleife mal umgebaut. da hatte ich die bedingung 1  und 2 drin. in diesem fall hatte ich zwar keine endlisschleife aber es ging dennoch nicht richtig.

hier könnt ihr euch das ganze ansehen...

http://thomasheiser.de/js_17und4.php

PS: hat jemand ne idee wie ich das dahinter liegende php-skript gehen cheater schützen kann? mein 0815 anticheat-trick is net so das wahre....

  1. Hi there,

    wärend des Programmierens habe ich nur mit dem Firefox getestet. Dort hat es einwandfrei funktioniert. Leider geht es im IE Überhaupt nicht. Im IE hab ich eine Endlosschleife.

    was geht und was geht nicht?

    Ich hatte die while schleife mal umgebaut. da hatte ich die bedingung 1  und 2 drin. in diesem fall hatte ich zwar keine endlisschleife aber es ging dennoch nicht richtig.

    hm ???

    PS: hat jemand ne idee wie ich das dahinter liegende php-skript gehen cheater schützen kann? mein 0815 anticheat-trick is net so das wahre....

    ein php-skript kann nicht eingesehen werden und muß daher nicht geschützt werden...

    1. Antworten dieser Art nützen mir nicht besonders viel.
      Vielleicht sollte man sich den Quellcode mal ansehen oder wenigstens testen bevor man antwortet.

      Das man bei PHP keinen Quellcode sieht ist mir auch klar.
      allerdings würde ich gerne wissen wie ich effektiv vermeiden kann,
      das jemand sich die highscore eintragen kann indem er einfach 2 paramter übergibt.

      1. Antworten dieser Art nützen mir nicht besonders viel.
        Vielleicht sollte man sich den Quellcode mal ansehen oder wenigstens testen bevor man antwortet.

        Das übliche Problem.
        Du erwartest das Leute die dir helfen wollen sich durch deinen Quellcode quälen. Vielleicht tut das sogar jemand. aber du findest mehr Leute die sich mit deinem Problem beschäftigen werden, wenn du den Fehler eingrenzen würdest und vielleicht auch reproduzierbar machst (oft hilft das sogar selber den Fehler zu finden)

        allerdings würde ich gerne wissen wie ich effektiv vermeiden kann,
        das jemand sich die highscore eintragen kann indem er einfach 2 paramter übergibt.

        In dem du vermeidest das das nicht mehr möglich ist. Letztlich nicht so trivial
        du musst den referrer testen und darfst nur POST Variabeln zulassen, dann biste halbwegs sicher.

        Struppi.

        1. Hört sich gut an mit dem POST Parameter und REFERER Überprüfen. Weißt du wie ich Postparameter Überprüfe? Also wie ich die von GET-Parametern unterscheide?

          Also wo ein Teil des Problems liegt weiß ich inzwischen.
          Im IE habe ich eine Endlosschleife in folgender Funktion:

          function getRand()
          {
          var rand = randInt(0,31);
          while(status[rand]!=0)
          {
          rand = randInt(0,31);
          }
          return rand;
          }

          Funktionsbeschreibung:

          • zuerst wird eine zufallsrahl (0-31) in die variable "rand" geschrieben.
          • "status" ist ein array mit zahlen die beim start alle 0 sind.
          • jetzt wird so oft eine neue zufallszahl generiert bis eine gefunden wurde deren status im array = 0 ist.

          Genau dort habe ich im IE eine endlosschleife. aber warum? ich hab echt keine ahnung....

          vielleicht hilft euch das weiter.... ich bin echt ratlos...

          1. Hallo,

            Also wo ein Teil des Problems liegt weiß ich inzwischen.
            Im IE habe ich eine Endlosschleife in folgender Funktion:

            function getRand()
            {
            var rand = randInt(0,31);
            while(status[rand]!=0)

            ^ http://de.selfhtml.org/javascript/objekte/window.htm#status

            {
            rand = randInt(0,31);
            }
            return rand;
            }

            Funktionsbeschreibung:

            • "status" ist ein array mit zahlen die beim start alle 0 sind.

            Sieh Dir mal im IE die Statuszeile an, nachdem Du die Seite aufgerufen hast. Dann siehst Du, warum man einen Bezeichner im Gültigkeitsbereich (Scope) window, wie Dein Array "status" nicht genau so nennen sollte, wie eine bereits existierende voreingestellte Eigenschaft in diesem Gültigkeitsbereich.

            Nenne einfach das Array _nicht_ status.

            viele Grüße

            Axel

            1. Hi,

              erstmal danke für eure Hilfe.

              Ich bin aber schon selber drauf gekommen.

              Das was mein Problem:

              Das mit der Status Zeile ist mir auch schon aufgefallen. Deswegen hab ich mich mit dem array mal genauer beschäftigt. Habe bemerkt, das der Ie und auch der Opera es nicht geaschaft haben das Array auszulesen um es anschließnd zu vergleichen.

              dann habe ich nochmal nachgelesen wie ein array erstellt wird. dabei habe etwas bemerkt.

              ich habe "status = new array[...]"

              es muss aber "var status = new array[...]" lauten.

              ohne das var haben die browser (ausser firefox) das array nicht als variablen-array sondern als objekkt-array angesehen (wenn man das so sagen kann). deswegen auch die endlosschleife weil er die bedingung nicht auslesen konnte....

              mit dem kleinem wörtschen var vor all meinen arrays habe ich das problem gelöst.

          2. Hallo Thomas

            Zusätzlich zu Axels Tipp bezüglich des Variablennamens status empfehle ich Dir als wesentlich elegantere Lösung zur Ermittlung von ganzzahligen Zufallszahlen die Lektüre folgenden Archivbeitrags zu Zufallszahlen.

            Freundliche Grüße

            Vinzenz

  2. Problem ist noch dass man (selbst im Firefox) auch ein und die selbe Karte z.B. zweimal bekommen kann!