Loading:

Zaplanuj Przeprowadzke - Ściągnij Darmową Aplikację na Androida

Aktywacja konta przez E-Mail

W tym artykule zajmiemy się aktywacją kont poszczególnych użytkowników za pomocą wcześniej podanych przez nich adresów emailowych.
Ogólne działanie skryptu będzie polegało na:
- rejestracji użytkownika
- sprawdzenie poprawności wprowadzonych danych
- wysłanie listu z kodem aktywacyjnym
- aktywacja konta, jeśli kod oraz pozostałe parametry zgadzają się


Mamy już tabelę users oraz jej następujące pola:
- u_id - przechowywuje ID użytkownika
- u_name - jego nazwę
- u_password - jego hasło zakodowane algorytmem SHA1()
- u_activation_key - zaiwera klucz aktywacyjny
- u_acvtive - mówi nam czy użytkownik aktywował konto (1) lub nie (0)


Teraz objaśnienia. Na początku sprawdzamy czy dane z formularza spełniają nasze warunki. Jeśli tak to tworzymy list z nagłówkami i wysyłamy go na podany email oraz tworzymy nowy rekord z danymi użytkownika w bazie danych. Warunek z $_GET[active] pozwala na wykonanie operacji aktywowania. Tutaj sprawa jest prosta: jeśli klucz aktywacyjny istnieje w bazie to ustawiamy usera na aktywnego, jeśli nie to znaczy, że klucz już został użyty lub poprostu nie istnieje. Na samym końcu ładujemy wcześniej utworzony formularz rejestracyjny.



Napisz Artykuł

Listing

