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