Bestätigungs e-mail
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
absender
adresse
anlegen
benutzer
benutzername
brauchen
code
datei
design
email
fehler
http
index
land
login
message
nachricht
url
vorname
wohnort
-
Hallo,
nach längerem probieren und mit Hilfe des Artikels "Datenbank erstellen" hab ich es es geschafft, ein Loginsystem zu erstellen (in php). Nun möchte ich aber, dass der Nutzer nach der Registrierung eine Bestätigungse-mail bekommt, wo er dann auf einen link klicken muss, damit sein Account registriert wird. Wie kann ich das realisieren?
Schöne Grüße
pcundsoftware -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
hier ein kontaktformular:
<form action="index.php?action=send_mail_cf" method="post"> <input type="hidden" name="action" value="send_mail_cf" /> <table width="90%"> <tr> <td colspan="2">Nutzen Sie bitte dieses Formular, um uns eine Nachricht zu schicken!</td> </tr> <tr> <td>Vorname:</td> <td><input type="text" name="firstname" /> </td> <tr> <td>Nachname:</td> <td><input type="text" name="lastname" /></td> </tr> <tr> <td>E-Mail-Adresse:</td> <td><input type="text" name="email" /></td> </tr> <tr> <td valign="top">Nachricht:</td> <td><textarea class="tarea" rows="5" name="message"></textarea></td> </tr> <tr> <td valign="top">Spam-Schutz</td> <td><img src="addons/securimage/securimage_show.php?sid={md5_time}"><br /> <input type="text" name="code" /></td> </tr> <tr> <td colspan="2"><center> <input type="submit" value="Senden" class="button" /> </center></td> </tr> </table> </form>
und hier der php-code:
<? function send_mail_cf() { $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; $email = $_POST['email']; $message = $_POST['message']; /* Empfnger */ $empfaenger = array("{empfänger}"); /* Absender */ $absender = $firstname. " ". $lastname. ' <'. $email. '>'; /* Rueckantwort */ $reply = $firstname. " ". $lastname. ' <'. $email. '>'; /* Betreff */ $subject = $firstname. " ". $lastname. ' - Nachricht von Website dynamic-designs'; /* Nachricht */ $message = '<html> <head> <title>'. $firstname. " ". $lastname. ' - Nachricht von Website dynamic-designs</title> <link rel="stylesheet" type="text/css" href="http://dynamicdesigns.dy.funpic.de/templates/default/css/style.css" /> </head> <body> <table width="400px" border="0" cellspacing="0" cellpadding="0"> <tr> <td colspan="2"><h2>'. $firstname. " ". $lastname. ' - Nachricht von Website dynamic-designs</h2></td> </tr> <tr> <td width="200">Vorname:</td> <td>'. $firstname. '</td> </tr> <tr> <td width="200">Nachname:</td> <td>'. $lastname. '</td> </tr> <tr> <td width="200">E-Mail-Adresse:</td> <td>'. $email. '</td> </tr> <tr> <td width="200">Nachricht:</td> <td>'. $message. '</td> </tr> </table> </body> </html> '; /* Baut Header der Mail zusammen */ $headers .= 'From:' . $absender . "\n"; $headers .= 'Reply-To:' . $reply . "\n"; $headers .= 'X-Mailer: PHP/' . phpversion() . "\n"; $headers .= 'X-Sender-IP: ' . $REMOTE_ADDR . "\n"; $headers .= "Content-type: text/html\n"; // Extrahiere Emailadressen $empfaengerString = implode(',', $empfaenger); /* Verschicken der Mail */ mail($empfaengerString, $subject, $message, $headers); } ?>
must nur statt "{empfänger}" die mailadresse des empfängers angeben!
Beitrag zuletzt geändert: 3.9.2009 10:57:28 von dynamic-designs -
ja aber die email adresse des empfängers kenne ich ja nicht. In der Datenbank habe ich nur eine spalte email, wo die adresse beim registrieren eingetragen wird.
-
in diesem fall kannst du auch einfach deine mailadresse als absender angeben und als empfänger die vom user angegebene nehmen ($email = $_POST['email'];)
also der code wäre dann so:
<? function send_mail_cf() { $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; = $_POST['email']; $message = $_POST['message']; /* Empfnger */ $empfaenger = array($firstname. " ". $lastname. " <". $email. ">"); /* Absender */ $absender = "{empfänger}"; /* Rueckantwort */ $reply = $firstname. " ". $lastname. ' <'. $email. '>'; /* Betreff */ $subject = $firstname. " ". $lastname. ' - Nachricht von Website dynamic-designs'; /* Nachricht */ $message = '<html> <head> <title>'. $firstname. " ". $lastname. ' - Nachricht von Website dynamic-designs</title> <link rel="stylesheet" type="text/css" href="http://dynamicdesigns.dy.funpic.de/templates/default/css/style.css" /> </head> <body> <table width="400px" border="0" cellspacing="0" cellpadding="0"> <tr> <td colspan="2"><h2>'. $firstname. " ". $lastname. ' - Nachricht von Website dynamic-designs</h2></td> </tr> <tr> <td width="200">Vorname:</td> <td>'. $firstname. '</td> </tr> <tr> <td width="200">Nachname:</td> <td>'. $lastname. '</td> </tr> <tr> <td width="200">E-Mail-Adresse:</td> <td>'. $email. '</td> </tr> <tr> <td width="200">Nachricht:</td> <td>'. $message. '</td> </tr> </table> </body> </html> '; /* Baut Header der Mail zusammen */ $headers .= 'From:' . $absender . "\n"; $headers .= 'Reply-To:' . $reply . "\n"; $headers .= 'X-Mailer: PHP/' . phpversion() . "\n"; $headers .= 'X-Sender-IP: ' . $REMOTE_ADDR . "\n"; $headers .= "Content-type: text/html\n"; // Extrahiere Emailadressen $empfaengerString = implode(',', $empfaenger); /* Verschicken der Mail */ mail($empfaengerString, $subject, $message, $headers); } ?>
-
Schick uns mal dein PHP Registrierungsformular, oder lade es irgendwo hoch.
Gruß Markus.
-
genau das ist das Problem: Das funktioniert nicht richtig und ich hätte gerne neben der Bestätigungs E-Mail auch noch eine Funktion "Passwort vergessen", die aber nicht in der Anleitung steht.
Außerdem müsste man noch den Vor- und nachnamen einbauen
Da ich nicht in php so gut bin hoffe ich auf gute Ideen
vll wisst ihr ein besseres. Hier erstmal meins: (komplette anleitung gibts hier http://www.webmaster-eye.de/Datenbankbasiertes-LogIn-Skript.232.artikel.html
Erstellt habe ich 6 dateien (zahlen sind nur im editor)
connect.inc.php -> Datei mit Verbindungsdaten zum MySQL-Server
index.php -> Die Seite mit dem Formular zum Anmelden
logout.php -> Die Seite, die nach dem Logout angezeigt wird und die die Session zerstört
neu.php -> Die Seite, in der ein neuer Benutzer angelegt wird
sichere_seite.php -> Die Seite, die nach erfolgreichem LogIn angezeigt wird
style.css -> Die Seite, die das Aussehen aller php-Dateien bestimmt
in der Connect inc stehen natürlich meine Daten (das funktioniert)
1. connect.inc.php
1. <?php 2. $dbHost = "localhost"; 3. $dbUser = "root"; 4. $dbPass = ""; 5. $dbName = "login"; 6. $connect = @mysql_connect($dbHost, $dbUser, $dbPass); 7. $selectDB = @mysql_select_db($dbName, $connect); 8. ?>
2.index.php
1. <?php 2. session_start(); 3. require("connect.inc.php"); 4. ?> 5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 6. <html> 7. <head> 8. <title>LogIn zum Adminbereich</title> 9. <link rel="stylesheet" type="text/css" href="style.css"> 10. </head> 11. <body> 12. <?php if(!isset($_POST['submit'])) { ?> 13. <form action="<?php $PHP_SELF ?>" method="post"> 14. <table width="400" bgcolor="#000000" border="0" 15. cellpadding="5" cellspacing="1" align="center"> 16. <tr> 17. <td bgcolor="#e7e7e7" align="center" colspan="2"> 18. <b>Bitte erst anmelden</b> 19. </td> 20. </tr> 21. <tr> 22. <td width="170" bgcolor="#e7e7e7">Benutzername</td> 23. <td width="230" bgcolor="#ffffff"> 24. <input type="text" name="username" size="20" class="input" 25. <?php if($_POST['username'] != 26. "" ) {echo ' value="'.$_POST['username'].'"';} ?>></td> 27. </tr> 28. <tr> 29. <td width="170" bgcolor="#e7e7e7">Passwort</td> 30. <td width="230" bgcolor="#ffffff"> 31. <input type="password" name="password" size="20" class="input"></td> 32. </tr> 33. <tr> 34. <td bgcolor="#e7e7e7" align="center" colspan="2"> 35. <input type="submit" name="submit" value="Anmelden" class="button"> 36. </td> 37. </tr> 38. </table> 39. </form> 40. <?php 41. }elseif(!$_POST['username'] || $_POST['username'] == "") { 42. echo '<p align="center">Einen Benutzernamen brauchen wir schon ;-)<br /><br /> 43. <a href="index.php">Zurück</a></p>'; 44. }elseif(!$_POST['password'] || $_POST['password'] == "") { 45. echo '<form action="index.php" method="post">'; 46. echo '<p align="center">Ein Passwort brauchen wir schon ;-)<br /><br />'; 47. echo '<input type="hidden" name="username" value="'.$_POST['username'].'">'; 48. echo '<input type="submit" name="zurueck" value="Zurück">'; 49. echo '</p>'; 50. echo '</form>'; 51. }else{ 52. $password = md5($_POST['password']); 53. $query = @mysql_query("SELECT user, pass FROM users WHERE user = '".$_POST['username']."'"); 54. $result = @mysql_fetch_array($query) or die('<p align="center"> 55. Sorry, aber dieser Benutzername existiert nicht!<br /><a 56. href="index.php">Zurück</a></p>'); 57. if($password != $result['pass']){ 58. echo '<form action="index.php" method="post">'; 59. echo '<p align="center">Sorry, aber dieses Passwort ist falsch!<br /><br />'; 60. echo '<input type="hidden" name="username" value="'.$_POST['username'].'">'; 61. echo '<input type="submit" name="zurueck" value="Zurück"></p>'; 62. echo '</form>'; 63. die; 64. }else{ 65. $user = $result['user']; 66. session_register('user'); 67. echo '<p align="center">LogIn erfolgreich! :-)<br /><br /> 68. <a href="sichere_seite.php">Weiter</a></p>'; 69. } 70. } 71. ?> 72. </body> 73. </html>
3.sichere_seite.php
1. <?php 2. session_start(); 3. if(!session_is_registered('user') || $_SESSION['user'] == "") { 4. header("location:index.php"); 5. die; 6. } 7. ?> 8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 9. <html> 10. <head> 11. <title>Sichere Seite</title> 12. <link rel="stylesheet" type="text/css" href="style.css"> 13. </head> 14. <body> 15. <table width="400" bgcolor="#000000" border="0" cellpadding="5" 16. cellspacing="1" align="center"> 17. <tr> 18. <td bgcolor="#e7e7e7" align="center"> 19. <?php echo "<b>Hallo ".$_SESSION['user']."</b>"; ?> 20. <br /><br /> 21. <b>Hier ist der sichere Inhalt!</b> 22. <br /><br /> 23. <a href="neu.php">Neuen Benutzer anlegen</a> 24. <br /><br /> 25. <a href="logout.php">LogOut</a> 26. </td> 27. </tr> 28. </table> 29. </body> 30. </html>
4.logout.php
1. <?php 2. session_start(); 3. ?> 4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 5. <html> 6. <head> 7. <title>LogOut</title> 8. <link rel="stylesheet" type="text/css" href="style.css"> 9. </head> 10. <body> 11. <?php 12. $user = $_SESSION['user']; 13. if(session_destroy()) { 14. echo '<p align="center">Bye bye '.$user.'<br /><br /> 15. Du hast Dich erfolgreich abgemeldet.<br /><br /><a href="index.php">Zur 16. Anmeldung</a></p>'; 17. }else{ 18. echo '<p align="center">Beim Abmelden trat leider ein Fehler auf! 19. <br /><br />Bitte schliesse Dein Browserfenster.'; 20. } 21. ?> 22. </body> 23. </html>
5. neu.php
1. <?php 2. session_start(); 3. if(!session_is_registered('user') || $_SESSION['user'] == "") { 4. header("location:index.php"); 5. die(); 6. } 7. require("connect.inc.php"); 8. ?> 9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 10. <html> 11. <head> 12. <title>Neuen Benutzer anlegen</title> 13. <link rel="stylesheet" type="text/css" href="style.css"> 14. </head> 15. <body> 16. <?php if(!isset($_POST['submit'])) { ?> 17. <form action="<?php $PHP_SELF ?>" method="post"> 18. <table width="400" bgcolor="#000000" border="0" cellpadding="5" 19. cellspacing="1" align="center"> 20. <tr> 21. <td bgcolor="#e7e7e7" align="center" colspan="2"> 22. <b>Neuen Benutzer anlegen</b> 23. </td> 24. </tr> 25. <tr> 26. <td width="170" bgcolor="#e7e7e7">Benutzername</td> 27. <td width="230" bgcolor="#ffffff"><input type="text" name="username" class="input" 28. <?php if($_POST['username'] != "") { echo 29. ' value="'.$_POST['username'].'"'; } ?> size="20"></td> 30. </tr> 31. <tr> 32. <td width="170" bgcolor="#e7e7e7">Passwort</td> 33. <td width="230" bgcolor="#ffffff"> 34. <input type="password" name="password" size="20" class="input"></td> 35. </tr> 36. <tr> 37. <td width="170" bgcolor="#e7e7e7">Passwort wiederholen</td> 38. <td width="230" bgcolor="#ffffff"> 39. <input type="password" name="password2" size="20" class="input"></td> 40. </tr> 41. <tr> 42. <td bgcolor="#e7e7e7" align="center" colspan="2"> 43. <input type="submit" name="submit" value="Benutzer anlegen" class="button"> 44. </td> 45. </tr> 46. <tr> 47. <td bgcolor="#e7e7e7" align="center" colspan="2"> 48. <a href="sichere_seite.php">Zurück zur Admin-Seite</a> 49. </td> 50. </tr> 51. </table> 52. </form> 53. <?php 54. }elseif(!isset($_POST['username']) || $_POST['username'] == ""){ 55. echo '<p align="center"> 56. Einen Benutzernamen brauchen wir schon ;-) 57. <br /><br /><a href="neu.php">Zurück</a></p>'; 58. }elseif(!isset($_POST['password']) || $_POST['password'] == "") { 59. echo '<p align="center"> 60. Ein Passwort brauchen wir schon ;-)<br /><br /><a href="neu.php">Zurück</a></p>'; 61. }elseif($_POST['password'] != $_POST['password2']) { 62. echo '<form action="neu.php" method="post">'; 63. echo '<p align="center">Die Passwörter stimmen nicht überein!<br /><br />'; 64. echo '<input type="hidden" name="username" value="'.$_POST['username'].'">'; 65. echo '<input type="submit" name="zurueck" value="Zurück"></p>'; 66. echo '</form>'; 67. }else{ 68. $query = @mysql_query("SELECT user FROM users WHERE user = '".$_POST['username']."'"); 69. $result = @mysql_fetch_array($query); 70. if($_POST['username'] == $result['user']) { 71. echo '<p align="center">Sorry, dieser Benutzername ist leider schon vergeben!<br /><br /><a href="neu.php">Zurück</a></p>'; 72. die; 73. }else{ 74. $username = $_POST['username']; 75. $pass = md5($_POST['password']); 76. $query = "INSERT INTO users(user,pass) VALUES('$username', '$pass')"; 77. if(mysql_query($query)){ 78. echo '<p align="center">Der neue Benutzer wurde erfolgreich angelegt!<br /><br /><a href="sichere_seite.php">Zur Admin- 79. Seite</a></p>'; 80. }else{ 81. echo '<p align="center"> 82. Beim Anlegen des neuen Benutzers trat leider ein Fehler auf!<br /><br /><a 83. href="neu.php">Zurück</a></p>'; 84. } 85. } 86. } 87. ?> 88. </body> 89. </html>
Schöe Grüße,
pcundsoftware
Beitrag zuletzt geändert: 3.9.2009 14:58:41 von pcundsoftware -
So, ich werde dir -obwohl ich heute meinen sozialen Tag habe- nicht deinen ganzen Code umschreiben. Ich gebe dir viel lieber ein paar Denkanstöße:
- Du fügst zu deiner User-Tabelle eine zusätzliche Spalte "aktiviert" ein. Diese setzt du bei der Anmeldung automatisch auf False( oder 0).
- Du legst eine neue Tabelle mit folgenden Spalten an: ID | User ID | Aktivierungscode | Timestamp
Die Id ist einfach nur der Index deiner Tabelle
Die User Id ist deine Referenz auf den entsprechenden User
Der Aktivierungscode ist eine _zufällige_ etwa 20-stellige Zeichenkette
Der Timestamp ist das Datum ab dem die Aktivierung ungültig ist.
-Dann erstellst du dir eine PHP-Datei die das folgende macht:
Der PHP-Datei wird der Aktivierungscode per GET übermittelt. Du musst also nur anhand des Aktivierungscodes abfragen ob die Aktivierungszeit ausgelaufen ist, und wenn das nicht der Fall ist musst du bei dem entsprechendem User das aktiviert auf True (oder 1) setzen.
- Deine neu.php muss beim Anlegen eines neuen Users nun noch eine Mail an die vom User angegebene Emailadresse schicken und einen Link zu deiner Aktivierungs-PHP enthalten. Der PHP musst du noch den Aktivierungscode als GET wert übermitteln. Der Link in der Email sieht dann also etwa so aus: http://www.example.com/aktivieren.php?code=DiEsIsTeInAkTiViErUnGsCoDe
- Deine login.php musst du entsprechend umändern, sodass man sich nur anmelden darf wenn man bereits aktiviert ist.
Aus deinen Posts entnehme ich aber auch dass du noch nicht ganz fit im Umgang mit PHP bist. Vielleicht solltest du dich erst einmal langsam einarbeiten: http://schattenbaum.net/php/
lg Ketchupfleck -
ketchupfleck schrieb:
Der PHP-Datei wird der Aktivierungscode per GET übermittelt. Du musst also nur anhand des Aktivierungscodes abfragen ob die Aktivierungszeit ausgelaufen ist, und wenn das nicht der Fall ist musst du bei dem entsprechendem User das aktiviert auf True (oder 1) setzen.
- Deine neu.php muss beim Anlegen eines neuen Users nun noch eine Mail an die vom User angegebene Emailadresse schicken und einen Link zu deiner Aktivierungs-PHP enthalten. Der PHP musst du noch den Aktivierungscode als GET wert übermitteln. Der Link in der Email sieht dann also etwa so aus: http://www.example.com/aktivieren.php?code=DiEsIsTeInAkTiViErUnGsCoDe
- Deine login.php musst du entsprechend umändern, sodass man sich nur anmelden darf wenn man bereits aktiviert ist.
Aus deinen Posts entnehme ich aber auch dass du noch nicht ganz fit im Umgang mit PHP bist. Vielleicht solltest du dich erst einmal langsam einarbeiten: http://schattenbaum.net/php/
lg Ketchupfleck
Die Mail schreibst du per mailto Funktion
In der (html-mail) schreibst du danne inen Link der Form:
http://deine-Seiten-url.lima-city.de/register.php?name=$name&mail=$mail&aktivierungscode=$aktivierungscode
Die Variable $name enthält den zuvor eingegebenen NAmen ($_POST["name"] hätte ich gesagt eignet sich perfekt um den dann einzutragen) $mail die zuvor eingefügte Mail und $aktivierungscode einen zufälligen Code. (Jeweils prüfen, ob sie zulässige Werte enthalten)
Du legst dann in deiner Datenbank eine neue Zeile per Funktion an, in der ID, Name, Mail, Passwort, Aktivirungscode, und Best als Spalten stehen.
In Name, Mail und Passwort speicherst du die angegebenen Dinge. Im Aktivierungscode die Variable $aktivierungscode, damit du dich nicht einmal verschreibst und es zwei evrschiedene gibt.
Der User bekommt dann die Mail und klickt auf den Link.
Dann machst du :
$name1 = $_GET["name"]
$mail1 = $_GET["mail"]
$aktivierungscode1= $_GET["aktivierungscode"]
Du lässt prüfen, ob sie nicht leer sind.
Anschließend machts du z.B. Folgendes:
if ( $name1 != "" and $mail1 != "" and $aktivierungscode1 != "")
{
$aendern = "UPDATE register Set Best = 'true'
WHERE Name, Mail, Aktivierungscode LIKE "$name1'", "$mail1", "$aktivierungscode1" ;
$update = mysql_query($aendern);
}
Anschließend müsstest du nur noch beim Login Prüfen, ob BEST="true" ist.
-
Danke für die Tipps. Aber trotz alldem möchte ich euch bitten mich auch bei der programmiertechnischen Umsetztung zu unterstützen
Schöne Grüße
pcundsoftware -
pcundsoftware schrieb:
Danke für die Tipps. Aber trotz alldem möchte ich euch bitten mich auch bei der programmiertechnischen Umsetztung zu unterstützen
Schöne Grüße
pcundsoftware
Ich werde dir hier nicht einfach deinen ganzen quelltext so umschreiben,d ass er dir passt!
Das ist meiner Meinung nach eine heiden arbeit, sich bei dir einzuarbeiten und es dann noch so umzuschreiben, dass alles funktioniert. Wo kann ich mir die seite denn mal ansehen, wie sie zur Zeit aussieht? -
die Seite kannst du hier sehen: http://www.pcundsoftware.de/Login/index.php (ich hab aber was verstellt deshalb gehts nicht)
-
Das dürfte der Code für die neu.php sein.
Könnte vielleicht mal jemand drüberschauen, ob ichnen Fehler drin habe, konnte auch den fehler nicht finden, warum die Seite bei ihm nicht funktioniert.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Neuen Benutzer anlegen</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <?php $name1 = $_GET['name'] $mail1 = $_GET['mail'] $aktivierungscode1 = $_GET['activierungscode $hello = "yes"; if ( $name1 != "" and $mail1 != "" and $aktivierungscode1 != "") { $aendern = "UPDATE user Set best = '$hello' WHERE name, aktivierungscode, mail LIKE '$name1', '$aktivierungscode1', '$mail1'"; $update = mysql_query($aendern); ?> <?php if(!isset($_POST['submit'])) { [u][b]<form action="<?php $PHP_SELF ?>" method="post"> <table 19="" align="center" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" width="400"> <tbody> <tr> <td colspan="2" align="center" bgcolor="#e7e7e7"> <b>Neuen Benutzer anlegen</b> </td> </tr> <tr> <td bgcolor="#e7e7e7" width="170">Benutzername</td> <td bgcolor="#ffffff" width="230"><input name="username" class="input" 28="" type="text" <?php if($_POST['username'] != ""){echo ' value="'.$_POST['username'].'"'; }?> size="20">></td> </tr> <tr> <td bgcolor="#e7e7e7" width="170">Passwort</td> <td bgcolor="#ffffff" width="230"> <input name="password" size="20" class="input" type="password"></td> </tr> <tr> <td bgcolor="#e7e7e7" width="170">Passwort wiederholen</td> <td bgcolor="#ffffff" width="230"> <input name="password2" size="20" class="input" type="password"></td> </tr> <tr> <td bgcolor="#e7e7e7" width="170">E-Mailadresse</td> <td bgcolor="#ffffff" width="230"> <input name="mail" size="20" class="input" type="password"></td> </tr> <tr> <td bgcolor="#e7e7e7" width="170">E-Mailadresse wiederholen</td> <td bgcolor="#ffffff" width="230"> <input name="mail2" size="20" class="input" type="password"></td> </tr> <tr> <td colspan="2" align="center" bgcolor="#e7e7e7"> <input name="submit" value="Benutzer anlegen" class="button" type="submit"></td> </tr> <tr> <td colspan="2" align="center" bgcolor="#e7e7e7"> <a href="sichere_seite.php">Zurück zur Admin-Seite</a> </td> . </tr> </tbody> </table> </form>[/b][/u] <?php 54. }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>'; }elseif(!isset($_POST['mail']) || $_POST['mail'] == "") { echo '<p align="center"> Eine Mailadresse brauchen wir schon ;-)<br /><br /><a href="neu.php">Zurück</a></p>'; }elseif($_POST['mail'] != $_POST['mail2']) { echo '<form action="neu.php" method="post">'; echo '<p align="center">Die E-mailadressen 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">Dieser Benutzername ist leider schon vergeben!<br /><br /><a href="neu.php">Zurück</a></p>'; die; }else{ $username = $_POST['username']; $pass = md5($_POST['password']); $mail = $_POST['mail'] srand(microtime()*1000000); $aktivierungscode = rand(1,1000); $query = "INSERT INTO users(user, pass, mail, aktivierungscode) VALUES('$username', '$pass', '$mail', '$aktivierungscode')"; if(mysql_query($query)){ echo '<p align="center">Der neue Benutzer wurde erfolgreich angelegt und ihm wurde eine Bestätigungsmail an die angegebene Adresse zugesandt!<br /><br /><a href="sichere_seite.php">Zur Admin- Seite</a></p>'; $email = "Sehr geehrter Besucher der Seite http://www.pcundsoftware.de/,<br><br> Sie erhalten diese Nachricht, da Sie auf der oben genannten Seite registriert wurden. Sollten Sie dies nicht getan haben, so löschen Sie diese Mail einfach.<br> Um Ihre Registrierung zu bestätigen, klicken Sie bitte auf den folgenden Link: <br><br> <a href=\"http://www.pcundsoftware.de/Login/neu.php?name=$username&mail=$mail&aktivierungscode=$aktivierungscode\" target=\"_blank\">http://www.pcundsoftware.de/Login/neu.php?name=$username&mail=$mail&aktivierungscode=$aktivierungscode</a> <br><br> Besuchen Sie unsere Seite bald wieder. <br><br> Mit freundlichen Grüßen,<br><br> Das Team von PC und Software .de"; $absender = "PCundSOFTWARE"; $amail = "noreply@pcundsoftware.de"; $extra = "From: $absender <$amail>\n"; $extra .= "Content-Type: text/html\n Content-Transfer-Encoding: 8bit\n"; mail($mail, "Registrierung auf pcundsoftware.de - Bestätigung", $email, $extra); }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>
Der unterstrichene Teil ganz oben macht den fehelr aus. Das ganze befindet sich innerhal eines php TAgs und muss deshalb doch jeweils mit echo angeziegt werden, wenn ich mich nicht täusche. Das änderst du aber bitte selbst.
Wenn du diesen COde verwendest, musst du noch etwas an deiner "user" Tabelle ändern:
Füge eine Text-Spalte mit Titel "mail", eine mit "aktivierungscode" und eine mit "best" hinzu.
Dann musst du beim Login zusätzlich noch eine if-Funktion einbauen.
In etwa so:
$abfragex = "SELECT best FROM login WHERE name LIKE '$username' "; $ergebnisx = mysql_query($abfragex) if ($ergebnis = "yes") { Hier dann den Quellcode mit dem Login ... }
Dann wird vor dem Login geprüft, ob der Benutzer aktiviert ist (best = "bestätigt" mit "yes" behaftet).
PS: Ich glaube im Code ist ein Fehler, funzt bei mir nicht.
Beitrag zuletzt geändert: 3.9.2009 23:26:16 von project-physik-x -
Vielen Dank erstmal, ich werd ihn ausprobieren.
-
Tu' dir einen Gefallen und benutze den Code nicht. Der Code enthält mehrere Syntaxfehler und auch einige Sicherheitslücken (Stichwort: SQL-Injection).
Trotzdem, Ich habe dir in meinem letzen Post fast eine Schritt-für-Schritt-Anleitung gegeben, was du alles tun musst. Wenn du es nicht umsetzen kannst, dann solltest du PHP lernen. Die bekanntesten Tutorials sind:
http://schattenbaum.net/php/
http://tut.php-quake.net/de/
Du willst nämlich sicherlich noch ein paar mehr Features auf deiner Seite haben, und wenn man nur auf fremden Code vertraut handelt man sich schnell Sicherheitslücken und Backdoors ein. PHP ist nun wirklich nicht so schwer und in verhältnissmäßig kurzer Zeit wirst du sicher schon einige Erfolge erzielen.
lg Ketchupfleck -
Ich habe jetzt die neu.php passend geändert, dass sie alle für mich wichtigen Iformationen abfrägt und in die Datenbank einträgt.
In der Datenbank Tabelle users habe ich auch die Spalte aktivierungscode und best hinzugefügt.
Dann habe ich auch noch einen Zufallsgenerator für den Code in der Aktivierungsmail erstellt:
Wie soll ich aber das ganze jetzt einbinden, dass der Nutzer nach der Registrierung eine Mail bekommt und auf den Link drücken muss um aktiviert zu weden?
neu.php:
<?php session_start(); require("connect.inc.php"); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Neuen Benutzer anlegen</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <?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['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>'; }elseif(!isset($_POST['email']) || $_POST['email'] == ""){ echo '<p align="center"> Bitte geben Sie Ihre E-Mail Adresse an! <br /><br /><a href="neu.php">Zur�ck</a></p>'; }elseif(!isset($_POST['name']) || $_POST['name'] == ""){ echo '<p align="center"> Bitte geben Sie Ihren Namen an! <br /><br /><a href="neu.php">Zur�ck</a></p>'; }elseif(!isset($_POST['vorname']) || $_POST['vorname'] == ""){ echo '<p align="center"> Bitte geben Sie Ihren Vornamen an! <br /><br /><a href="neu.php">Zur�ck</a></p>'; }elseif(!isset($_POST['wohnort']) || $_POST['wohnort'] == ""){ echo '<p align="center"> Bitte geben Sie Ihren Wohnort an! <br /><br /><a href="neu.php">Zur�ck</a></p>'; }elseif(!isset($_POST['PLZ']) || $_POST['PLZ'] == ""){ echo '<p align="center"> Bitte geben Sie Ihre PLZ an! <br /><br /><a href="neu.php">Zur�ck</a></p>'; }elseif(!isset($_POST['strundhnr']) || $_POST['strundhnr'] == ""){ echo '<p align="center"> Bitte geben Sie Ihre Stra�e und Ihre Hausnummer an! <br /><br /><a href="neu.php">Zur�ck</a></p>'; }elseif(!isset($_POST['land']) || $_POST['land'] == ""){ echo '<p align="center"> Bitte geben Sie Ihr Land an! <br /><br /><a href="neu.php">Zur�ck</a></p>'; }elseif(!isset($_POST['nutzungsbedingungen']) || $_POST['nutzungsbedingungen'] == ""){ echo '<p align="center"> Sie m�ssen den Nutzungsbestimmungen zustimmen, damit Sie sich erfolgreich anmelden k�nnen! <br /><br /><a href="neu.php">Zur�ck</a></p>'; }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{ $username = $_POST['username']; $pass = md5($_POST['password']); $email = $_POST['email']; $name = $_POST['name']; $vorname = $_POST['vorname']; $wohnort = $_POST['wohnort']; $plz = $_POST['PLZ']; $strundhausnr = $_POST['strundhnr']; $Land = $_POST['land']; $query = "INSERT INTO users(user,pass,email,name,vorname,wohnort,plz,strundhnr,Land) VALUES('$username', '$pass', '$email' '$name', '$vorname', '$wohnort', '$PLZ', '$strundhnr', '$land',)"; 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>'; }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>
zufallsgenerator.php
<?php echo mt_rand("zufall") . "\n"; ?> <?php $Land = $_POST['zufall']; $query = "INSERT INTO users(aktivierungscode) VALUES('$aktivierungscode',)"; ?>
Schöne Grüße
pcundsoftware
Beitrag zuletzt geändert: 4.9.2009 22:07:41 von pcundsoftware -
http://de3.php.net/rand
<?php echo rand(10000000000000000000, 99999999999999999999); ?>
Beitrag zuletzt geändert: 4.9.2009 21:50:09 von deutscher -
Würde ich nicht so machen, nutze diese Funktion hier:
function random_string($length,$noCaps = false, $addNumbers = false) { // bugfix. to avoid human reading errors, the chars o,O,i,I,l,L,1,0 do not appear any more in the result string. $w_s=array ('a','b','c','d','e','f','g','h','j','k','m','n','p','q','r','s','t','u','v','w','x','y','z',); if($noCaps === false) { $w_s = array_merge($w_s,array_map('strtoupper',$w_s)); } if($addNumbers === true) { $w_s = array_merge($w_s,array(2,3,4,5,6,7,8,9,)); } $max = count($w_s) - 1; $random = ""; for($i=0;$i<$length;$i++) { srand((double)microtime()*1000000); $wg=rand(0,$max); $random.=$w_s[$wg]; } return $random; }
$code = random_string(10)
^^ So wird er aufgerufen. Durch die Zahle, hier 10, kannst du die Anzahl der Zeichen deklarien. Oben im Array stehen die Zeichen die verwendet werden dürfen, Kannst also anpassen! -
Ja, den code habe ich jetzt aber ich muss in der datenbank jedem user seinen bestätigungskey zuweisen wie krieg ich das bei jeder neuen registrierung gleich mit in die db
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage