Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] aktywacja konta poprzez mail
Forum PHP.pl > Forum > Przedszkole
alogator
chciałbym aby dostęp do pełnych zasobów dostępował po aktywacji poprzez e-mail. W tym celu generuje kod który dołączam do maila i wysyłam do użytkownika - kod ten zapisuje w bazie danych i dodatkowo jest kolumna z aktywnością kóra wynosi zero a po kliknięciu w link z maila zmieniałaby się na 1 - ponizej wklejam kod którym usiłowałęm to zrobić ale nie bardzo - działa do momentu wysłąnia maila - otrzymuje link a jak w niego klikne to już nic sie nie dzieje. PROSZE O POMOC

  1. <?php
  2. include('configg.php'); 
  3.  
  4. $mail=$_POST['mail'];  //pobranie zmiennej z formularza
  5. $mail2=$_POST['mail2'];
  6.  
  7.  
  8.  
  9. mysql_connect($_CONFIG['MySQL']['host'], $_CONFIG['MySQL']['user'], $_CONFIG['MySQL']['pass']) 
  10. or die("Nie udało się połączyć");
  11. mysql_select_db($_CONFIG['MySQL']['base']); //podłaczenie do bazy
  12.  
  13. if (!($_POST['mail']) or !($_POST['mail2']))
  14. {
  15. print "<center><font color='green'>NIe wypełniono wszystkich pól nt";
  16.  
  17. print "<br>nt</font></center>";
  18.  
  19. }
  20. elseif ($_POST['mail'] != $_POST['mail2'])
  21. {
  22. print "Podane adresy nie są takie same";
  23.  
  24. }
  25. else 
  26. { 
  27. $actCode=str_shuffle("qqwertyuiopasdfghjklzxcvbnm1234567890"); //wygenreowanie kodu
  28. $fromaddress="alogator@xxx.pl";
  29. $fromname="automat";
  30.  $headers="MIME-Version: 1.0rn";
  31.  $headers.="From:"".$fromname.""<".$fromaddress.">n";
  32.  $headers.="Content-type: text/html; charset=iso-8859-2rn";
  33.  
  34.  $content="Witaj na stronach oceny wykładowców<br>Aby aktywować swoje konto kliknić w link znajdujący się poniżej<br><a hrev='http://xxx.pl/oceny/aktywacja.php?active=$actCode'>http://xxx.pl/oceny/aktywacja.php?active=$actCode</a>";
  35. mail($_POST["mail"], "Link Aktywacyjny", $content, $headers );
  36.  
  37. // wysłanie na maila klucza katywacyjnego
  38. mysql_query ("UPDATE `uzytkownik` SET `email` = '$mail', `klucz_aktyw`='$actCode' WHERE nr_indexu='$user'");  //wpisanie maila do bazy, klucza wygenerowanego
  39. print "Klucz aktywacyjny został wysłany na adres e-mail";
  40.  
  41. }
  42.  
  43.  
  44. ?>


A tu dalsza częśc skryptu którą kombinowałem żeby to zatrybiło ale nic z tego - jakieś sugestie??
  1. <?php
  2. if 
  3. ($_GET['active']==$actCode) 
  4. {
  5. mysql_query("UPDATE `uzytkownik` SET `akt`=1 WHERE klucz_akytw='$_GET[active]', nr_indexu=$user ");
  6. {
  7.  print"Aktywacja ukonczona pomyślnie. Możesz już korzystać z naszego serwisu.";
  8.  }
  9.  else
  10.  {
  11. print"Podano nieistniejący kod aktywacyjny.";
  12. }
  13. }
  14. ?>
Cienki1980
A skąd pobierasz zmienną $actCode questionmark.gif
Musisz ją pobrać, żeby porównać z linkiem z meila ... jeżeli są takie same to aktywujesz konto użytkownikowi.
JaRoPHP
Zakładam, że pierwsza część skryptu działa prawidłowo.

