Witam,
Wzialem sie ostatnio za skrypt logowania na moją stronke, jednak nie wiem czy jest on dostatecznie bezpieczny(nie znam sie na exploitach itp, wiec nie wiem jak go zlamac:P).
Kolejnym problemem jest dodanie pola "Zapamiętaj mnie", zeby informacje ze ktos jest zalogowany byly przechowywane nawet po restarcie kompa itd.
Nie znam sie na sesjach, wiedze bralem z paru tutoraiali, i wyszlo cos takiego.
BTW. Jak zrobic tak fajnie, ze identyfikator sesji jest przekazywany wraz z adrsem strony(metoda GET), czy cookies są wystarczająco bezpieczne?
Skrypt przechowuje informacje w MySql, tablica wyglada tak(export z phpmyadmin)
CREATE TABLE `users` (
`nr` int(20) NOT NULL AUTO_INCREMENT,
`login` varchar(20) NOT NULL DEFAULT '',
`plec` varchar(20) NOT NULL DEFAULT '',
`haslo` varchar(200) NOT NULL DEFAULT '',
`data` date NOT NULL DEFAULT '0000-00-00',
`email` varchar(50) NOT NULL DEFAULT '',
`imie` varchar(50) NOT NULL DEFAULT '',
`nazwisko` varchar(50) NOT NULL DEFAULT '',
`ip` varchar(15) NOT NULL DEFAULT '',
`user_level` smallint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`nr`)
) TYPE=MyISAM AUTO_INCREMENT=50 ;
Skrypt rejestracji (index.php?mode=register)
<?php
function verifyEmail($email) {
return ereg("^[a-z0-9_.-]+@([a-z0-9_-]+.)+[a-z]{2,}$", $email); }
if (isset($_POST['plec']) AND
isset($_POST['uname']) AND
isset($_POST['passwd'])AND
isset($_POST['passwd1']) AND
isset($_POST['email'])AND
isset($_POST['imie'])AND
isset($_POST['nazwisko'])AND
isset($_POST['ip']) ) {
$uname = $_POST['uname'];
$email = $_POST['email'];
$imie = $_POST['imie'];
$nazwisko = $_POST['nazwisko'];
$ip = $_POST['ip'];
$passwd = $_POST['passwd'];
$passwd1 = $_POST['passwd1'];
$plec = $_POST['plec'];
if ($uname && $passwd && $passwd1 && $email && $imie && $nazwisko && $ip)
{
$aa = mysql_query("SELECT * FROM users where login='$uname'"); if ($znal==0){
if ($passwd == $passwd1)
{
if (verifyEmail($email)==true){
$res = mysql_query("INSERT INTO `users` (`login`,`haslo`,`email`, `imie`,`nazwisko`, `data`, `ip`, `plec`) VALUES ('$uname', '$passwd', '$email', '$imie', '$nazwisko', '$data', '$ip', '$plec')"); echo "<DIV id=opisy align=center>Dziękujemy za zarejestrowanie"; echo "<P><A HREF=index.php>Kliknij tutaj</A> aby powrócić do strony głównej.</p></div>"; }
else {
echo "<DIV id=opisy align=center>Błędny e-mail."; echo "<P><A HREF=$PHP_SELF?mode=register>Kliknij tutaj</A> aby powrócić.</p></div>";} }
}
else
{
echo "<DIV id=opisy align=center>Taki uzytkownik już istnieje."; echo "<P><A HREF=$PHP_SELF?mode=register>Kliknij tutaj</A> aby powrócić.</p></div>"; }
}
else
{
echo "<DIV id=opisy align=center>Twoje hasła się nie pokrywają"; echo "<P><A HREF=$PHP_SELF?mode=register>Kliknij tutaj</A> aby powrócić.</p></div>"; }
}
else {
<div id="belka">Rejestracja</div>
<br>
<FORM ACTION="" METHOD=post>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="42%" align="right"><span id="opisy">Login:</span></td>
<td width="58%"><span id="formularz"> <input type="text" name="uname" size="20"></span></td>
</tr>
<tr>
<td width="42%" align="right"><span id="opisy">Hasło:</span></td>
<td width="58%"><span id="formularz"><input type="password" name="passwd" size="20"></span></td>
</tr>
<tr>
<td width="42%" align="right"><span id="opisy">Ponownie Hasło:</span></td>
<td width="58%"><span id="formularz"> <input type="password" name="passwd1" size="20"></span></td>
</tr>
<tr>
<td width="42%" align="right"><span id="opisy">Imię:</span></td>
<td width="58%"><span id="formularz"> <input type="text" name="imie" size="20"></span></td>
</tr>
<tr>
<td width="42%" align="right"><span id="opisy">Nazwisko:</span></td>
<td width="58%"><span id="formularz"> <input type="text" name="nazwisko" size="20"></span></td>
</tr>
<tr>
<td width="42%" align="right"><span id="opisy">Płeć:</span></td>
<td width="58%"><span id="formularz">
M
<input name="plec" value="M" type="radio">
K
<input name="plec" value="K" type="radio">
</td>
</tr>
<tr>
<td width="42%" align="right"><span id="opisy">E-Mail:</span></td>
<td width="58%"> <span id="formularz"><input type="text" name="email" size="20"></span></span></td>
<input type="hidden" name="ip" size="20" value="$REMOTE_ADDR">
</td></tr></table><center>
<INPUT TYPE=image SRC=grafika/wyslij.gif BORDER=0 name=submit>
</form><BR><span id="opis_glowny" stle="font-size:15pt">Należy wypełnić wszystkie pola !</span>
END;
}
?>
Forma logowania z skryptem(index.php?mode=login)
<?php
if (isset($_POST['uname']) AND
isset($_POST['passwd'])) {
$login = $_POST['uname'];
$haslo = $_POST['passwd'];
$odp = mysql_query("SELECT * FROM users where login='$login'"); if ($razem!=0)
{
if (md5($haslo)==$wynik['haslo']) {
$email = $wynik['email'];
$plec = $wynik['plec'];
$imie = $wynik['imie'];
$nazwisko = $wynik['nazwisko'];
$user_level = $wynik['user_level'];
echo "<DIV id=opisy align=center>Haslo poprawne"; echo "<P><A HREF=index.php>Kliknij tutaj</A> aby powrócić do strony głównej.</p></div>"; }
else
}
else
echo 'Nie ma takiego uzytkownika'; }
else
{
<div id="belka">Logowanie</div>
<br>
<FORM ACTION="" METHOD=post>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="42%" align="right"><span id="opisy">Login:</span></td>
<td width="58%"><span id="formularz"> <input type="text" name="uname" size="20"></span></td>
</tr>
<tr>
<td width="42%" align="right"><span id="opisy">Hasło:</span></td>
<td width="58%"><span id="formularz"><input type="password" name="passwd" size="20"></span></td>
</tr>
<input type="hidden" name="ip" size="20" value="$REMOTE_ADDR">
</td></tr></table><center>
<INPUT TYPE=image SRC=grafika/wyslij.gif BORDER=0 name=submit>
</form>
END;
}
?>
a wylogowanie to(index.php?mode=logout)
<?php
echo '<DIV id=opisy align=center>Wylogowano ' . $login . '</div>'; ?>
To wszystko, przepraszam ze moze troche zamotałem, ale mam nadzieje ze zrozumieliscie:>
Ten post edytował Axadiw 6.07.2006, 10:56:54