PokerASS: MYSQL Abfrage

Hallo allesamt....

hab da ein problem :-)

ich habe eine Seite, die sagen wir mal a.php heisst. dort ist ein formular:

  
<form method="post" action="a.php">  
Name: <input type="text" name="beispiel" />  
<input type="submit" value="weiter" />  
</form>  

jetzt habe ich eine weitere Datei, nennen wir die Datei b.php wo auch ein formular ist:

  
<?PHP  
$verbindung = mysql_connect ("localhost", "xxxxxxxx", "xxxxxxxx")  
or die ("keine Verbindung möglich. Benutzername oder Passwort sind falsch");  
mysql_select_db("xxxxxxxx") or die ("Die Datenbank existiert nicht.");  
$abfrage = "SELECT x FROM Tabelle WHERE xxxx = '$_GET[beispiel]'";  
$ergebnis = mysql_query($abfrage);  
?>  
  
<form method="get" action="a.php">  
Name: <?PHP  
      while($row = mysql_fetch_object($ergebnis))  
      {  
      $row->x;  
      }  
      ?>  
</form>  

Kurz gesagt, geht es darum das dass ich eine bestimmte information in der datei a.php abfangen möchte und diese in der datei b.php an einer bestimmten stelle ausgeben möchte.

Viele Grüße und vielen dank.
PokerASS

  1. stell dir vor a.php und b.php wären die selben dateien und haben einen if zweig, der in abhängigkeit des inhalts von $_GET['beispiel']; ein anderes verhalten zeigen

    das ganze nennt sich affenformular

    1. schönen abend,

      bin gerade am verzweifeln und am durchdrehen, hat nichts mit der uhrzeit zu tun, sondern mit ......

      also, ich habe ja zwei formulare und habe es auch geschafft den einen wert aus der datei a.php in die datei b.php uberzugeben, weil in b.php eine function ist, die den übergebenen wert verarbeitet und es funktioniert auch, da ich sonst keine email bekommen würde.

      ich erläutere es mal so: in der datei a.php gibt der user seinen username ein und dann wird in der datei b.php eine verbindung zu einer mysql datenbank aufgebaut und der username wird in der mysql "gesucht" bzw. die emailadresse "herausgefiltert" und eine nachricht an den user versickt.

      nun will ich es aber auch so haben, das dann in einem neuen fenster die emailadresse drinnen steht, wo die nachricht versendet wurde. das neue fenster öffnet sich auch aber die emailadresse wird nicht angezeigt, an der stelle, wo ich es wollte.

      der code ist ganz simple, aber irgendwie steckt der wurm da drinnen, wo ich auf dem schlauch stehe:

        
      $verbindung = mysql_connect ("localhost", "AAAAAA", "BBBBBB")  
      or die ("keine Verbindung möglich. Benutzername oder Passwort sind falsch");  
      mysql_select_db("AAAAAA") or die ("Die Datenbank existiert nicht.");  
      $abfrageemail = "SELECT useremail FROM USERS WHERE username = '$_POST[name]'";  
      $ergebnisemail = mysql_query($abfrageemail);  
       while($row = mysql_fetch_object($ergebnisemail))  
       {  
       $strEmpfaenger = "$row->useremail";  
       }  
      
      

      der obige code funktioniert auch, sonst würde ich keine EMail erhalten.

      So, wenn ich jetzt irgendwo auf der Seite diesen Code eingebe:

      $abfrageemailzzz = "SELECT useremail FROM USERS WHERE username = '$_POST[name]'";
      $ergebnisemailzzz = mysql_query($abfrageemailzzz);
       while($row = mysql_fetch_object($ergebnisemailzzz))
       {
       echo "$row->useremail";
       }
      [/code]

      passiert an der stelle gar nichts, nicht einmal eine fehlermeldung kommt.

      Was mache ich falsch????

      schönen abend noch
      PokerASS

      1. Hi,

        So, wenn ich jetzt irgendwo auf der Seite diesen Code eingebe:

        $abfrageemailzzz = "SELECT useremail FROM USERS WHERE username = '$_POST[name]'";
        $ergebnisemailzzz = mysql_query($abfrageemailzzz);
        while($row = mysql_fetch_object($ergebnisemailzzz))
        {
        echo "$row->useremail";
        }
        [/code]

        passiert an der stelle gar nichts, nicht einmal eine fehlermeldung kommt.

        Was mache ich falsch????

        1. Du uebernimmst Usereingaben ungeprueft in deine Query, machst sie also anfaellig fuer SQL-Injection.
        2. Du betreibst keinerlei sinnvolles Debugging.
            - Stelle das error_reporting deiner PHP-Installation auf E_ALL und display_errors auf on.
              (Wenn du nicht weisst wie, dann informiere dich!)
            - Ueberpruefe nach dem Absetzen einer Datenbandabfrage immer, ob es Fehler gab; wenn ja, reagiere darauf.
            - Mache Kontrollausgaben immer zunaechst mit var_dump/print_r; in diesem Falle erst mal von $row innerhalb der Schleife.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
        1. Hallo,

          jaja, erstmal vielen Dank für die Sicherheitsinfo bzgl. der injectionen.

          Aber das was ich da mache ist nur etwas vorläufiges, bis ich eine sichere Lösung gefunden habe, und das mit dem user was ich meinte, es sind nur ca. 7 User...

          Aber nun mal zurück zu mein Posting vom 05.12.2008 um 01:18 Uhr. Was habe ich da falsch gemacht?

          Den letzten Punkt von ChrisB mit print_r verstehe ich nicht. Gibt es vielleicht eine viel einfachere Lösung?

          Viele Grüße
          PokerASS

          1. Aber das was ich da mache ist nur etwas vorläufiges, bis ich eine sichere Lösung gefunden habe, und das mit dem user was ich meinte, es sind nur ca. 7 User...

            was ist mit all den unbekannten <del>usern</del><ins>bots</ins> in den weiten des internets? auch wenns du der einzige mensch auf der welt mit zugang zu deinem system bist, absichern musst du es trotzdem

            1. ihr seid alle witzig, wisst ihr das, warum schreibt ihr euren blöden kommentare nicht irgendwo anderes rein.....

              könnt ihr mal netterweiser etwas ausführlicher schreiben und nicht einfach geht nicht....................

              vielen dank.

              1. Hi,

                ihr seid alle witzig, wisst ihr das, warum schreibt ihr euren blöden kommentare nicht irgendwo anderes rein.....

                Das hat nichts mit "witzig" zu tun, sondern mit Erfahrung - die viele Leute hier haben, du aber noch nicht.

                Und aus dieser heraus kommen u.a. die Empfehlungen, auf Sicherheit gleich von Anfang an zu achten. Denn "Ja, darum kuemmere ich mich dann spaeter noch, wenn's erst mal laeuft" - das wird dann auch gerne mal "vergessen", oder ist auf Grund von "Zeitdruck" dann nicht mehr drin ...

                könnt ihr mal netterweiser etwas ausführlicher schreiben und nicht einfach geht nicht....................

                Du bist jetzt bitte erst mal so nett, und entschuldigst dich fuer obige Unverschaemtheit - sonst bekommst du von mir zumindest keine weitere Antwort mehr.

                Und dann erklaerst du bitte mal, *was* du an dem Vorschlag, print_r fuer eine Kontrollausgabe zwecks Debugging einzusetzen, nicht verstehst.
                Immer nur zu sagen, "kapier ich nicht", ohne zu sagen, *wo* das Verstaendnisproblem liegt - so posten naemlich nur echte Dummkoepfe.

                MfG ChrisB

                --
                „This is the author's opinion, not necessarily that of Starbucks.“
  2. Hallo,

    $abfrage = "SELECT x FROM Tabelle WHERE xxxx = '$_GET[beispiel]'";

    Stell' Dir vor, in $_GET['beispiel'] steht O'Brien.
    Immer Internet geht sowas *immer*, auch wenn Du das nicht vorsiehst. Dein Skript ist damit verwundbar für SQL-Injection. Sichere bei Verwendung der (im übrigen veralteten) mysql_*-Funktionen solche Daten *immer* mit mysql_real_escape_string() ab. Verlass Dich erst recht nicht auf die dämlichen Magic Quotes, die nur Unheil anrichten.

    Freundliche Grüße

    Vinzenz