Co do drugiej części:
- najpierw sprawdź, czy jest zmienna $_GET['active'], oraz $_GET['user'] - isset()
- następnie wykonaj zapytanie SQL, sprawdzające, czy dla tego użytkownika ($_GET['user']), pole przechowujące w bazie danych losowy łańcuch jest równe przekazanej wartości ($_GET['active') - SELECT ..., np. mysql_num_rows()
- jeżeli warunek będzie spełniony aktywuj konto - UPDATE ...
- wyświetl stosowny komunikat (o poprawnej bądź błędnej weryfikacji)
alogator
hmmm troszeczke to za skomplikowane dla mnie jak na początkującego sad.gif czy troszeczkę jaśniejszą odpowiedź mógłbym uzyskać??
JaRoPHP
Cytat(alogator @ 24.01.2007, 17:28:46 ) *
czy troszeczkę jaśniejszą odpowiedź mógłbym uzyskać??
Tak, mógłbyś, ale niestety ja nie wiem, co dla Ciebie jest skomplikowane, a co nie... Najpierw "się określ" i napisz, czego nie rozumiesz, czego nie potrafisz zrobić. Wtedy powinieneś uzyskać pomocne wskazówki.
alogator
dzięki JaRoPHP za chęci i cierpliwosć

mianowicie nie wiem co zrobić dalej po tym jak ten kod został wysłany na miala.
Nie wiem jakie zapytanie wstawić.
Kombinowałem tak jak wcześniej napisałem ale już całkowicie nie wiem co jest nie tak a co tak!
Cienki1980
Załóżmy takie coś. Rejestruje się użytkownik X podając maila z.kraweznik@wp.pl

Zapisujesz do bazy jego dane, razem z wygenerowanym kodem i wysyłasz mu meila o treści:

"Kliknij tutaj adres.strony.pl/rejestruj.php?user=z.kraweznik@wp.pl&code=12343567890"

Na stronie rejestruj.php pobierasz dane:
  1. <?php
  2. $_GET['user'];
  3. $_GET['code'];
  4. ?>

po czym tworzysz zapytanie do bazy:
  1. <?php
  2. $query="select * from tabela where mail='".$_GET['user']."' AND code='".$_GET['code']."' AND activ='0'";
  3. ?>


Jeżeli zwróci Ci jakiś wiersz znaczy to, że taki użytkownik z takim kodem jest zapisany i nie jest jeszcze aktywny.
Robisz updata do bazy i uaktualniasz pole activ='1', wypisujesz komunikat "Potwierdzenie rejestracji OK".
BORG
w drugiej czesci kodu daj zapytanie:
  1. <?php
  2. $test = mysql_query("SELECT * FROM `uzytkownik` WHERE `klucz_aktyw`='$_GET[active] LIMIT 1")
  3. ?>

I potem:
  1. <?php
  2. $test = mysql_fetch_array($test);
  3. ?>

I ten kod:
  1. <?php
  2. if($_GET['active']==$actCode)
  3. ?>

Zamien na:
  1. <?php
  2. if($_GET['active']==$test['klucz_aktyw'])
  3. ?>
Cienki1980
@ BORG skoro wyciągasz dane z bazy i porównujesz kod z $_GET do kodu w bazie ... to po co potem znowu porównujesz kod z $_GET do wyciągnietego z bazy ?

Jeżeli mysql_fetch_array(); zwróci jakąś tablicę znaczy to że wartości te są równe.
alogator
zrobiłem ta:

  1. <?
  2. include('configg.php');
  3. ?>
  4. <?
  5. $_GET['user'];
  6. $_GET['code'];
  7.  
  8. mysql_connect($_CONFIG['MySQL']['host'], $_CONFIG['MySQL']['user'], $_CONFIG['MySQL']['pass']) 
  9. or die("Nie udało się połączyć");
  10. mysql_select_db($_CONFIG['MySQL']['base']);
  11.  
  12.  
  13. $query = mysql_query("SELECT `nr_indexu` FROM `uzytkownik` WHERE `nr_indexu`='".$_GET['user']."' AND `klucz_aktyw`='".$_GET['code']."'");
  14.  
  15.  if((@mysql_num_rows($query) == 1)) 
  16. {
  17.  
  18. echo"poprawny kod aktywacji";
  19. }
  20. else
  21. {
  22. echo"NIe poprawny kod aktywacji";
  23. }
  24.  
  25.  
  26.  
  27. ?>

i nic mi dalej nie działa - tutaj powinien sprawdząc czy taki kod i user są w bazie i jeżeli by sie zgadzało to powienim wyświetlac "poprawny kod aktywacji" (update bazy to juz potem - najpierw niech to działa!)
a tu nic...hmmmm...

a jendak mała poprawka i działa smile.gif teraz tylko updatemi został do bazy i będzie pięknie smile.gif

No i działa !

  1. <?
  2. include('configg.php');
  3. ?>
  4. <?
  5. $_GET['user'];
  6. $_GET['code'];
  7. $uuser=$_GET['user'];
  8.  
  9. mysql_connect($_CONFIG['MySQL']['host'], $_CONFIG['MySQL']['user'], $_CONFIG['MySQL']['pass']) 
  10. or die("Nie udało się połączyć");
  11. mysql_select_db($_CONFIG['MySQL']['base']);
  12.  
  13.  
  14. $query = mysql_query("SELECT `nr_indexu` FROM `uzytkownik` WHERE `nr_indexu`='".$_GET['user']."' AND `klucz_aktyw`='".$_GET['code']."'");
  15.  
  16.  if((@mysql_num_rows($query) == 1)) 
  17. {
  18. mysql_query ("UPDATE `uzytkownik` SET `akt`=1 WHERE nr_indexu='$uuser'"); 
  19. print "DOKONANO POPRAWNEJ AKTYWACJI KONTA";
  20.  
  21. }
  22. else
  23. {
  24. echo"NIe poprawny kod aktywacji";
  25. }
  26.  
  27.  
  28.  
  29. ?>


dziekuje wszystkim za pomoc i naprowadzenie mnie na to exclamation.gif
Cienki1980
te zmienna w lini 5 i 6 nie są potrzebne, ja pisząc kod po prostu je wskazałem, że to właśnie te trzeba odczytać biggrin.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.