CREATE TABLE users (
  u_id int(11) NOT NULL auto_increment,
  u_name varchar(32) NOT NULL default '',
  u_password varchar(40) NOT NULL default '',
  u_email varchar(64) NOT NULL default '',
  u_activation_key varchar(40) NOT NULL default '',
  u_active int(1) NOT NULL default '0',
  PRIMARY KEY  (u_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Plik form.inc:
<form action="register.php" method="post">
<input type="hidden" name="regEnd" value="true">
Nazwa <input type="text" name="userName" maxlength="32"><br>
Hasło <input type="text" name="userPasswd1" maxlength="8"><br>
Powtórz Hasło <input type="text" name="userPasswd2" maxlength="8"><br>
Podaj E-Mail <input type="text" name="userEmail" maxlength="64"><br>
<input type="submit" value="Rejestruj">
</form>

Plik register.php:
<?php
if($_POST["regEnd"]=="true")
{
   $query=mysql_query("SELECT * FROM users WHERE u_name='$_POST[userName]' ");
   if(!$_POST["userName"] OR !$_POST["userPasswd1"] OR !$_POST["userPasswd2"] OR !$_POST["userEmail"])
   {
           print"Nie wypelniono wszystkich pól";
   }
   elseif($_POST["userPasswd1"]!=$_POST["userPasswd2"])
   {
           print"Podane hasła nie sa takie same";
   }
   elseif(!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$",$_POST["userEmail))
   {
           print"
Podany email nie jest prawidłowy";
   }
   elseif(strlen($_POST["
userName"])<4 OR strlen($_POST["userPasswd1"])<4)
   {
           print"
Nazwa i hasło muszą miec przynajmniej 4 znaki";
   }
   elseif(mysql_num_rows($query)==1)
   {
           print"
Podana nazwa uzytkownika jest juz zajęta. Wybierz inna";
   }
   else
   {
           $_POST["
userPasswd1"]=SHA1($_POST["userPasswd1"]);
           $actCode=str_shuffle("
qwertyuiopasdfghjklzxcvbnm1234567890");
           $headers="
MIME-Version: 1.0\r\n";
           $headers.="
Content-type: text/html; charset=iso-8859-2\r\n";
           $content="
<html><head><title>Aktywacja Konta</title</head>
                                           <body>
                                           Aby aktywować konto na stronie XXXX musisz kliknąć poniższy link aktywujący:<br>
                                           <a href=\"http://twojastrona.com/www/register.php?active=".$actCode."\"> http://twojastrona.com/www/register.php?active=".$actCode." </a><br>
                                                Dziękuje admin strony XXXX</body></html>"
;
                mail($_POST["userEmail"], "Link Aktywacyjny", $content, $headers);
           mysql_query("INSERT INTO users (u_name, u_password, u_email, u_activation_key) VALUES('$_POST[userName]', '$_POST[userPasswd1]', '$_POST[userEmail]', '$actCode')");
 print"Zostales zarejestrowany pomyslnie, jednak ta strona wymaga aktywacji kont przez email. Na podany adres emailowy zostal wyslany klucz aktywacyjny. Email powinien zostac wyslany w ciagu kilku minut, jesli tak sie nie stanie skontaktuj sie z administratorem strony.":
        }
}
elseif($_GET["active"])
{
   mysql_query("UPDATE users SET u_active=1 WHERE u_activation_key='$_GET[active]' ");
   if(mysql_affected_rows()==1)
        {
                 print"Aktywacja ukonczona pomyślnie. Możesz już korzystać z naszego serwisu.";
         }
         else
         {
                  print"Podano nieistniejący kod aktywacyjny.";
          }
}
else
{
include"form.inc";
}
?>


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=2&t=4975

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: bravura Ranga: Poziom 6 Punktów: 150
Komentarze użytkowników
hmmmm dobre dobre
autor: adel1995 | 5946 | 2010-07-25 22:11:28


bardzo przydatne info
autor: bimbo20 | 6358 | 2010-09-26 16:01:35


dziękuję za skrypt. Wszystko działa idealnie :)
autor: mdnm | 6717 | 2010-10-16 15:34:31


Właśnie tego szukałem :)
autor: pudi | 12190 | 2011-01-15 19:30:30


Nie wysyła mi wiadomości kod:
  • Zobacz kod dodany do tego wpisu
    • $login = czysc($login);
                              $haslo1 = czysc($haslo1);
                              $haslo2 = czysc($haslo2);
                              $email = czysc($email);
                              $gg= czysc($gg);
                              $avatar = czysc($avatar);
                              $kibic = czysc($kibic);
                 $actCode=str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
                 $headers="MIME-Version: 1.0\r\n";
                 $headers .="Content-type: text/html; charset=iso-8859-2\r\n";
                 $content='<html><head><title>Aktywacja Konta</title</head>
                                                 <body>
                                                 Aby aktywować konto na stronie XXXX musisz kliknąć poniższy link aktywujący:<br>
                                                 <a href=\"http://twojastrona.com/www/register.php?active='.$actCode.'\"> http://twojastrona.com/www/register.php?active='.$actCode.' </a><br>
                                                      Dziękuje admin strony XXXX</body></html>';
                      mail($email, "Aktywacja Konta na stronie Transferyligowe.pl", $content, $headers);
       mysql_query("INSERT INTO users (login, haslo, email, data, poziom, avatar, gg, kibic, activation_key) VALUES('$login', md5('$haslo1'), '$email', NOW(), '$poziom', '$avatar','$gg', '$kibic', '$actCode')");
       print"Zostales zarejestrowany pomyslnie, jednak ta strona wymaga aktywacji kont przez email. Na podany adres emailowy zostal wyslany klucz aktywacyjny. Email powinien zostac wyslany w ciagu kilku minut, jesli tak sie nie stanie skontaktuj sie z administratorem strony.";
         
autor: pudi | 12192 | 2011-01-15 20:42:57


Może być...
autor: adikso | 12468 | 2011-06-11 15:53:46


Niech będzie
autor: frox1991 | 12710 | 2012-01-15 22:08:03


Przydatna rzecz
autor: administrator | 12717 | 2012-01-21 19:48:05


    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors