Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Aktywacja konta
Dominator
post
Post #1





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

Ostrzeżenie: (20%)
X----


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" />


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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))(IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
Dominator
post
Post #3





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

Ostrzeżenie: (20%)
X----


coś mi to nie wychodzi
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


To niedobrze (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
_Martin_
post
Post #5





Grupa: Zarejestrowani
Postów: 352
Pomógł: 9
Dołączył: 16.09.2005
Skąd: Rybnik

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/smile.gif) potem zmiana code z 0 na 1 i aktywacja gotowa! (IMG:style_emoticons/default/smile.gif) (IMG:style_emoticons/default/smile.gif) )(IMG:style_emoticons/default/smile.gif)

Ten post edytował _Martin_ 16.12.2010, 19:14:25
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 12:09