Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: rejestracja + aktywacja
Forum PHP.pl > Forum > PHP
michu9010
witam,
chcialbym zrobi na swojej stronie aktywacja poprzez mail ale niemam pomyslu jak to mozna zrobic do gotowego juz dzialajacej rejestracji poprzez kopiowanie dancych z baz czy jak??
o to ten plik rejestracji
  1. <?php
  2. include ('session.php');
  3.  
  4.  
  5. // połączenie z mysql
  6. require('funkcje.php');
  7. include ('top.php');
  8. // nagłówek
  9. if($_SESSION['logged'])
  10. {
  11. // wyœwietlamy userowi jego dane
  12. echo '<div class="error">Nie możesz wykonać rejestracji jak jestes zalogowany!</div>';
  13. }
  14. else
  15. {
  16. echo '<h2>Rejestracja</h2>';
  17.  
  18. // tworzymy prosty formularz
  19. echo '<form action="register.php" method="POST">
  20. <table width="380" border="0" align="center" cellpadding="0" cellspacing="0">
  21. <tr>
  22. <td>Login:</td>
  23. <td><input type="text" name="nick" /></td>
  24. </tr>
  25. <tr>
  26. <td>Haslo:</td>
  27. <td><input type="password" name="pass" /></td>
  28. </tr>
  29. <tr>
  30. <td>Potwierdz haslo:</td>
  31. <td><input type="password" name="pass2" /></td>
  32. </tr>
  33. <tr>
  34. <td>Imie:</td>
  35. <td><input type="text" name="imie" id="imie" /></td>
  36. </tr>
  37. <tr>
  38. <td>Nazwisko:</td>
  39. <td><input type="text" name="nazwisko" id="nazwisko" /></td>
  40. </tr>
  41. <tr>
  42. <td>numer telefonu:</td>
  43. <td><input type="text" name="telefon" id="telefon" /></td>
  44. </tr>
  45. <tr>
  46. <td>Twój E-mail:</td>
  47. <td><input type="text" name="mail" id="mail" /></td>
  48. </tr>
  49. <tr>
  50. <td>Powtórz E-mail</td>
  51. <td><input type="text" name="mail2" id="mail2" /></td>
  52. </tr>
  53. <tr>
  54. <td><input type="reset" value="Reset" /></td>
  55. <td><input type="submit" name="ok" value="Rejestruj" /></td>
  56. </tr>
  57. <tr>
  58. <td colspan=2><div class="error">Aby rejestracja przebiegła pomy¶lnie to wszystkie pola musz± być uzupełnione!</div></td>
  59. </tr>
  60. </table>
  61. </form>';
  62.  
  63. // jeœli zostanie naciœnięty przycisk "Rejestruj"
  64. if(isset($_POST['ok']))
  65. {
  66. $nick = $_POST['nick'];
  67. $pass = $_POST['pass'];
  68. $pass2 = $_POST['pass2'];
  69. $imie = $_POST['imie'];
  70. $nazwisko = $_POST['nazwisko'];
  71. $telefon = $_POST['telefon'];
  72. $mail = $_POST['mail'];
  73. $mail2 = $_POST['mail2'];
  74. // sprawdzamy czy wszystkie dane zostały podane
  75. if(empty($nick) || empty($pass) ||
  76. empty($pass2) ||
  77. empty($imie) ||
  78. empty($nazwisko)
  79. || empty($telefon) ||
  80. empty($mail) ||
  81. empty($mail2) ) echo '<div class="error">Wpisz wszystkie pola!</div>';
  82. // jeœli tak...
  83. else
  84. {
  85. // filtrujemy dane
  86.  
  87. // sprawdzamy czy jest już użytkownik o takim loginie
  88. $result = mysql_query("SELECT * FROM users WHERE nick='$nick'");
  89.  
  90. // jeœli już istnieje
  91. if(mysql_num_rows($result)!=0) echo '<div class="error">Juz istnieje konto z takim loginem!</div>';
  92. // jeœli nie...
  93. if ($pass!=$pass2) echo '<div class="error">Hasla sie niezgadzaja!</div>';
  94. // sprawdzenie poprawnosci adresu mail
  95. // w zmiennej $email mamy e-mail do sprawdzenia
  96.  
  97. //sprawdzanie czy sia adresy email zgadzaja
  98.  
  99. if ($mail!=$mail2) {
  100. echo '<div class="error">Adresy E-mail sie niezgadzaja!</div>';
  101. }
  102. elseif(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$",$mail))
  103. {
  104. echo '<div class="error">Adres E-mail jest nieprawidlowy!</div>';
  105. }
  106. else
  107. {
  108.  
  109. // pobieramy aktualną datę
  110. $data = time();
  111.  
  112.  
  113.  
  114. // tworzymy zapytanie
  115. $query = "INSERT INTO users (nick , pass, data_rejestracji, imie, nazwisko, telefon, mail)
  116. VALUES ('$nick', '$pass', '$data', '$imie', '$nazwisko', '$telefon', '$mail')";
  117.  
  118.  
  119. // jeœli zapytanie wykona się poprawnie to zostanie wyœwietlony stosowny komunika
  120.  
  121.  
  122. if(mysql_query($query)) echo 'Zostales poprawnie zarejestrowany! Mozesz sie teraz <a href="login.php">zalogować</a>';
  123. }mysql_query('SET CHARSET latin2');
  124.  
  125. }
  126. }
  127. }
  128.  
  129.  
  130. include 'botom.php';
  131. // rozłączenie z bazą danych
  132.  
  133. // koniec buforowania
  134. ?>

dziekuje za cierpliwosc i pomysly party.gif party.gif
ZuyPan
Ja bym to zrobił tak:
Dodajesz do tabeli z użytkownikami 2 kolejne pola: kod, aktywacja - w pierwszym będziesz przechowywał kod za pomoc± którego osoba aktywuje konto a w polu aktywacja będzie zapisane czy użytkownik konto aktywował czy nie...
Podczas rejestracji przed wysłaniem danych do mysql generujesz kod aktywacyjny (zadbaj aby kody nie powtarzały się miedzy użytkownikami) a następnie owy kod zapisujesz w mysql a także wysyłasz na emaila w postaci http://www.twojastrona.pl/aktywacja.php?ko..._id_uzytkownika. Użytkownik po kliknięciu takiego linka wysyła do pliku aktywacja.php ż±danie aby podmienił warto¶ć pola "aktywacja" w mysql dla użytkownika o odpowiednim id.
Mam nadzieje, że zrozumiałe¶
altruista2
Nie będę Ci robił gotowca, powiem tylko jak powiniene¶ zrobić:

W bazie zrob kolumnę "aktywowano" TINYINT(1) DEFAULT 0

Na mejla wysyłaj link:

  1. $link = "aktywacja.php?login=".$login."&hash=".md5($imie.$nazwisko.$haslo.$bog_wie_co_jeszcze.'solniczka');

a w aktywacja.php takie cu¶:
  1. $login = stripslashes($_REQUEST['login']);
  2. if(list($imie,$nazwisko,$haslo,$bog_wie_co_jeszcze) =
  3. @mysql_fetch_row(mysql_query("SELECT imie,nazwisko,haslo,bog_wie_co_jeszcze FROM Tabela WHERE Login='$login'"))) {
  4. if($_REQUEST['hash'] == md5($imie.$nazwisko.$haslo.$bog_wie_co_jeszcze.'solniczka')) {
  5. mysql_query("UPDATE Tabela SET aktywowano=1 WHERE login='$login'");
  6. echo "Aktywowano !";
  7. }else{
  8. echo "NIE Aktywowano - zle dane";
  9. }
  10. }else{
  11. echo "Taki login nie istnieje!";
  12. }
lobopol
Oprócz tego co dodał altruista2 warto sprawdzić czy już nie zostało konto aktywowane (jeden if więcej)
To jest wersja lo-fi głównej zawarto¶ci. Aby zobaczyć pełn± wersję z większ± zawarto¶ci±, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.