Wo ist der Fehler?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
achtung
adresse
benutzer
benutzername
betreff
brauchen
code
email
fehler
header
http
klicken
mime
nachricht
registrierung
set
stellen
type
update
vergeben
-
Hallo,
in diesem code muss noch ein Fehler sein, weil er beim klicken des Links in der Datenbank: users spalte: best "nein" nicht auf "ja" setzt. Bitte auch alle anderen Fehler mitteilen.
<?php session_start (); require ("connect.inc.php"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <title>PcundSoftware.de - Registrierung</title> </head> <body> <?php $name1 = $_GET["username"]; $mail1 = $_GET["email"]; $aktivierungscode1 = $_GET['$activierungscode']; if (isset($_GET["activierungscode"])) { $active = aktivierungscode; $aendern = "UPDATE users Set best = 'ja' WHERE activierungscode = '$active'"; $update = mysql_query($aendern); } echo "Vielen dank für die Aktivierung ihres Accounts. Der Benutzer ist nun verfügbar."; ?> <?php if (!isset($_POST['submit'])) { ?> <form method="post"> <table style="width: 100%"> <tr> <td>Name:</td> <td><input name="name" size="20" type="text"></td> </tr> <tr> <td>Vorname:</td> <td><input name="vorname" size="20" type="text"></td> </tr> <tr> <td>Wohnort:</td> <td><input name="wohnort" size="20" type="text"></td> </tr> <tr> <td>PLZ:</td> <td><input name="PLZ" size="20" type="text"></td> </tr> <tr> <td>Straße und Hausnummer:</td> <td><input name="strundhnr" size="20" type="text"></td> </tr> <tr> <td>Land:</td> <td><input name="land" size="20" type="text"></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td>Benutzername:</td> <td><input name="username" size="20" type="text"></td> </tr> <tr> <td>E-Mail Adresse:</td> <td><input name="email" size="20" type="text"></td> </tr> <tr> <td>Passwort:</td> <td><input name="password" type="password"></td> </tr> <tr> <td>Passwort wiederholen:</td> <td><input name="password2" type="password"></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td>Bestätigen der Nutzungsbedingungen:</td> <td><input name="nutzungsbedingungen" type="checkbox"></td> </tr> <tr> <td> <form method="post"> <input name="submit" type="submit" value="Anmelden"></form></td> <td> </td> </tr> </table> </form> <?php }elseif(!isset($_POST['email']) || $_POST['email'] == ""){ echo '<p align="center"> Geben Sie bitte Ihre E-Mail Adresse an! <br /><br /><a href="neu.php">Zurück</a></p>'; }elseif(!isset($_POST['username']) || $_POST['username'] == ""){ echo '<p align="center"> Einen Benutzernamen brauchen wir schon ;-) <br /><br /><a href="neu.php">Zurück</a></p>'; }elseif(!isset($_POST['password']) || $_POST['password'] == "") { echo '<p align="center"> Ein Passwort brauchen wir schon ;-)<br /><br /><a href="neu.php">Zurück</a></p>'; }elseif($_POST['password'] != $_POST['password2']) { echo '<form action="neu.php" method="post">'; echo '<p align="center">Die Passwörter stimmen nicht überein!<br /><br />'; echo '<input type="hidden" name="username" value="'.$_POST['username'].'">'; echo '<input type="submit" name="zurueck" value="Zurück"></p>'; echo '</form>'; }else{ $query = @mysql_query("SELECT user FROM users WHERE user = '".$_POST['username']."'"); $result = @mysql_fetch_array($query); if($_POST['username'] == $result['user']) { echo '<p align="center">Sorry, dieser Benutzername ist leider schon vergeben!<br /><br /><a href="neu.php">Zurück</a></p>'; die; }else{ // seed mit Mikrosekunden $bestaetigung = 'nein'; function make_seed() { list($usec, $sec) = explode(' ', microtime()); return (float) $sec + ((float) $usec * 100000); } mt_srand(make_seed()); $randval = mt_rand(); $username = $_POST['username']; $pass = md5($_POST['password']); $email = $_POST['email']; $activierungscode = $randval; $best = $_POST['$bestaetigung']; $query = "INSERT INTO users(user,pass,email,activierungscode,best) VALUES('$username', '$pass', '$email', '$randval', '$bestaetigung')"; if(mysql_query($query)){ echo '<p align="center">Der neue Benutzer wurde erfolgreich angelegt!<br /><br /><a href="sichere_seite.php">Zur Admin- Seite</a></p>'; //E-Mail mit Bestätigungscode // mehrere Empfänger $empfaenger = $_POST['email']; // beachten Sie das Komma // Betreff $betreff = 'Registrierung auf PcundSoftware.de'; // Nachricht $nachricht = ' <html> <head> <title>Registrierung auf PcundsSoftware.de</title> </head> <body> Hallo,<br><br> um Ihre Registrierung zu bestätigen klicken Sie bitte auf diesen Link: <br><br> <a herf="http://www.pcundsoftware.de/neu.php?username=$user&email=$email&activierungscode=$activierungscode" targert="blank">http://www.pcundsoftware.de/neu.php?user=$username&email=$email1&activierungscode=$activierungscode</a><br><br> <br><br> Achtung: Dies ist eine Automatisch erstellte E-Mail. Bitte versuchen sie nicht über diese E-Mail eine Frage oder dergleichen zu stellen. <br><br> Schreiben Sie bitte dafür eine E-mail an <mailto: service@pcundsoftware.de>. <br><br> Vielen Dank für Ihr Verständnis! <br><br> <br><br> Ihr Team von PcundSoftware.de <br><br> </body> </html> '; // für HTML-E-Mails muss der 'Content-type'-Header gesetzt werden $header = 'MIME-Version: 1.0' . "\r\n"; $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; // zusätzliche Header $header .= 'From: PcundSoftware.de <webmaster@pcundsoftware.de>' . "\r\n"; // verschicke die E-Mail mail($empfaenger, $betreff, $nachricht, $header); }else{ echo '<p align="center"> Beim Anlegen des neuen Benutzers trat leider ein Fehler auf!<br /><br /><a href="neu.php">Zurück</a></p>'; } } } ?> </body> </html>
Schöne Grüße
pcundsoftware -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
$aktivierungscode1 = $_GET['$activierungscode'];
sollte das nicht:
$aktivierungscode1 = $_GET['activierungscode'];
und
$active = aktivierungscode;
$active = $aktivierungscode1;
oder ist aktivierungscode eine Konstante?
Beitrag zuletzt geändert: 8.9.2009 12:21:28 von myhead -
myhead schrieb:
sollte das nicht:$aktivierungscode1 = $_GET['$activierungscode'];
$aktivierungscode1 = $_GET['$activierungscode'];
Was hast du denn beim obren verändert? Is ja genau der gleich.
Edit: Funktioniert immer noch nicht. In der Datenbank steht bei best trotz anklicken des Links nein statt ja.
Hier der veränderte Code.
<?php session_start (); require ("connect.inc.php"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <title>PcundSoftware.de - Registrierung</title> </head> <body> <?php $name1 = $_GET['username']; $mail1 = $_GET['email']; $aktivierungscode1 = $_GET['$activierungscode']; if (isset($_GET['$activierungscode'])) { $active = $aktivierungscode1; $aendern = "UPDATE users Set best = 'ja' WHERE activierungscode = '$active'"; $update = mysql_query($aendern); } echo "Vielen dank für die Aktivierung ihres Accounts. Der Benutzer ist nun verfügbar."; ?> <?php if (!isset($_POST['submit'])) { ?> <form method="post"> <table style="width: 100%"> <tr> <td>Name:</td> <td><input name="name" size="20" type="text"></td> </tr> <tr> <td>Vorname:</td> <td><input name="vorname" size="20" type="text"></td> </tr> <tr> <td>Wohnort:</td> <td><input name="wohnort" size="20" type="text"></td> </tr> <tr> <td>PLZ:</td> <td><input name="PLZ" size="20" type="text"></td> </tr> <tr> <td>Straße und Hausnummer:</td> <td><input name="strundhnr" size="20" type="text"></td> </tr> <tr> <td>Land:</td> <td><input name="land" size="20" type="text"></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td>Benutzername:</td> <td><input name="username" size="20" type="text"></td> </tr> <tr> <td>E-Mail Adresse:</td> <td><input name="email" size="20" type="text"></td> </tr> <tr> <td>Passwort:</td> <td><input name="password" type="password"></td> </tr> <tr> <td>Passwort wiederholen:</td> <td><input name="password2" type="password"></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td>Bestätigen der Nutzungsbedingungen:</td> <td><input name="nutzungsbedingungen" type="checkbox"></td> </tr> <tr> <td> <form method="post"> <input name="submit" type="submit" value="Anmelden"></form></td> <td> </td> </tr> </table> </form> <?php }elseif(!isset($_POST['email']) || $_POST['email'] == ""){ echo '<p align="center"> Geben Sie bitte Ihre E-Mail Adresse an! <br /><br /><a href="neu.php">Zurück</a></p>'; }elseif(!isset($_POST['username']) || $_POST['username'] == ""){ echo '<p align="center"> Einen Benutzernamen brauchen wir schon ;-) <br /><br /><a href="neu.php">Zurück</a></p>'; }elseif(!isset($_POST['password']) || $_POST['password'] == "") { echo '<p align="center"> Ein Passwort brauchen wir schon ;-)<br /><br /><a href="neu.php">Zurück</a></p>'; }elseif($_POST['password'] != $_POST['password2']) { echo '<form action="neu.php" method="post">'; echo '<p align="center">Die Passwörter stimmen nicht überein!<br /><br />'; echo '<input type="hidden" name="username" value="'.$_POST['username'].'">'; echo '<input type="submit" name="zurueck" value="Zurück"></p>'; echo '</form>'; }else{ $query = @mysql_query("SELECT user FROM users WHERE user = '".$_POST['username']."'"); $result = @mysql_fetch_array($query); if($_POST['username'] == $result['user']) { echo '<p align="center">Sorry, dieser Benutzername ist leider schon vergeben!<br /><br /><a href="neu.php">Zurück</a></p>'; die; }else{ // seed mit Mikrosekunden $bestaetigung = 'nein'; function make_seed() { list($usec, $sec) = explode(' ', microtime()); return (float) $sec + ((float) $usec * 100000); } mt_srand(make_seed()); $randval = mt_rand(); $username = $_POST['username']; $pass = md5($_POST['password']); $email = $_POST['email']; $activierungscode = $randval; $best = $_POST['$bestaetigung']; $query = "INSERT INTO users(user,pass,email,activierungscode,best) VALUES('$username', '$pass', '$email', '$randval', '$bestaetigung')"; if(mysql_query($query)){ echo '<p align="center">Der neue Benutzer wurde erfolgreich angelegt!<br /><br /><a href="sichere_seite.php">Zur Admin- Seite</a></p>'; //E-Mail mit Bestätigungscode // mehrere Empfänger $empfaenger = $_POST['email']; // beachten Sie das Komma // Betreff $betreff = 'Registrierung auf PcundSoftware.de'; // Nachricht $nachricht = ' <html> <head> <title>Registrierung auf PcundsSoftware.de</title> </head> <body> Hallo,<br><br> um Ihre Registrierung zu bestätigen klicken Sie bitte auf diesen Link: <br><br> <a herf="http://www.pcundsoftware.de/neu.php?username=$user&email=$email&activierungscode=$activierungscode" targert="blank">http://www.pcundsoftware.de/neu.php?user=$username&email=$email1&activierungscode=$activierungscode</a><br><br> <br><br> Achtung: Dies ist eine Automatisch erstellte E-Mail. Bitte versuchen sie nicht über diese E-Mail eine Frage oder dergleichen zu stellen. <br><br> Schreiben Sie bitte dafür eine E-mail an <mailto: service@pcundsoftware.de>. <br><br> Vielen Dank für Ihr Verständnis! <br><br> <br><br> Ihr Team von PcundSoftware.de <br><br> </body> </html> '; // für HTML-E-Mails muss der 'Content-type'-Header gesetzt werden $header = 'MIME-Version: 1.0' . "\r\n"; $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; // zusätzliche Header $header .= 'From: PcundSoftware.de <webmaster@pcundsoftware.de>' . "\r\n"; // verschicke die E-Mail mail($empfaenger, $betreff, $nachricht, $header); }else{ echo '<p align="center"> Beim Anlegen des neuen Benutzers trat leider ein Fehler auf!<br /><br /><a href="neu.php">Zurück</a></p>'; } } } ?> </body> </html>
Beitrag zuletzt geändert: 8.9.2009 12:09:06 von pcundsoftware -
Wieso hast du eigentlich so eine verdammt doppeldeutige Abfrage?
Der Fehler mit deinem Aktivierungscode ist einfach...
in der GET Anweisung fragst du nach dem Namen der PHP Variable $activierungscode und nicht nach der GET Variable activierungscode.
Das dann deine Abfrage nie Wahr auswertet sollte logisch sein ;)
Hier mal das Teilstück in gestrafter Form.
$name1 = $_GET['username']; $mail1 = $_GET['email']; if (isset($_GET['activierungscode']) && strlen($_GET['activierungscode']) > 0 ) { $queryString = "UPDATE `users` SET `best` = 'ja' WHERE `activierungscode` = '".$active."'"; $result = mysql_query($queryString); }
//e: myhead hat sich vorgedrängelt ^^"
Beitrag zuletzt geändert: 8.9.2009 12:25:19 von evil-devil -
Danke, werde es mal ausprobieren.
Der link stimmt aber dann schon
<a herf="http://www.pcundsoftware.de/neu.php?username=$user&email=$email&activierungscode=$activierungscode" targert="blank">http://www.pcundsoftware.de/neu.php?user=$username&email=$email1&activierungscode=$activierungscode</a>
wenn noch Änderungen zu machen sind bitte das schreiben -
Ja, der Link ist ok. Auch wenn mir stilistisch ein Würgreflex bei hochkommt.
-
es funktioniert aber nicht. wenn ich den link anklicke wird der wert in der db trotzdem nicht aktualisiert.
Ist das normal, dass wen man auf den link klickt und dann kommt die webseite kann nicht angezeigt werden?
Wenns so nicht funktionieren will, kann man dass auch anders machen und wenn wie?
Der Code sieht jetzt so aus:
<?php session_start (); require ("connect.inc.php"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <title>PcundSoftware.de - Registrierung</title> </head> <body> <?php $name1 = $_GET['username']; $mail1 = $_GET['email']; if (isset($_GET['activierungscode']) && strlen($_GET['activierungscode']) > 0 ) { $queryString = "UPDATE `users` SET `best` = 'ja' WHERE `activierungscode` = '".$active."'"; $result = mysql_query($queryString); } ?> <?php if (!isset($_POST['submit'])) { ?> <form method="post"> <table style="width: 100%"> <tr> <td>Name:</td> <td><input name="name" size="20" type="text"></td> </tr> <tr> <td>Vorname:</td> <td><input name="vorname" size="20" type="text"></td> </tr> <tr> <td>Wohnort:</td> <td><input name="wohnort" size="20" type="text"></td> </tr> <tr> <td>PLZ:</td> <td><input name="PLZ" size="20" type="text"></td> </tr> <tr> <td>Straße und Hausnummer:</td> <td><input name="strundhnr" size="20" type="text"></td> </tr> <tr> <td>Land:</td> <td><input name="land" size="20" type="text"></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td>Benutzername:</td> <td><input name="username" size="20" type="text"></td> </tr> <tr> <td>E-Mail Adresse:</td> <td><input name="email" size="20" type="text"></td> </tr> <tr> <td>Passwort:</td> <td><input name="password" type="password"></td> </tr> <tr> <td>Passwort wiederholen:</td> <td><input name="password2" type="password"></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td>Bestätigen der Nutzungsbedingungen:</td> <td><input name="nutzungsbedingungen" type="checkbox"></td> </tr> <tr> <td> <form method="post"> <input name="submit" type="submit" value="Anmelden"></form></td> <td> </td> </tr> </table> </form> <?php }elseif(!isset($_POST['email']) || $_POST['email'] == ""){ echo '<p align="center"> Geben Sie bitte Ihre E-Mail Adresse an! <br /><br /><a href="neu.php">Zurück</a></p>'; }elseif(!isset($_POST['username']) || $_POST['username'] == ""){ echo '<p align="center"> Einen Benutzernamen brauchen wir schon ;-) <br /><br /><a href="neu.php">Zurück</a></p>'; }elseif(!isset($_POST['password']) || $_POST['password'] == "") { echo '<p align="center"> Ein Passwort brauchen wir schon ;-)<br /><br /><a href="neu.php">Zurück</a></p>'; }elseif($_POST['password'] != $_POST['password2']) { echo '<form action="neu.php" method="post">'; echo '<p align="center">Die Passwörter stimmen nicht überein!<br /><br />'; echo '<input type="hidden" name="username" value="'.$_POST['username'].'">'; echo '<input type="submit" name="zurueck" value="Zurück"></p>'; echo '</form>'; }else{ $query = @mysql_query("SELECT user FROM users WHERE user = '".$_POST['username']."'"); $result = @mysql_fetch_array($query); if($_POST['username'] == $result['user']) { echo '<p align="center">Sorry, dieser Benutzername ist leider schon vergeben!<br /><br /><a href="neu.php">Zurück</a></p>'; die; }else{ // seed mit Mikrosekunden $bestaetigung = 'nein'; function make_seed() { list($usec, $sec) = explode(' ', microtime()); return (float) $sec + ((float) $usec * 100000); } mt_srand(make_seed()); $randval = mt_rand(); $username = $_POST['username']; $pass = md5($_POST['password']); $email = $_POST['email']; $activierungscode = $randval; $best = $_POST['$bestaetigung']; $query = "INSERT INTO users(user,pass,email,activierungscode,best) VALUES('$username', '$pass', '$email', '$randval', '$bestaetigung')"; if(mysql_query($query)){ echo '<p align="center">Der neue Benutzer wurde erfolgreich angelegt!<br /><br /><a href="sichere_seite.php">Zur Admin- Seite</a></p>'; //E-Mail mit Bestätigungscode // mehrere Empfänger $empfaenger = $_POST['email']; // beachten Sie das Komma // Betreff $betreff = 'Registrierung auf PcundSoftware.de'; // Nachricht $nachricht = ' <html> <head> <title>Registrierung auf PcundsSoftware.de</title> </head> <body> Hallo,<br><br> um Ihre Registrierung zu bestätigen klicken Sie bitte auf diesen Link: <br><br> <a herf="http://www.pcundsoftware.de/neu.php?username=$user&email=$email&activierungscode=$activierungscode" targert="blank">http://www.pcundsoftware.de/neu.php?user=$username&email=$email1&activierungscode=$activierungscode</a><br><br> <br><br> Achtung: Dies ist eine Automatisch erstellte E-Mail. Bitte versuchen sie nicht über diese E-Mail eine Frage oder dergleichen zu stellen. <br><br> Schreiben Sie bitte dafür eine E-mail an <mailto: service@pcundsoftware.de>. <br><br> Vielen Dank für Ihr Verständnis! <br><br> <br><br> Ihr Team von PcundSoftware.de <br><br> </body> </html> '; // für HTML-E-Mails muss der 'Content-type'-Header gesetzt werden $header = 'MIME-Version: 1.0' . "\r\n"; $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; // zusätzliche Header $header .= 'From: PcundSoftware.de <webmaster@pcundsoftware.de>' . "\r\n"; // verschicke die E-Mail mail($empfaenger, $betreff, $nachricht, $header); }else{ echo '<p align="center"> Beim Anlegen des neuen Benutzers trat leider ein Fehler auf!<br /><br /><a href="neu.php">Zurück</a></p>'; } } } ?> </body> </html>
Beitrag zuletzt geändert: 8.9.2009 14:35:32 von pcundsoftware -
pcundsoftware schrieb:
Ist das normal, dass wen man auf den link klickt und dann kommt die webseite kann nicht angezeigt werden?
Ja, weil dann der Code nicht ausgeführt wurde. Nur wenn du die Seite siehst, dann kannst du dir sicher sein das dein PHP Code zumindest ausgeführt wurde. Welche Wege er genommen hat ist einem mitunter trotz allem nicht klar ;) -
Ist sonst noch ein Fehler drin oder sollte man das ganze anders lösen und wenn wie?
oder wie würdest du das machen?
Beitrag zuletzt geändert: 8.9.2009 15:35:46 von pcundsoftware -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage