Często na stronach widzicie link do rejestracji. Zapewne chcielibyście dodać taki bajer na swojej stronie, lecz nie wiedzieliście jak to zrobić. Teraz możecie zrobić to bezproblemowo, przeczytawszy ten artykuł zrobisz to sam! A więc co? Do dzieła ...
Zaczniemy od rozplanowania całości. Nasz projekt będzie się składał z następujących plików:
- funkcje.php -> wszystkie funkcje potrzebne do rejestracji;
- index.php -> formularz, wraz z możliwością zarejestrowania się, gdy nie masz jeszcze własnego konta;
- omnie.php -> możesz wykorzystać go na menu;
- rejestracja.php -> tłumaczyć nie musze ;-) ;
- uzytkownicy.php;
- wyloguj.php;
1. Jak już wspomniałem nasza rejestracja będzie oparta na bazie danych mysql.
Oto kod naszej tabeli sql:
Kod:
CREATE TABLE `users` (
`nr` int(20) NOT NULL auto_increment,
`login` varchar(20) NOT NULL default '',
`gg` varchar(10) NOT NULL default '',
`skad` varchar(30) NOT NULL default '',
`plec` varchar(20) NOT NULL default '',
`haslo` varchar(20) NOT NULL default '',
`data` varchar(20) NOT NULL default '',
PRIMARY KEY (`nr`)
) TYPE=MyISAM AUTO_INCREMENT=33 ;
2. Teraz zabierzemy się za pisanie najważniejszego pliku, funkcje.php, gdzie znajdować się będą jak sama nazwa pliku wskazuje, najważniejsze funkcje naszego skryptu.
funkcje.php
Kod:
<?php
function pol_mysql()
{
//ustawiamy teraz dane naszej bazy
$db_host = 'localhost';
$db_user = 'user';
$db_pass = 'pass';
$db_name = 'nazwa_bazy';
//ustawiamy polączenie z bazą danych
$lacz = mysql_pconnect($db_host, $db_user, $db_pass);
if(!$lacz)
{
echo "Wystąpił błąd: Połączenie z bazą nie powiodło się.";
exit; }
//wybieramy bazę
if(!@mysql_select_db($db_name, $lacz)) {
echo '<b>Baza danych chwilowo niedostepna. Przepraszamy.</b>';
exit; }
}
function wynik_db_do_tablicy($wynik)
{
$tablica_wyn=array();
for($licznik=0; $rzad=@mysql_fetch_array($wynik); $licznik++)
$tablica_wyn[$licznik]=$rzad;
return $tablica_wyn;
}
function html_url($url, $nazwa)
{
// wyświetlenie URL-a jako łącza
?>
<P align="center">
<a href="<?=$url?>"><?=$nazwa?></a>
</P>
<?
}
//wyswietla nam pole do zalogowania się, bądź rejestracji ;)
function wy_form_logo()
{
?>
<form method=post action="uzytkownicy.php?m=log">
<TABLE ALIGN="center">
<tr>
<td><b>Login:</b></td>
<td><input type=text name="login"></td>
<td><b>Hasło:</b></td>
<td><INPUT type=password name="haslo"></td>
<td align=center colspan=2>
<INPUT TYPE="SUBMIT" VALUE="Zaloguj"></td>
<td><a href="uzytkownicy.php?m=rejestracja">Rejestracja</a></td>
</tr>
</table></form>
<?
}
// formularz rejestracji
function dodaj_form()
{
?>
<form method=post action="rejestracja.php">
<TABLE ALIGN="center">
<tr>
<td colspan=2><H1>Dodanie nowego użytkownika</H1><TD></TD></td>
<tr>
<td>Login:</td>
<td><input type=text name=login></td></tr>
<tr>
<td>Numer Gadu-Gadu:</td>
<td><input type=text name=gg></td></tr>
<tr>
<td>Skšd jesteœ:</td>
<td><input type=tekst name=skad></td></tr>
<tr>
<td>Płeć:</td>
<td>Mężczyzna: <input type="radio" value="m" checked name="plec"> Kobieta: <input type="radio" name="plec" value="k"></td></tr>
<tr>
<td>Hasło:</td>
<td><input type=password name=haslo></td></tr>
<tr>
<td>Powtórz hasło:</td>
<td><input type=password name=haslo2></td></tr>
<tr><td colspan=2><h4>Hasło powinno składać się z nie więcej niż 12 znaków.</H4></td></TR>
<tr>
<td align=center colspan=2>
<input type=submit value="Zapisz"></td></TABLE></form>
<?
html_url("index.php", "Logowanie");
}
//dodajemy użytkownika do bazy danych
function dodaj_usera($login, $gg, $skad, $plec, $haslo, $haslo2)
{
if ($haslo != $haslo2)
{
echo "<H3 ALIGN=center>Hasła nie są takie same.</h3>";
dodaj_form();
exit;
}
$polaczenie= pol_mysql();
// sprawdzenie, czy login nie powtarza się
$wynik = mysql_query("select * from users where login='$login'");
if(!$wynik)
return "Problem: zapytanie z bazy nieudane";
if (mysql_num_rows($wynik)>0)
{
echo "<H3 ALIGN=center>Użytkownik o takiej nazwie jest już zarejestrowany, spróbuj inny login</h3>";
dodaj_form();
}
$czas = date("j-m-Y-G:i:s");
// umieszczenie usera w bazie danych
$zapytanie = "insert into users values
('', '$login', '$gg', '$skad', '$plec', '$haslo', '$czas')";
$wynik=mysql_query($zapytanie);
if($wynik)
{
echo "<H3 ALIGN=center>Rejestracja zakończona pomyœlnie</h3>";
echo "<H4 ALIGN=center><a href='index.php'>Strona Logowania</a></h4>";
exit;
}
return true;
}
function logowanie($login, $haslo)
{
$polaczenie= pol_mysql();
// sprawdzenie, czy login nie powtarza się
$wynik = mysql_query("select * from users where login='$login'");
if(!$wynik)
return "Problem: zapytanie z bazy nieudane";
if (mysql_num_rows($wynik)== 0)
{
echo "<H3 ALIGN=center>Niema takiego użytkownika w bazie danych</h3>";
wy_form_logo();
exit;
}
$tab_user = wynik_db_do_tablicy($wynik);
if ($tab_user[0]['haslo'] != $haslo)
{
echo "<H3 ALIGN=center>Niepoprawne hasło</h3>";
wy_form_logo();
exit;
}
$user = $login;
//rejestrowanie danych sesji
session_register("user");
echo "zalogowany jako: <b>" .$user."</b>, jesteœ z <b>".$tab_user[0]['skad']."</b>, data twojej rejestracji to: <b>".$tab_user[0]['data']."</b><br>";
echo "<a href=omnie.php>Strona o mnie</a>";
}
?>
Tak więc zakończyliśmy pracę nad najważniejszym plikiem.
Kolejny potrzebny dla nas plik to index.php, pokazujący formularz logowania.
index.php
Kod:
<?php
//wczytanie pliku z funkcjami
require_once ("funkcje.php");
//rozpoczęcie sesji
session_start();
session_cache_limiter('nocache');
//formularz logowania
wy_form_logo();
?>
omnie.php może posłużyć jako menu, bądź cokolwiek co przyjdzie Ci na myśl.
omnie.php
Kod:
<?php
//wczytanie pliku z funkcjami
require_once ("funkcje.php");
//rozpoczęcie sesji
session_start();
session_cache_limiter('nocache');
//kod PHP
if (session_is_registered("user"))
{
echo "Może posłużyć jako menu, czy coś innego ;)";
echo "<br><A HREF=wyloguj.php>Wyloguj</a>";
}
else
{
echo "<H3 ALIGN=center>Nie masz uprawnień do korzystania z tej strony! Wróc i się zaloguj</h3>";
html_url("index.php", "Logowanie");
exit;
}
?>
Do omówienia zostały nam już tylko 3 pliki: rejestracja.php, uzytkownicy.php, wyloguj.php. Mam nadzieję, że wyrobimy się z tym do dziś :). Heh, żeby nie marnować cennego czasu zacznę od rejestracja.php:
Kod:
<?
//wczytanie pliku z funkcjami
require_once ("funkcje.php");
//rozpoczęcie sesji
session_start();
session_cache_limiter('nocache');
//kod PHP
if ($login && $plec && $haslo)
$wynik = dodaj_usera($login, $gg, $skad, $plec, $haslo, $haslo2);
else
exit;
?>
uzytkownicy.php:
Kod:
<?
//wczytanie pliku z funkcjami
require_once ("funkcje.php");
//rozpoczęcie sesji
session_start();
session_cache_limiter('nocache');
//kod PHP
if ($_GET['m'] == 'rejestracja')
dodaj_form();
if ($_GET['m'] == 'log')
logowanie($login, $haslo);
?>
Tak, został nam już tylko jeden plik wyloguj.php. Będzie on nas wylogowywał z menu ;):
Kod:
<?
session_start();
session_cache_limiter('nocache');
//wczytanie pliku z funkcjami
require_once ("funkcje.php");
//sprawdzenie użytkownika za pomocą sesji i ewentualne jej wyrejestrowanie.
if (session_is_registered("user"))
{
session_unregister("user");
echo "<H3 ALIGN=center>Zostałeśœ wylogowany!</h3>";
html_url("index.php", "Logowanie");
}
else
{
echo "<H3 ALIGN=center>Nie byłeśœ zalogowany!</h3>";
html_url("index.php", "Logowanie");
}
//zakończenie wyrejestrowania
?>
Mój artykuł dobiegł końca. Mam nadzieję, że nie wypadł najgorzej, a jeśli nawet to przymnijcie na mnie oczy, bo jest to mój pierwszy artykuł :). W razie jakichkolwiek uwag, czy problemów proszę pisać do mnie na maila:
rav1k@o2.pl
Bądź na gg [nie gwarantuję, że będę odpisywał, gdyż rzadko jestem]:
1943497
No to tyle...
Pozdrawiam rav1k