Willkommen im TP-Hilfe-Forum! Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst.
Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team.
Hallo,ich hoffe mir kann jemand helfen.
Und zwar ich habe ein Memberlogin Script und möchte da gerne eine Passwort vergessen funktion einbauen.
Der User soll an der E-mail adresse identifiziert werden und dann das Passwort aus der MySQL Datenbank per e-mail erhalten.
Kann mir da jemand mal sowas schreiben??? Wäre ganz nett....
Hier der aufbau der Datenbank falls benötigt
Code:
CREATE TABLE users (
userID int(3) unsigned NOT NULL auto_increment,
username varchar(80) NOT NULL default '',
login varchar(30) NOT NULL default '',
pwd varchar(30) NOT NULL default '',
email varchar(80) NOT NULL default '',
PRIMARY KEY (userID),
UNIQUE KEY userID (userID),
KEY userID_2 (userID)
) TYPE=MyISAM;
SELECT pwd FROM users where email = '$gesendete_email' LIMIT 0, 1
Mit diesem Query bekommst du das Passwort, mit der PHP Funktion mail(); kannst du das Passwort dann per email versenden! Kurz noch nen HTML Formular dazu und in weniger als 2 Minuten ist das Skript fertig^^
Ich sehe da jetzt kein großes Problem! Problematischer würde es dann schon werden, wenn du in der DB nicht das Passwort selber speicherst, sondern lediglich den Hash. Dann musst du dem User halt ein neues Passwort generieren lassen und zuschicken, oder sowas in der Art!
__________________ Zwei Dinge sind Unbestreitbar:
In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Geändert von Dennis The Menace (23.12.2004 um 00:02 Uhr).
Hallo,
ok das mit dem SQL befehl habe ich nun verstanden aber irgendwie muss ich auch das resultat von der Datenbank wiedergeben damit es in der E-mail auch angegeben wird.Wäre nett wenn du mir mal das ganze schreiben könntest wie es dann aussehen muss.
<?
//Verbinden zum Server
mysql_connect("localhost","benutzer","passwd") or die("Connect nicht möglich: ".mysql_error());
//Daten holen
$sql = "SELECT pwd from users WHERE email ='$email' LIMIT 0,1";
$result = mysql_db_query('database',$sql) or die(mysql_error());
$row = mysql_fetch_assoc($result);
mail($email, $subject, $text, "From: "Admin") or die("Die Mail konnte nicht versendet werden.");
?>
Die Datenbank sachen habe ich so raus genommen das war absicht.
Aber das Problem ist das ich dabei die ganze zeit ein parse error kriege, und ich weiss nicht warum.
Wäre nett wenn da mal jemand schaut.
<?
//Verbinden zum Server
mysql_connect("localhost","benutzer","passwd") or die("Connect nicht möglich: ".mysql_error());
//Daten holen
$sql = "SELECT pwd from users WHERE email ='$email' LIMIT 0,1";
$result = mysql_db_query('database',$sql) or die(mysql_error());
$row = mysql_fetch_assoc($result);
$subject = "Passwortanfrage";
$text = "Dein Passwort lautet: $result";
mail($email, $subject, $text, "From: Admin") or die("Die Mail konnte nicht versendet werden.");
?>
Naja, du hast da jetzt erschreckend einfache Syntaxfehler reingebracht. Ein String in PHP beginnt immer mit einem ", und endet mit einem ". Wenn du dazwischen Gänsefüßchen ausgeben willst, musst du \" verwenden, sonst gibts den parse error.
PHP-Code:
echo "So kann man \" Diese \" tollen zeichen ausgeben";
Im Anhang habe ich jetzt einfach mal einen Screenshot angehängt, da siehst du, wie das Syntax Highlighting den Fehler schon erkenntlich macht!
__________________ Zwei Dinge sind Unbestreitbar:
In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Hallo,
also einen parse error bekomme ich nicht mehr.Soweit scheint es ja geklappt zu haben.
Nur ich bekomme keine E-mail gesendet komischerweise
Ich hab wirklich noch nie so ein Passwortanfrage script geschrieben.
Naja, du musst die Variable $email auch einfach mal übergeben. Außerdem fehlt noch eine Fehlerüberprüfung, nämlich der Fall, der ausgeführt werden soll, wenn die Emailadresse nicht in der Datenbank steht!
Dein nächster Schritt muss jetzt erstmal sein, dass Formular zu kreieren, wo der User, der sein passwd vergessen hat, seine emailadresse eintragen kann.
Code:
<form action="zielZurphpdatei.php" method="post">
Ihre eMail-Adresse: <input type="name" name="email" />
</form>
Hier mal ganz primitiv gelöst.
Tja, jetzt solltest du; ist für einen Anfänger das einfachste, die Variable eMail abfangen. Das geht am einfachsten, in dem du in der ersten Zeile des PHP Codes ein
PHP-Code:
$email = $_POST["email"];
Schreibst. Zusammen mit den rot markierten Wörtern im HTML Code sollt das eigentlich mehr oder weniger selbsterklärend sein. Dein nächster Schritt müsste dann sein, auf:
http://php.net/mysql_fetch_assoc zu gucken, ob das die Funktion ist, die du brauchst. Und, ob du sie richtig verwendet. Beides ist bei dir im Moment nämlich noch nicht der Fall. Daher würde ich mal
In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Hallo ich habe jetzt den letzten absatz von der ausgabe geändert.Also von
PHP-Code:
if (mysql_num_rows($result) == 0) {
echo "Die angegebene E-mail adresse oder der Username konnte keinem Benutzer zugeordnet werden!";
exit;
}
while ($row = mysql_fetch_assoc($result)) {
echo $row["pwd"];
}
mysql_free_result($result);
?>
auf
PHP-Code:
if (mysql_num_rows($result) == 0) {
echo "Die angegebene E-mail adresse oder der Username konnte keinem Benutzer zugeordnet werden!";
exit;
}
$row[pwd] = $passwort
mail($_POST[email], Passwort, $passwort, "From: Admin")
or die("Die Mail konnte nicht versendet werden.");
?>
Kann das so gehen ?
webhero
// Edit ... die frage hat sich erledigt ... gab nur wieder parse error, kann mich jemand korrigieren ?
Jetzt habe ich den Fehler.Es funktioniert super.Es musste so sein
PHP-Code:
if (mysql_num_rows($result) == 0) {
echo "Die angegebene E-mail adresse oder der Username konnte keinem Benutzer zugeordnet werden!";
exit;
}
while ($row = mysql_fetch_assoc($result)) {
mail($_POST[email], Passwort, $row["pwd"], "From: Admin")
or die("Die Mail konnte nicht versendet werden.");
}
mysql_free_result($result);
?>
danke nochmal allen für die kräftige Hilfe
webhero
// Edit ... jetzt noch ne kleine frage.. wie bekomme ich das hin das da nicht nur das Passwort in der E-mail steht sondern ... Dein Passwort lautet: *****
Wenn ich
PHP-Code:
$text = "Dein Passwort lautet: $row["pwd"];
oder
$text = "Dein Passwort lautet: $row["pwd"]";
sowie
$text = Dein Passwort lautet: echo $row["pwd"];
//So macht man es eigentlich
$text = "Dein Passwort lautet: ".$row["pwd"]; //Wobei man dann keine double quotes verwendet, sondern $row['pwd'] single ;)
//Zwar schlecht programmiert, aber noch funktionstüchtig ist auch:
$text = "Dein Passwort lautet: $row[pwd]";
echo "Wenn du also strings und ".$variablen."ausgeben willst, so ".$oft.$und.$lange."du willst, macht man dass immer mit einem PUNKT. Dass nennt sich concat, dessen deutsches Wort ich nicht schreiben kann ;). Das klappt natürlich auch mit ".$array["array"]." sogar mit ".$array["dim1"]["dim2"]." mehrdimensionalen. Du kannst so sogar ".date('r')." jede funktion einbinden, und erhältst dadurch ihren Rückgabewert."; //:)
__________________ Zwei Dinge sind Unbestreitbar:
In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Geändert von Dennis The Menace (23.12.2004 um 13:37 Uhr).