Fei7e: Wie kann ich durch PHP ermitteln ob Javascript aktiviert ist?

hallo,
ich hatte einen ähnlichen thread schonmal geöffnet gehabt, leider keine sinnige antwort bekommen. ;)

daher noch ein versuch.

ich habe ein formular, welches ausschließlich mit javascript geprüft wird, über vorteile und nachteile möchte ich im moment garnichts wissen, die sind mir bekannt! ;)

nun möchte ich aber gerne, daß die eingegebenen daten nur geschickt werden, wenn javascript aktiv ist und php soll nach "submit" des formulars prüfen ob javascript aktiv ist und dann entweder die daten abschicken oder ein error ausgeben.

wie kann man das am besten realisieren?

Gruß
Julien/Fei7e

PS: den link zum script ist oben zu finden

  1. Hi,

    nun möchte ich aber gerne, daß die eingegebenen daten nur geschickt werden, wenn javascript aktiv ist und php soll nach "submit" des formulars prüfen ob javascript aktiv ist und dann entweder die daten abschicken oder ein error ausgeben.

    wie kann man das am besten realisieren?

    ist jetzt nur eine Idee (ich habe es selbst nicht getestet): du baust ein hidden-field in das Formular ein, z.B. mit dem namen "js" und dem Wert "0". Als nächstes versuchst du mittels JavaScript den Wert dieses Feldes auf "1" zu setzen. Ist der Wert nach dem Abschicken "1", war JavaScript vermutlich aktiviert, ansonsten nicht.

    Gruß.

    1. Hallo Andreas,

      Ist der Wert nach dem Abschicken "1", war JavaScript vermutlich aktiviert, ansonsten nicht.

      und was ist, wenn ich das Formular bei mir speicher, den Wert auf 1 setze und das ganze dann abschicke? Auf eine serverseitige Prüfung kann man nicht verzichten - ein js-Prüfung ist zwar ganz nett, muss aber _immer_ duch eine Serverseitige ergänzt werden.

      Grüße aus Nürnberg
      Tobias

      --
      Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
      1. also kann man das auf diesem wegen nicht so leicht realisieren? zumindest nicht sicher?

        1. ich habe hier jetzt ein script welches den inhalt des hiddenfields abfragt und die daten entweder sendet oder nicht...:

          <?
             if (isset($_POST["jsscript"]))

          $verbinden=@mysql_connect("...egal... ;)");

          $jetzt=time();
          $datum = date("d-m-Y H:i:s",$jetzt);
          $personummer=$perso1 . $perso2 . $perso3 . $perso4;
          $abfrage="insert into usersystem (datum,nickname,clan,passwort1,email,nachname,vorname,strasse,hausnummer,plz,ort,personummer,games,wwclsingle,wwclclan,agb,ist16)
          values ('$datum','$nickname','$clan','$passwort1','$email','$nachname','$vorname','$strasse','$hausnummer','$plz','$ort','$personummer','$games',
          '$wwclsingle','$wwclclan','$agb','$ist16');";

          mysql_query($abfrage);
          mysql_close($verbinden);

          echo "toll";

          else
               echo "JavaScript nicht aktiviert";
          ?>

          leider fuzt es noch nicht :(

          1. Hallo,

            ich habe hier jetzt ein script welches den inhalt des hiddenfields abfragt und die daten entweder sendet oder nicht...:

            vergiss es, es wird nicht sicher funktionieren - bau eine serverseitige Prüfung.

            $jetzt=time();
            $datum = date("d-m-Y H:i:s",$jetzt);
            $abfrage="insert into usersystem (datum,[...]) values ('$datum',[...]);";

            ich hoffe doch, dass die Spalte 'datum' ein Datumsformat hat - dann brauchst du nicht mit date() das aktuelle Datum erzeugen - das kann mysql besser. Setzte das Format von 'datum' auf DATE o.ä. und schreib statt "'$datum'" nur noch NOW(). Zum Auslesen kannst du z.B. DATE_FORMAT() (->http://www.mysql.de/doc/de/Date_and_time_functions.html#IDX1264) verwenden.

            Grüße aus Nürnberg
            Tobias

            --
            Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
            1. Hello,

              vergiss es, es wird nicht sicher funktionieren - bau eine serverseitige Prüfung.

              Liegt das jetzt an meiner Grippe? Ich kann mir gerade nicht vorstellen, wie man ausschließlich serverseitig prüfen kann, ob am Client JavaScript aktiviert ist.

              Kannst Du das bitte mal vorführen?

              Grüße

              Tom

              1. Hi!

                Liegt das jetzt an meiner Grippe? Ich kann mir gerade nicht vorstellen, wie man ausschließlich serverseitig prüfen kann, ob am Client JavaScript aktiviert ist.

                Kannst Du das bitte mal vorführen?

                Er meint die Prüfung der Formulardaten die eigentlich Javascript durchführt und auf die er sich nicht verlassen kann.

                Grüße
                Andreas

                1. Hello,

                  Liegt das jetzt an meiner Grippe? Ich kann mir gerade nicht vorstellen, wie man ausschließlich serverseitig prüfen kann, ob am Client JavaScript aktiviert ist.

                  Kannst Du das bitte mal vorführen?

                  Er meint die Prüfung der Formulardaten die eigentlich Javascript durchführt und auf die er sich nicht verlassen kann.

                  Ok, dann nehme ich alles zurück. Die wirkliche Prüfung sollte man natürlich auf dem Server durchführen. Aber um den Traffic zu minimieren, eine elgante Form für Nachschlagefunktionen zu haben ist es ganz praktisch.

                  Ich brauche z.B. noch eine Nachschlagefunktion für

                  "welche Farbe hätten Sie gerne? [FFCC57] [click]"

                  Wenn JavaScript aktiv ist, soll der Button erscheinen. Wenn man ihn clickt, öffnet sich ein Fensterchen mit einer 16*16 Palette, in die man dann nur zu klicken braucht und der Wert wird ins Formularfeld übertragen, das Fesnter schließt sich. Wenn das Hauptformular (opener) nicht mehr geöffnet ist, darf auch nix Schlimmes passieren.

                  Wie gesagt, das ist ein Anwendungsfall.

                  Ohne JavasScript funktioniert sowas nur mit ausgeklügelten Hierarchien in Sessions oder eben, indem man ein fettes hidden-Field mit allen kumulierten Daten aller Sichten des Windows mitschleift.

                  Grüße

                  Tom

          2. Hello,

            <?
               if (isset($_POST["chrset"]))

            echo $_POST["chrset"];

            $verbinden=@mysql_connect("...egal... ;)");

            Die Abfrage auf dem Server ist die eine Sache. Das Setzen auf dem Client die andere.

            <head><title>Test</title>
            <script type="text/javascript">
            <!--
              function getchrset()
              {
                document.getElementById("chrset")=document.defaultCharset;
              }
            //-->
            </script>
            </head>
            <body>

            <form onSubmit="getchrset(); "...>

            <input type="hidden" id="chrset" name="chrset" value"none">
            </form>

            Was Du da abfragst, dürfte ziemlich egal sein. Es sollte eben möglichst nicht die Neugierde der 0,00001% wecken.

            Grüße

            Tom

        2. Hello,

          also kann man das auf diesem wegen nicht so leicht realisieren? zumindest nicht sicher?

          Nö. Das ist ungefähr genauso sicher, wie Du weißt, ob Dein Script  nicht vom Verfassungsschutz, dem NSA, oder irgendwelchen Aliens requested wurde.

          Ich würde mal schätzen, dass je nach Besucher-Zielgruppe Deiner Seite so ungefähr 0,00001 bis 50% der Leute sich hinsetzen, und Fakes bauen. Die obere Grenze halte ich aber eher für 'nen Joke.

          Kannst ja auch eine Rechnung durchführen lassen, bei der das Ergebnis "zufällig" in einem Hidden-Field stehen bleibt.

          Grüße

          Tom

      2. Hallo Tobias,

        Ist der Wert nach dem Abschicken "1", war JavaScript vermutlich aktiviert, ansonsten nicht.
        und was ist, wenn ich das Formular bei mir speicher, den Wert auf 1 setze und das ganze dann abschicke? Auf eine serverseitige Prüfung kann man nicht verzichten - ein js-Prüfung ist zwar ganz nett, muss aber _immer_ duch eine Serverseitige ergänzt werden.

        du hast absolut Recht, aber Fei7e schrieb explizit, dass er nichts über die  Vor- und Nachteile wissen wollte, da ihm diese bekannt seien. Daher dachte ich, er möchte nur eine Lösung, die in den meisten Fällen funktioniert. Dass mein Vorschlag nicht sicher ist, ist mir bewusst, daher schrieb ich auch "vermutlich" - ich sehe aber ein, dass ich diese Tatsache deutlicher hätte ausdrücken sollen ;-)

        Gruß.

    2. Hi!

      Ist der Wert nach dem Abschicken "1", war JavaScript vermutlich aktiviert, ansonsten nicht.

      "Vermutlich" ist genau der richtige Ausdruck. Du kannst es nur "vermuten", es gibt keinen Weg das sicher herauszufinden.

      Grüße
      Andreas

  2. Hallo,

    also man kann ja beim Javascript immer einen noscript tag angeben, der geladen werden sollte, wenn der User kein Javascript hat.

    Der sollte dann so aussehen:

    <noscript>
    <?php
    $var = "no";
    ?>
    </noscript>

    später fragst du dann einfach ab:

    <?php
    if($var=="no")
    {
    //Kein Java
    }
    ?>

    MFG
    Andavos

    --
    http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
    1. Hallo,

      also man kann ja beim Javascript immer einen noscript tag angeben, der geladen werden sollte, wenn der User kein Javascript hat.

      Nein, der Teil wird nicht extra geladen, der wird immer mitübertragen, er wir nur angezeigt wenn kein Javascript aktiviert ist. Da der PHP-Interpreter kein HMTL/Javascript... versteht, wird er die Variable in jedem Fall auf "no" setzen, und das bevor die Seite überhaupt zum Browser geschickt wurde.

      Grüße
      Andreas

      1. Hallo,

        aso, dann nicht.
        Dann weiß ich auch nicht.

        MFG
        Andavos

        --
        http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
  3. ich habe ein formular, welches ausschließlich mit javascript geprüft wird, über vorteile und nachteile möchte ich im moment garnichts wissen, die sind mir bekannt! ;)

    nun möchte ich aber gerne, daß die eingegebenen daten nur geschickt werden, wenn javascript aktiv ist und php soll nach "submit" des formulars prüfen ob javascript aktiv ist und dann entweder die daten abschicken oder ein error

    Um User die JS nicht einsetzten können oder dürfen 100% von deiner Seite auszuschliessen, kannst du einerseits, das Action Attribut des Formulars dynamisch mit JS setzten und anderseits auf dem Server den Referrer prüfen.

    Über den Menchanismus hab ich mich schone einige male geärgert und auf das Angebot der Seite dann verzichtet.

    Struppi.