Problem mit "Funktion Passwort zusenden"

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

  • Problem mit "Funktion Passwort zusenden"

    Hi zusammen!

    Ich habe gerade einen Login-Bereich erstellt und dazu die einzelnen Funktionen gekapselt.

    Außer der Funktion "forgot", die das Passwort zusenden soll, funktionieren alle.

    - Diese Funktion erhält die Emailadresse, welche zuvor in ein Formular eingegeben wurde.
    - Hier erhalte ich jeweils die Fehlermeldung:

    Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

    Dies betrifft diese Zeile: $nachricht = " ...";

    Hier der Code:

    PHP-Code:
    function forgot($email) {

    $sql "SELECT * FROM users WHERE UserMail='" $email "' LIMIT 1";
    $result mysql_query($sql) or die(mysql_error());
            if (
    mysql_num_rows($result) == 1) {
            
    $email mysql_fetch_assoc($result);
            
    $ismail "true";
        } else
            echo 
    "Die eingebene Adresse ist nicht korrekt!";

        if (
    $ismail == "true") {        
            while (
    $row mysql_fetch_assoc($result)) {
            
    $nachricht "Hallo $row['UserName']!"."<br />"."Ihr  Passwort ist:"."<br />"."$row['UserPass']"."<br />"."MfG\nAdmin";
            }
            
    mail($email"Passwort"$nachricht"From: Administrator");

            echo 
    '<p>Das Passwort wurde Ihnen erfolgreich an die Adresse <i>' $email '</i> geschickt!<br>';
            echo 
    'Rufen Sie Ihre E-Mails ab und loggen Sie sich ein.<br></p>';
        }

    Zuletzt geändert von DorfbewohnerBD; 28.03.2007, 19:20.

  • #2
    Wie wäre es wenn du dann auchmal in dieser Zeile nachschaust?
    Was hast du dort mit den Anführungszeichen gemacht?
    -->Escapen

    PHP-Code:
     $nachricht "Hallo "$row['UserName']." !<br />.Ihr  Passwort ist:<br />".$row['UserPass']." <br />MfG\nAdmin"
    Zumal solltest du dich mal damit beschäftigen, das man Userpasswörter nicht(!) unverschlüsselt in der DB speichern sollte.

    md5() wäre da ne gute Lösung.
    Zuletzt geändert von deathcakeman; 15.12.2009, 20:50.
    *blubb*

    Kommentar


    • #3
      Ich würde es mal so schreiben:

      $nachricht = "Hallo ".$row['UserName']."<br />Ihr Passwort ist:<br />".$row['UserPass']."<br />MfG\nAdmin";

      Kommentar


      • #4
        du hast Recht, das habe ich auch gemacht (MD5). Nur wie setzt man das denn in PHP um? Kenne dazu nur die SQL-Syntax, z.B. beim INSERT - Befehl.

        Kommentar


        • #5
          PHP-Code:
          $passwort=md5($passwort); 
          *blubb*

          Kommentar


          • #6
            vielen Dank erst mal für die schnelle Hilfe. Ist ja ein tolles Forum.

            @cathore: deine Idee hat er geschluckt.

            Nun kam die Meldung:

            Warning: mail() expects parameter 1 to be string, array given

            dies betrifft diese Zeile: mail($email, "Passwort", $nachricht, "From: Administrator")

            Das Passwort wurde Ihnen erfolgreich an die Adresse Array geschickt!

            Kommentar


            • #7
              @deathcakeman: habe es jetzt so umgeschrieben: $row[md5('UserPass')]

              die komplette Zeile würde dann so aussehen:
              $nachricht = "Hallo ".$row['UserName']."<br />Ihr Passwort ist:<br />".$row[md5('UserPass')]."<br />MfG\nAdmin";

              Kam zumindest noch keine Fehlermeldung deswegen.

              Kommentar


              • #8
                Einfach mal die Augen aufmachen:
                PHP-Code:
                $email mysql_fetch_assoc($result); 
                Gruß
                Uwe

                Kommentar


                • #9
                  Der komplette Code hat Fehler...
                  Du liest eine Zeile aus der DB, wendest aber auf das result-set eine undefinierte Anzahl an mysql_fetch_assoc-Aufrufen an - was bei einem Datensatz vollkommen Banane ist. While-Schleife wenn du weißt, dass es auf jeden Fall nur ein Datensatz ist?!
                  Das $email ein Array ist, ist bei der Zeile
                  PHP-Code:
                  $email mysql_fetch_assoc($result); 
                  wohl auch nicht weiter verwunderlich, oder?!

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #10
                    @ghostgambler: OK, die while - Schleife war hier überflüssig.
                    Aber die Zeile
                    PHP-Code:
                    $email mysql_fetch_assoc($result); 
                    brauche ich doch um den Datensatz und damit letztlich auf die Daten zugreifen zu können wie ich es hier

                    PHP-Code:
                    $nachricht "Hallo ".$email['UserName']."<br />Ihr Passwort ist:<br />".$email[md5('UserPass')]."<br />MfG\nAdmin"
                    gemacht habe.

                    Von daher ist es mir nicht ganz klar wo nun der Fehler liegen soll.

                    Kommentar


                    • #11
                      [COLOR=red]$email [/COLOR] = mysql_fetch_assoc($result);

                      mail([COLOR=red]$email [/COLOR] , "Passwort", $nachricht, "From: Administrator");

                      Jetzt klarer?

                      Und
                      PHP-Code:
                      $email[md5('UserPass')] 
                      ist auch Unfug.

                      Gruß
                      Uwe

                      Kommentar


                      • #12
                        @deathcakeman: habe es jetzt so umgeschrieben: $row[md5('UserPass')]

                        die komplette Zeile würde dann so aussehen:
                        $nachricht = "Hallo ".$row['UserName']."<br />Ihr Passwort ist:<br />".$row[md5('UserPass')]."<br />MfG\nAdmin";

                        Kam zumindest noch keine Fehlermeldung deswegen.


                        Das funktioniert so nicht.

                        Was bringt es dir wenn du dem user einen md5-hash Wert zurück gibst?

                        Zumal das so
                        PHP-Code:
                        md5($row['UserPass']); 
                        aussehen müsste.

                        Du musst das Passwort schon als md5-hash in der DB speichern.
                        *blubb*

                        Kommentar


                        • #13
                          @uwe59: habe wohl doch schon zu lange gestern dran gesessen, so das ich es nicht mehr gesehen habe.

                          PHP-Code:
                          function forgot($email) {

                              
                          $sql "SELECT * FROM users WHERE UserMail='" $email "' LIMIT 1";
                              
                          $result mysql_query($sql) or die(mysql_error());
                              if (
                          mysql_num_rows($result) == 1) {
                                  
                          $ismail "true";
                              } else
                                  echo 
                          "Die eingebene Adresse ist nicht korrekt!";

                              if (
                          $ismail == "true") {        
                                  
                          $row mysql_fetch_assoc($result);
                          $nachricht "Hallo ".$row['UserName']."!\n\nIhr Passwort ist:\n\n".$row['UserPass']."\n\nMfG\nAdmin";
                              
                          mail($email"Passwort"$nachricht"From: Administrator");
                                  
                          echo 
                          '<p>Das Passwort wurde Ihnen erfolgreich an die Adresse <i>' $email '</i> geschickt!<br>';
                          echo 
                          'Rufen Sie Ihre E-Mails ab und loggen Sie sich ein.<br></p>';
                              }

                          Ein Problem habe ich nun noch. Wie erhalte ich das richtige Passwort, da es in der DB mit MD5 verschlüsselt wurde. Mit
                          PHP-Code:
                          md5($row['UserPass']) 
                          oder
                          PHP-Code:
                          $row['UserPass'
                          hat es nicht geklappt.

                          Kommentar


                          • #14
                            Gar nicht, md5 ist eine Hash-Funktion, keine Verschlüsslungs-Funktion

                            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                            Wie man Fragen richtig stellt

                            Kommentar


                            • #15
                              gut, nur dann kann ich mir die Methode um das Passwort dem User per Mail zu schicken auch sparen.

                              Kommentar

                              Lädt...
                              X