Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Aktywacja konta
Forum PHP.pl > Forum > Przedszkole
Dominator
Głowiłem się co zrobić i nie wiem, chodzi mi o to aby po założeniu konta na dany mejl przyszedł link z aktywacją konta. Jak to zrobić ?

Plik: rejestracja.php

  1. <br>
  2. <?
  3.  
  4. $login = $_POST['login'];
  5. $haslo = $_POST['haslo'];
  6. $haslo2 = $_POST['haslo2'];
  7. $kod = $_POST['kod'];
  8. $accept = $_POST['accept'];
  9. $email = $_POST['email'];
  10. $file = ("users/$login.cl50cp1eoq9zj3scotij1a84");
  11. if(file_exists($file)):
  12. echo("Ten login jest juz zajety!");
  13. elseif($haslo != $haslo2):
  14. echo("Podales dwa rozne hasla!");
  15. else:
  16. $ciag = "$login:$haslo:$kod:$accept:$email";
  17. $zapis = str_replace("$ "," $",$ciag);
  18. $open = fopen("$file", "w+");
  19. fputs($open, $zapis);
  20. fclose($open);
  21. echo header("Location: rejestracjapomyslna.php");
  22. endif;
  23. ?>
  24. </br>


rejestrator.html

  1. <form name="rejestracja" method="post" action="rejestrator.php">
  2.  
  3. <label for="Name">Adres e-mail: <font color="red">*</font></label>
  4. <input type="text" name="email" id="Name" value=""/>
  5.  
  6. <label for="Name">Nazwa uzytkownika: <font color="red">*</font></label>
  7. <input type="text" name="login" id="Name" value=""/>
  8.  
  9. <label for="Email">Haslo: <font color="red">*</font></label>
  10. <input type="password" name="haslo" id="Email" value=""/>
  11.  
  12. <label for="Subject">Powtorz haslo: <font color="red">*</font></label>
  13. <input type="password" name="haslo2" id="Email" value=""/>
  14.  
  15. <label for="Message">Kod zabezpieczajacy: <font color="red">*</font><a href="java script:alert('Jesli zapomniesz hasla to ten wyraz bedzie kluczem w razie zapomnienia hasla')">[?]</a></label>
  16. <input type="text" name="kod" id="Email" value=""/>
  17.  
  18. <label for="Message">Akceptujesz <a href="regulamin.php">regulamin: <font color="red">*</font></a>: <a href="java script:alert('Wpisz Tak/Nie')">[?]</a></label>
  19. <input type="text" name="accept" id="Email" value=""/>
  20.  
  21. <br />
  22.  
  23.  
  24. <input type="submit" name="submit" value="Zarejestruj sie !" onclick="return empty_check()" class="submit-button" />


Crozin
1. Zakładasz konto, w tabeli z użytkownikami w kolumnie activation_key zapisujesz unikalny klucz (możesz go generować poprzez $key = md5(uniqid(mt_rand(), true))winksmiley.jpg.
2. Wysyłasz maila w którym jest link typu /activate/1/432490123d23kd239dk22d.html, gdzie 1 to ID użytkownika, a drugi parametr to klucz.

Na stronie aktywacji robisz bardzo prostą rzecz: wyszukujesz użytkownika o ID = :id i activation_key = :key. Jeżeli znajdzie, to kolumnę tą ustawiasz na NULL i użytkownik jest aktywny

Na stronie logowania po tym jak już pobierzesz użytkownika wg jego loginu/maila sprawdzasz najpierw czy jest aktywny (activation_key !== null), jeżeli tak to sprawdzasz poprawność hasła, jeżeli nie to wiadomo - konto jeszcze nie aktywowane.
Dominator
coś mi to nie wychodzi
Crozin
To niedobrze sad.gif
_Martin_
Ja bym zrobił taki przykład:

  1. $tabelka = '1234567890qwertyuiopasdfghjkklzxcvbnm';
  2. $id = '';
  3. for ($i=0; $i<7; $i++) // 7 to długość ciągu
  4. {
  5. $id .= $tabelka[rand()%(strlen($tabelka))];
  6. }
  7.  
  8. Wynik: Losowy ciąg 7 liczb, lub cyfr który wpisuje do bazy danych


  1. $sql= mysql_query('
  2. INSERT INTO
  3. uzytkownicy
  4. SET
  5. login = "'.$sLogin.'",
  6. haslo = "'.$sPass.'",
  7. ip = "'.$_SERVER["REMOTE_ADDR"].'",
  8. code = "'.$id.'",
  9. code_user = "0"
  10. ');


Jak widać code_user = 0
Wytłumacze za pomocą funkcji if

  1. if($code_user == 0){
  2. Brak aktywacji
  3. }else{
  4. Aktywowany
  5. }


Teraz wysyłamy maila:
  1. $headers .= 'MIME-Version: 1.0'. "\n"; // *5
  2. $headers .= "Content-Type: text/html; charset=utf-8 \n";
  3. $headers .= "From: noreply@90minut.org \n";
  4. $messenge = "Witaj, cos tam cos tam oto twój kod:".$id."';
  5. $mail_sent = @mail($sEmail, 'title', $message, $headers);



Teraz link aktywacyjny.

Nie wiem proponuje adres np
http://twojawww.pl/activate.php?id=1&sid=[tutjatwójkod]

I SQL Do sprawdza czy się zgadza smile.gif potem zmiana code z 0 na 1 i aktywacja gotowa! smile.gifsmile.gif)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.