Loading:


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";
}
?>




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-2020 v.1.5 | design: diviXdesign & rainbowcolors