Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]jak z rejestracji zwykłej zrobić rejestrację z mailem aktywacyjnym
Forum PHP.pl > Forum > Przedszkole
marcinkooter
Witam, mam prostą rejestrację na stronkę:

  1.  
  2. <?php
  3. mysql_connect("localhost", "root", "haslo")or die("Nie można nawiązać połączenia z bazą");
  4. mysql_select_db("baza")or die("Wystąpił błąd podczas wybierania bazy danych");
  5.  
  6. function ShowForm($komunikat=""){
  7. echo "$komunikat<br>";
  8. echo "<form action='rej.php' method=post>";
  9. echo "Login: <input type=text name=login><br>";
  10. echo "Hasło: <input type=text name=haslo><br>";
  11. echo "<input type=hidden value='1' name=send>";
  12. echo "<input type=submit value='Zarejestruj mnie'>";
  13. echo "</form>";
  14. }
  15. ?>
  16.  
  17.  
  18.  
  19. <html> (...)
  20.  
  21.  
  22.  
  23. <?php
  24. if($_POST["send"]==1){
  25. if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
  26. if(mysql_num_rows(mysql_query("select * from users where user_login='".htmlspecialchars($_POST["login"]."'"))))ShowForm("Użytkownik o podanym loginie już istnieje!!!");
  27. else{
  28. mysql_query("insert into users values(NULL, '".htmlspecialchars($_POST["login"])."', '".htmlspecialchars($_POST["haslo"])."')"); // zapisywanie rekordu do bazy
  29. echo "Rejestracja przebiegła pomyślnie. Możesz teraz przejść do <a href='index.php'>strony głównej</a> i się zalogować.";
  30. }
  31. }
  32. else ShowForm("Nie uzupełniono wszystkich pól!!!");
  33. }
  34. else ShowForm();
  35. ?>
  36.  
  37.  
  38. (...)
  39. </html>
  40.  
  41.  
  42.  
  43.  

ten skryp mi bardzo ładnie działa. dodaje do bazy danych użytkownika, dzięki czemu może się on później zalogować na stronie index.php

a chciałbym rozszerzyć rejestrację o wysłanie linku aktywacyjnego mailem. jak mam to zrobić?
Daiquiri
Możesz zrobić sobie dodatkowe pole w bazie w tabeli użytkownika na np. klucz aktywacyjny oraz dodatkowe pole na maila w formularzu. W miejscu gdzie rejestracja przebiegła pomyślnie, dodaj wysyłanie maila z kluczem aktywacyjnym i jednocześnie dodaj ten klucz do tego dodatkowego pola w bazie. Jeżeli user kliknie na wysłanego mu linka z kluczem i będzie się on zgadzał z jego loginem i zapisanym wcześniej do bazy kluczem aktywacyjnym - możesz go aktywować usuwając dane o kluczu. W innym przypadku (jeżeli user nie potwierdzi maila) dodaj dodatkowy warunek przy logowaniu się if(pole z bazy klucz aktywacyjny nie jest puste) to user nie może być zalogowany.

Może w punktach będzie czytelniej:
1. Dodajesz nowe pole w bazie w tabeli usera, żeby dodawać tam klucz aktywacyjny.
2. Dodajesz nowe pole do uzupełnienia w formularzu rejestracji na adres e-mail
3. Zmieniasz trochę warunki "pomyślności" rejestracji (dodajesz obowiązek wypełnienia pola z mailem)
4. W miejscu "rejestracja przebiegła pomyślnie" generujesz losowy ciąg znaków (np. rand() + nick + czas)
5. Wysyłasz ten wygenerowany ciąg w postaci linka na adres e-mail usera (np. www.strona.pl/index.php?user=marcin&uid=MUASbbyuj#56as2322dsd33c6
5. Jeżeli user kliknie na link - pobierasz o nim dane z bazy i wywołujesz sprawdzanie poprawności,
np. if ($_GET['uid] == $uid_pobrany_z_bazy) dla użytkownika marcin (gdzie uid to klucz)
6. Jeżeli warunek zostaje spełniony, możesz np. nadać polu z kluczem wartość NULL
7. Przy logowaniu, pobierasz z bazy również dane o kluczu aktywacyjnym i dodajesz dodatkowy warunek do formularza logowania:
np. if ($klucz_pobrany_z_bazy == NULL)
8. Jeżeli $klucz_pobrany_z_bazy nie będzie NULL, to user nie aktywował konta


PS. Możesz jeszcze potrzebować dodać pole w bazie, żeby przechowywać adres e-mail, chyba że login = e-mail smile.gif.
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.