Hilfe für ein "lost-password-script"

Alles, was PHP betrifft, kann hier besprochen werden.

Hilfe für ein "lost-password-script"

Postby Obi_1 » 14. January 2005 09:48

Hi,
ich bin neu hier und auch ziemlich neu mit PHP beschäftigt.
Nun habe ich ein Problem mit einem lost-password-script welches Bestandteil eines Login ist.
Hier das Script:
Code: Select all
<html>
<head>
</head>
<body onLoad="this.document.form.email.focus();" leftMargin="0" topMargin="0" MARGINWIDTH="0" MARGINHEIGHT="0" <br>

<?
if($_GET['do'] == "type")
{
?>
           <table border=0 align=center cellspacing=0 cellpadding=0 width="370">
                <tr>
                  <td align=center><font face="Arial" size="6" color="#FFFFFF">Login</font>
                  </td>
                </tr>
                <tr>
                 <td<br><center><font face="Arial" size="2" color="#000000"><b>
                 Passwort anfordern</b></font></center><br>
                 <center><font face="Arial" size="2" color="#000000">
                 Geben Sie Ihre E-Mail ein.</font></center><br>
                 </td>
                </tr>
          </table>
          <table border=0 align=center cellspacing=0 cellpadding=0 width="370">
           <form action="lost_pwd.php?do=send" name="form" method="POST">
             <tr>
                 <td align=right><font face="Arial" size="2" color="#000000">&nbsp;&nbsp;&nbsp;
                 E-Mail:&nbsp;</font>
                 </td>
                 <td >
                 <input type="text" name="email" maxlength="50" size="24">
                 </td>
              </tr>
          </table>
          <table border=0 align=center cellspacing=0 cellpadding=0 width="370">
               <tr>
                 <td align=right>&nbsp;
                 </td>
               </tr>
              <tr>
                 <td>
                 <center>
                 <input type="Submit" name="" value="Passwort zuschicken"></center>
                 </td>
               </tr>
               <tr>
                <td align=right>&nbsp;
                </td>

               </tr>
              </form>
           </table>
<?
}
?>

<?
if($_GET['do'] == "send")
{
?>

<?
$result = mysql_query("SELECT * FROM linker_login WHERE email='".$_POST['email']."'");
  if (mysql_num_rows($result)) {
    while($row=mysql_fetch_array($result)) {
$email = $row['email'];
srand ((double)microtime()*1000000000);
$zufallszahl1 = rand(1,10000000000);
$zufallszahl = md5($zufallszahl1);
mysql_query("UPDATE linker_login SET passwd='$zufallszahl' WHERE email='".$_POST['email']."'");
echo"Es wurde Ihnen ein neues Passwort an Ihre Mail-Adresse geschickt!";

mail("$email", "Ihr Passwort", "Hallo $nickname,
Ihr neues Passwort lautet: $zufallszahl1", "From: info.holiday.travel@wanadoo.fr");
exit;

}
}
else {
echo"Die von Ihnen eingegebene Mail-Adresse existiert nicht in unserer Datenbank!";
}
?>

<?
}
?>

</body>
</html>


Die Fehlermeldung lautet immer:
Die von Ihnen eingegebene Mail-Adresse existiert nicht in unserer Datenbank!


obwohl ich das mehrmals probiert habe und die Mail-Addresse vorhanden ist.

Kann mir jemand weiterhelfen?

Obi_1
Obi_1
 
Posts: 3
Joined: 14. January 2005 09:15

Postby Obi_1 » 15. January 2005 17:06

Hallo nochmal,

hat niemand eine Ahnung was an meinem Script falsch sein könnte?

Würde mich über eine Hilfestellung freuen.

Obi_1
Obi_1
 
Posts: 3
Joined: 14. January 2005 09:15

Postby Stefan » 15. January 2005 18:10

Mal abgesehen davon, das ich Deinen Quelltext(der sehr fehlerhaft ist) schwer lesen kann, funktioniert das bei mir, es kommt die Meldung "wurde verschickt". Leider gefolgt von der Meldung, das meine SMTP Einstellungen wohl nicht ganz korrekt sind. Also besser Du prüfst zuerst, ob die Mail überhaupt an den MTA übergeben wurde und stellst dann Meldungen zur Verfügung. Und selbst wenn der Mailtext an den MTA übergeben wurde, ist noch lange nicht gewährleistet, daß die Mail auch korrekt ist oder ob sie ihren Bestimmungsort jemals erreicht. Deshalb müßte die Meldung eigentlich lauten: "Es wurde versucht einen Mail zu versenden." Aber ich gestehe, sowas hab ich auch noch nie rausgelassen. Soll nur für das Verständnis dienen.

Tipps:

Halte es so, das die PHP Verarbeitung vor der eigentlichen Ausgabe des HTML Quelltextes steht. Halte die "Meldungen" in einer Variablen fest, die Du später im HTML Quelltext ausgeben kannnst.

Prüfe, ob die übergebenen Werte überhaupt zulässig und konform sind, bevor Du sie in eine Datenbankabfrage einbaust.

Benutze CSS um die Optik zu manipulieren

Setze die Werte der HTML Elementenattribute in Hochkommas

Benutze eine DOCTYPE Angabe

Benutze für den MySQLMist "Backtiks" um Namen von Feldern einzuschließen (SET `passwd`=). Leider kann ich Dir garnicht schreiben wie sich die Taste nennt...(schöner Scheiß)

Benutze nicht den Stern(Wildcard) in der Datenbankanfrage. Du suchtst doch nur nach der Mailadresse, dann schreib doch auch nur die hin. SELECT `email` FROM `db`

Hilfe, die du nutzen solltest

http://de.selfhtml.org/
de.comm.infosystems.www.authoring.misc

de.comp.lang.php.misc
http://php-faq.de/ch/ch-mail.html
http://php-faq.de/ch/ch-code.html
http://php-faq.de/q/q-stil-waechter.html

Entwurschdel den code. Viel Erfolg.
ciao, Stefan
User avatar
Stefan
 
Posts: 475
Joined: 26. December 2002 22:36
Location: Mitten in der sonnigen Südpfalz

Postby Obi_1 » 15. January 2005 20:30

Hallo Stefan,

das war eine sehr umfangreiche Antwort und Erklärung, Danke.
Ich werde mich durch alles durchkämpfen, wenn ich Probleme habe, werde ich mich nochmals melden.

Vorerst herzlichen Dank

Obi_1
Obi_1
 
Posts: 3
Joined: 14. January 2005 09:15

Postby Stefan » 16. January 2005 01:51

Bitte, gerne geschehen.

Ich will genau diese Code wiedersehen, wenn Du in für Einsatzbereit hälst. Wenn nötig optimieren wir das dann noch ein bisschen.

Hau rein, Stefan
User avatar
Stefan
 
Posts: 475
Joined: 26. December 2002 22:36
Location: Mitten in der sonnigen Südpfalz


Return to PHP

Who is online

Users browsing this forum: No registered users and 4 guests