CompZone.Org :: Artykuły :: PHP
Pytania w drugiej edycji Testu PHP powinny być:
Trudniejsze
Łatwiejsze
Skomplikowane
Na myślenie
Do liczenia
Sonda Wyniki

Add to Google

Aktywacja konta za pomocą maila

Z pomocą artykułu napiszemy skrypt, który będzie wysyłał do użytkownika link aktywujący założone przez niego konto.

Zaczynamy !

Na początku utworzymy sobie skrypt, który automatycznie utworzy nam tabelę autoryzacja oraz 3 pola: nick, token oraz ok.

wprowadz.php

  
<?php
$
adresbazy = "hostbazydanych.pl"; //podajemy nazwe hosta, pod ktorym znajduje sie nasza baza MySQL
$
nazwauzytkownika = "nazwa_uytkownika"; //podajemy nazwę użytkownika
$
haslo = "haslo"; //podajemy haslo (nie zawsze wymagane)
$
link = mysql_connect($adresbazy, $nazwauzytkownika , $haslo) or die("Nie można nawiązać połączenia !"); //próbujemy połączyć się z bazą danych, jeżeli się to nie uda wyświetlamy stosowną informację
mysql_select_db("skrypt",$link) or die("Nie można wybrać bazy danych!"); //wybieramy bazę danych, z której będziemy korzystać
mysql_query('create table autoryzacja(nick varchar(50),token longtext,ok int(11) default 0);',$link); // za pomocą zapytania SQL tworzymy tabelę autoryzacja o 3 polach: nick, token i ok o domyślnej wartości 0
mysql_query('ALTER TABLE `autoryzacja` ADD UNIQUE (`nick`);', $link); //ustawiamy atrybut "unikalny" przy polu nick
?>

Aby wprowadzić dane to tabeli (co jest chyba jasne) należy uruchomić powyższy skrypt. Dobrze teraz zajmiemy się stworzeniem skryptu, który wygeneruje unikalny token (kod aktywacyjny) oraz wyśle go na podany przez użytkownika mail.

token.php

  
<?php
$
adresbazy = "hostbazydanych.pl"; //podajemy nazwe hosta, pod ktorym znajduje sie nasza baza MySQL
$
nazwauzytkownika = "nazwa_uytkownika"; //podajemy nazwę użytkownika
$
haslo = "haslo"; //podajemy haslo (nie zawsze wymagane)
$
link = mysql_connect($adresbazy, $nazwauzytkownika , $haslo) or die("Nie można nawiązać połączenia !"); //próbujemy połączyć się z bazą danych, jeżeli się to nie uda wyświetlamy stosowną informację
mysql_select_db("skrypt",$link) or die("Nie można wybrać bazy danych!"); //wybieramy bazę danych, z której będziemy korzystać
$
wynik = mysql_query("SELECT * FROM autoryzacja WHERE nick = '$n'"); // za pomocą zapytania SQL wybieramy rekord, w którym znajduje się nick podany przez użytkownika
if(mysql_num_rows($wynik) == 1) { //jeżeli faktycznie już taki nick był zarejestrowany
print '<center><h2>Nick został zajęty przez innego użytkownika. Wybierz inny nick.</h2></center>'; //wyświetlamy informację
exit;
} //jeżeli nie
$t = md5(uniqid(time())); //generujemy 32-bitowy token
mysql_query("INSERT INTO autoryzacja( nick, token ) VALUES ('$n', '$t');", $link); //i umieszczamy go wraz z nickiem w tabeli autoryzacja
$nadawca = "From: Gall Anonim
<gall@compzone.org>rn"; //ustawiamy nadawcę listu
$temat = "Aktywuj swoje konto !"; //ustawiamy temat listu
mail($email, $temat, "Dziękujemy $n za założenie konta w naszym serwisienŻeby aktywować Twoje nowo utworzone konto kliknij w poniższy link:nhttp://twojastrona.pl/spr.php?t=$t&n=$nnWiadomość ta została wysłana do Ciebie przez osobnika, który posiadał IP: $REMOTE_ADDR", $nadawca); //wysyłamy list na podany przez użytkownika adres e-mail znajdujący się w zmiennej $email
print("Dziękujemy za założenie konta w naszym serwisie ! Na podany przed chwilą przez Ciebie adres e-mail została wysłana wiadomość, którą należy odebrać i aktywować swoje konto klikając w link aktywacyjny znajdujący się w wiadomości"); //jeżeli się to uda wyświetlamy stosowną informację
?>

Teraz pozostaje nam tylko utworzenie skryptu, który sprawdzi czy konto zostało aktywowane za pomocą linka wysłanego na adres e-mail, czy też trzeba to dopiero zrobić.

spr.php

  
<?php
$
adresbazy = "hostbazydanych.pl"; //podajemy nazwe hosta, pod ktorym znajduje sie nasza baza MySQL
$
nazwauzytkownika = "nazwa_uytkownika"; //podajemy nazwę użytkownika
$
haslo = "haslo"; //podajemy haslo (nie zawsze wymagane)
$
link = mysql_connect($adresbazy, $nazwauzytkownika , $haslo) or die("Nie można nawiązać połączenia !"); //próbujemy połączyć się z bazą danych, jeżeli się to nie uda wyświetlamy stosowną informację
mysql_select_db("skrypt",$link) or die("Nie można wybrać bazy danych!"); //wybieramy bazę danych, z której będziemy korzystać

$
wynik = mysql_query("SELECT * FROM autoryzacja WHERE token = '$t' AND nick = '$n' AND (ok != '1')"); //sprawdzamy czy podany w adresie token i nick zgadza się oraz wartość pola ok (czyli czy konto zostało aktywowane)

if(mysql_num_rows($wynik) == 0) { //jeżeli wartość pola ok jest równa 1 lub token, nick są błędne
print '<center><h2>Zamówienie zostało już potwierdzone,<BR>albo token lub nick są błędne.</h2></center>'; //wyświetlamy stosowną informację
exit;
}
mysql_query("UPDATE autoryzacja SET ok='1' WHERE token = '$t' AND nick = '$n'", $link); //jeżeli wartość pola ok jest różna od 1 to aktywujemy to konto ustawiając pole ok na 1
print "
<center><h1>Dziękujemy za aktywację konta</h1><BR><h2>Teraz możesz już z niego korzystać</h2></center>";
?>

I to już prawie wszystko pozostaje nam tylko stworzenie formularza, w którym użytkownik będzie mógł podać nick oraz adres e-mail. Poniższy kod nie wymaga chyba komentarza.

formularz.html

  
<HTML>
<HEAD>
<TITLE>Aktywacja za pomocą linka wysyłanego mailem</TITLE>
</HEAD>
<BODY>
<FORM METHOD="POST" ACTION="token.php">
<h3>Podaj nick, którego będziesz używał oraz adres e-mail (istniejący) !</h3>
<BR>
Nick:
<BR><INPUT TYPE="TEXT" NAME="n">
<BR>Adres e-mail:
<BR><INPUT TYPE="TEXT" NAME="email">
<BR>
<BR><INPUT TYPE="SUBMIT" VALUE="Wyślij">
</FORM>
</BODY>
</HTML>
Gall Anonim @ 10-07-2006 17:00
Brak komentarzy...
Copyright © 2005-2006 Compzone.Org. Kopiowanie i wykorzystywanie materiałów zawartych na tej stronie bez zgody autora zabronione!