Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] aktywacja konta poprzez mail
alogator
post 24.01.2007, 10:22:53
Post #1





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 13.11.2006
Skąd: Sosnowiec

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


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. ?>
Go to the top of the page
+Quote Post
Cienki1980
post 24.01.2007, 10:25:49
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


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.


--------------------
404
Go to the top of the page
+Quote Post
JaRoPHP
post 24.01.2007, 10:36:05
Post #3





Grupa: Zarejestrowani
Postów: 675
Pomógł: 15
Dołączył: 7.11.2004
Skąd: Katowice

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


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)


--------------------
Kto pyta, nie błądzi...
Kto zbłądził, ten pyta...
Go to the top of the page
+Quote Post
alogator
post 24.01.2007, 17:28:46
Post #4





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 13.11.2006
Skąd: Sosnowiec

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


hmmm troszeczke to za skomplikowane dla mnie jak na początkującego sad.gif czy troszeczkę jaśniejszą odpowiedź mógłbym uzyskać??
Go to the top of the page
+Quote Post
JaRoPHP
post 24.01.2007, 22:29:24
Post #5





Grupa: Zarejestrowani
Postów: 675
Pomógł: 15
Dołączył: 7.11.2004
Skąd: Katowice

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


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.


--------------------
Kto pyta, nie błądzi...
Kto zbłądził, ten pyta...
Go to the top of the page
+Quote Post
alogator
post 25.01.2007, 13:51:02
Post #6





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 13.11.2006
Skąd: Sosnowiec

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


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!
Go to the top of the page
+Quote Post
Cienki1980
post 25.01.2007, 13:59:23
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


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

Ten post edytował Cienki1980 25.01.2007, 14:00:52


--------------------
404
Go to the top of the page
+Quote Post
BORG
post 25.01.2007, 14:03:46
Post #8





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 18.12.2006

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


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. ?>


Ten post edytował BORG 25.01.2007, 14:05:32
Go to the top of the page
+Quote Post
Cienki1980
post 25.01.2007, 14:10:24
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


@ 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.


--------------------
404
Go to the top of the page
+Quote Post
alogator
post 25.01.2007, 16:15:03
Post #10





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 13.11.2006
Skąd: Sosnowiec

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


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
Go to the top of the page
+Quote Post
Cienki1980
post 25.01.2007, 16:15:57
Post #11





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


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


--------------------
404
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 01:40