Password Vergessen Funktion
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
anfrage
benutzer
benutzerdaten
benutzername
code
dank
datum
ergebnis
fehler
header
index
login
mime
offset
problem
support
text
vorhanden echo
zeile
-
Hallo,
Ich arbeite an einer Passwort vergessen funktion für limabone!
Ich habe den fast fertig!
Aber ich bekomme immer Folgenden Fehler!
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/lima-bone/login/pwforget2.php on line 21 Benutzername nicht vorhanden! <<< zurück Warning: mysql_close() expects parameter 1 to be resource, null given in /var/www/lima-bone/login/pwforget2.php on line 36
So viel ich entzifern konnte erwartet er was! Aber nur was?
Hier ist der Code!
<?php require("connect.inc.php"); include "config.inc.php"; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>My-Shortstory </title> </head> <body link="#485A8B" vlink="#485A8B" alink="#485A8B"> <?php $benutzer=$_POST['username']; if($benutzer!="") { $query = @mysql_query("SELECT user FROM user_".$digit." WHERE user = '".$_POST['username']."'"); $result = @mysql_fetch_array($query); $anfrage="SELECT * FROM user WHERE username LIKE'"; $anfrage="SELECT * FROM user WHERE username LIKE'"; $anfrage.=$benutzer; $anfrage.="'"; $ergebnis=mysql_query($anfrage); // Zeile 21 $anz=mysql_num_rows($ergebnis); if($anz==1) { $zeile=mysql_fetch_row($ergebnis); $text="Ihre Benutzerdaten lauten:\n\n"; $text.="Benutzername: "; $text.=$benutzer; $text.="\nPasswort: "; $text.=$zeile[1]; mail($zeile[2],"Ihre Daten",$text,"From:****@*****.**"); echo "Ihre Daten wurden Ihnen zugesand!"; } else { echo "Benutzername nicht vorhanden!<br><br>"; echo "<a href=\"../pwforget.php\"><<< zurück</a>"; } //Zeile 36 mysql_close($db); } else { echo "Bitte geben Sie einen Benutzernamen ein!<br><br>"; echo "<a href=\"pwforget.php\"><<< zurück</a>"; } ?> </body> </html>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Vermutlich steht in der Variable $db nix drin, lass dir die doch mal mit echo ausgeben.
Der Funktion mysql_close() wird nämlich der Wert "NULL" übergeben, erwartet aber einen Wert! -
Also der gibt wirklich nichts aus!
Und was muss ich jetzt machen damit er was ausgibt?
Problem gefunden!
Aber Jetzt kommt Folgender Fehler!
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in /var/www/lima-bone/login/pwforget2.php on line 29 Ihre Daten wurden Ihnen zugesand!
Beitrag zuletzt geändert: 13.10.2009 19:16:09 von privatecitypage -
Arbeitest du vielleicht lokal mit zum Beispiel XAMPP? In dem Fall hast du nämlich keinen Mailserver und es kommt zu einer Fehlermeldung.
mysql_close(); kannst du bei PHP5 eigentlich weglassen.
styVe (qap2-Team) -
Ja ich arbeite Lokal!
Aber ich habe mir die Server Softwaren per Packetverwaltung installiert !
Aber Trotzdem Danke!
Dürfte ich den Code bei Lima kurz antesten?
Wegen den 50 mails!
Edit:
Hilfe!
Es kommt jetzt zwar kein Fehler aber es wird auch keine Mail Gesendet!
Weißt jemand wieso?
Hier ist der Verbesserte Code
<?php require("connect.inc.php"); include "config.inc.php"; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>My-Shortstory </title> </head> <body link="#485A8B" vlink="#485A8B" alink="#485A8B"> <?php error_reporting(E_ALL); ini_set('display_errors', 1); $username=$_POST['username']; if($username!="") { $db=mysql_connect($dbHost,$dbUser,$dbPass); mysql_select_db($dbName); $anfrage="SELECT * FROM user_".$digit." WHERE user LIKE'"; $anfrage.=$username; $anfrage.="'"; $ergebnis=mysql_query($anfrage); $anz=mysql_num_rows($ergebnis); if($anz==1) { $zeile=mysql_fetch_row($ergebnis); $text="Ihre Benutzerdaten lauten:\n\n"; $text.="Benutzername: "; $text.=$username; $text.="\nPasswort: "; $text.=$zeile[1]; mail($zeile[2],"Ihre Daten",$text,"From:support@privatecitypage.de"); echo "Ihre Daten wurden Ihnen zugesand!"; } else { echo "Benutzername nicht vorhanden!<br><br>"; echo "<a href=\"pwforget.php\"><<< zurück</a>"; } mysql_close($db); } else { echo "Bitte geben Sie einen Benutzernamen ein!<br><br>"; echo "<a href=\"pwforget.php\"><<< zurück</a>"; } ?> </body> </html>
Beitrag zuletzt geändert: 13.10.2009 19:44:40 von privatecitypage -
Sicher, dass $zeile[2] der richtige Wert ist? Ich weiß zwar nicht, wie deine Tabelle aufgebaut ist, aber nur so: Arrays beginnen beim Index 0, wenn nicht anders angegeben.
-
Also meine Datenbanken sind in Feldern/Tabellen.
Also so
user pass mail.
So steht es in der Datenbank!
Was muss ich machen das die mail Gesendet wird? -
Wenn alle Daten korrekt sind, müsste es die Mail (wenn du es nicht nur lediglich über deinen Heimserver zu verschicken versuchst) so absenden:
<?php require("connect.inc.php"); include "config.inc.php"; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>My-Shortstory </title> </head> <body link="#485A8B" vlink="#485A8B" alink="#485A8B"> <?php error_reporting(E_ALL); ini_set('display_errors', 1); $username=$_POST['username']; if(!empty($username)) { $db=mysql_connect($dbHost,$dbUser,$dbPass); mysql_select_db($dbName); $anfrage = "SELECT user,pass,mail FROM user_".$digit." WHERE user = '$username'"; $ergebnis=mysql_query($anfrage); $anz=mysql_num_rows($ergebnis); if($anz==1) { $zeile=mysql_fetch_assoc($ergebnis); $text="Ihre Benutzerdaten lauten:\n\n"; $text.="Benutzername: $username"; $text.="\nPasswort: $zeile[1]"; mail($zeile[2],"Ihre Daten",$text,"From: Support <support@privatecitypage.de>"); echo "Ihre Daten wurden Ihnen zugesand!"; } else { echo "Benutzername nicht vorhanden!<br><br>"; echo "<a href=\"pwforget.php\"><<< zurück</a>"; } mysql_close($db); } else { echo "Bitte geben Sie einen Benutzernamen ein!<br><br>"; echo "<a href=\"pwforget.php\"><<< zurück</a>"; } ?> </body> </html>
-
Notice: Undefined offset: 1 in /home/webpages/lima-city/privatecitypage/html/Tests/login/pwforget2.php on line 25
Notice: Undefined offset: 2 in /home/webpages/lima-city/privatecitypage/html/Tests/login/pwforget2.php on line 26
Ihre Daten wurden Ihnen zugesand!
Mehr sagt er nicht!
Und die Mail hab ich auch nicht bekommen!
-
Hio,
ich nehme an der Fehler liegt bei mir aber, wo kommt die variable "$zeile[1]" bzw. "$zeile[2]" her?
$text.=$zeile[1]; mail($zeile[2],"Ihre Daten",$text,"From:support@privatecitypage.de");
Kommen die von der DB-Abfrage oder aus den Datein 'connect.inc.php', 'config.inc.php'. Ich tippe auf erstes. Auf jedenfall vermute ich das der Fehler daher rüht.
Ich hoffe ich konnte helfen :)
[EDIT]: hatte die Zeile:
$zeile=mysql_fetch_assoc($ergebnis);
übersehen --> nehme alles zurück :)
Beitrag zuletzt geändert: 13.10.2009 22:47:35 von lars-eichhorn -
Hi, lars-eichhorn^^
Das Array wird von mysql_fetch_assoc(); zurückgegeben. Index 1 und 2 _sollten_ das Passwort und die E-mail-Adresse sein. :-)
Zur Problemlösung:
<?php require("connect.inc.php"); include "config.inc.php"; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>My-Shortstory </title> </head> <body link="#485A8B" vlink="#485A8B" alink="#485A8B"> <?php error_reporting(E_ALL); ini_set('display_errors', 1); $username=$_POST['username']; if(!empty($username)) { $db=mysql_connect($dbHost,$dbUser,$dbPass); mysql_select_db($dbName); $query = mysql_query("SELECT user,pass,mail FROM user_".$digit." WHERE user = '$username'"); if(mysql_num_rows($query) == 1) { $fetch = mysql_fetch_object($query); $mail = $fetch->mail; $headline = "Deine Daten"; $content = "Benutzername: $username<br>"; $content .= "Passwort: $fetch->pass"; $header = 'MIME-Version: 1.0' . "\r\n"; $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $header .= 'From: support@privatecitypage.de' . "\r\n" . 'Reply-To: support@privatecitypage.de' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($mail,$headline,$content,$header); echo "Ihre Daten wurden Ihnen zugesand!"; } else { echo "Benutzername nicht vorhanden!<br><br>"; echo "<a href=\"pwforget.php\"><<< zurück</a>"; } mysql_close($db); } else { echo "Bitte geben Sie einen Benutzernamen ein!<br><br>"; echo "<a href=\"pwforget.php\"><<< zurück</a>"; } ?> </body> </html>
Auf die Art sollte/könnte/müsste es klappen. Bin jetzt mal ganz von dieser Array-Geschichte weg.
Hoffe ich hab' mich nicht verschrieben. :-)
styVe (qap2-Team)
Beitrag zuletzt geändert: 13.10.2009 21:07:11 von qap2 -
WOW Danke!
Edit: Jetzt kommt das Nächste Problem!
Die Passwörter werden in md5 geparst!
Wie kann ich also das Passwort Richtig Anzeigen lassen?
Beitrag zuletzt geändert: 13.10.2009 22:23:06 von privatecitypage -
Abend,
Gar nicht.
Setze ein neues Pass in der DB und erbitte um sofortige Änderung.
lg
Oleander
PS: Natürlich musst das neue Pass per Mail abschicken oder auf der Webseite anzeigen lassen. Am besten währe es mit der Mail weil sonst nicht bestätigt werden kann wer der User ist der die Daten anfragt. → Missbrauch
€dit2:
Die Codes sind unsicher bis zum geht nicht mehr. Wo finde ich die Seite denn?
Beitrag zuletzt geändert: 13.10.2009 22:44:00 von olearose -
Stimmt hast recht!
Ich werde das Problem gleich mal Lösen !
Ich bin grade dabei den Code so zu ändern das man die E-Mail Adresse Senden muss damit das Passwort ankommt, nur weiß ich nicht wie!
Ich habe erst mal das gemacht!
Was muss ich nocht machen?
<?php require("connect.inc.php"); include "config.inc.php"; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>My-Shortstory </title> </head> <body link="#485A8B" vlink="#485A8B" alink="#485A8B"> <?php error_reporting(E_ALL); ini_set('display_errors', 1); $username=$_POST['username']; if(!empty($username)) { $db=mysql_connect($dbHost,$dbUser,$dbPass); mysql_select_db($dbName); $query = mysql_query("SELECT user,pass,mail FROM user_".$digit." WHERE mail = '$username'"); if(mysql_num_rows($query) == 1) { $fetch = mysql_fetch_object($query); $mail = $fetch->mail; $headline = "Deine Daten"; $content = "Benutzername: $fetch->user<br>"; $content .= "Passwort: $fetch->pass"; $header = 'MIME-Version: 1.0' . "\r\n"; $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $header .= 'From: support@privatecitypage.de' . "\r\n" . 'Reply-To: support@privatecitypage.de' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($mail,$headline,$content,$header); echo "Ihre Daten wurden Ihnen zugesendet!"; } else { echo "Email Adresse ist nicht vorhanden!<br><br>"; echo "<a href=\"pwforget.php\"><<< zurück</a>"; } mysql_close($db); } else { echo "Bitte geben Sie eine E-Mail Adresse ein!<br><br>"; echo "<a href=\"pwforget.php\"><<< zurück</a>"; } ?> </body> </html>
Beitrag zuletzt geändert: 13.10.2009 23:35:04 von privatecitypage -
Eventuell hat es dir noch niemand gesagt. Für einen Hacker ist dein Code sehr einfach zu hacken, da du $_POST['username'] direkt ins SQL Query einbaust. So kann er das SQL Query zu seinen Gunsten erweitern.
Die Lösung ist dabei relativ einfach.
Schreibe $username = mysql_real_escape_string($_POST['username']);
Das sichert dich gegen Hacker ab. Zwar nicht zu 100%, aber die Attacke wird erschwert. -
Z.z dauert das versenden von Mails (Vom Skript) länger von dem Webspace
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage