Witam
Napisalem pewien skrypt logowania oparty o bibliotekę PDO. Ale niestety gdy załączam go do mojej strony, i próbuję się zalogować wyskakuje błąd windowsa i apache siada...
Tu moja prośba żeby ktoś sprawdził kod i napisał czy wszystko powinno działać czy nie.
PS: skrypt sprawdzałem na dwóch serwerach i zawszę ten sam bieg wydarzeń (apache off).
<?php
class logowanie {
//pola
private $cookie;
public $zalogowany;
//metody
public function __construct($login, $haslo, $zapamietaj)
{
if (isset($_COOKIE[securityhash
('logowanie')]) and
$this -> zalogowany != 1
) {
$this -> cookie();
}
if ($this -> zalogowany != 1)
{
$this -> autoryzacja($login, $haslo, $zapamietaj);
}
}
private function cookie()
{
$stmt = PDOquery('SELECT login, haslo FROM users');
foreach($stmt as $wynik)
{
$dane = secruityhash('jump'.$wynik['login'].$wynik['haslo'].'maslo');
if ($dane == $_COOKIE[securityhash('logowanie')])
{
$this -> cookie = 1;
}
}
$stmt -> closeCursor();
}
private function autoryzacja($login, $haslo, $zapamietaj)
{
if($this -> cookie == 1)
{
$zaloguj = 1;
$metoda = 'cookie';
}
elseif(isset($_SESSION['login']) and
isset($_SESSION['haslo'])) {
$login_use = $_SESSION['login'];
$haslo_use = $_SESSION['haslo'];
$metoda = 'session';
}
{
$login_use = securityhash($login);
$haslo_use = securityhash($haslo);
$metoda = 'post';
}
{
if($metoda == 'cookie')
{
$this -> zalogowany = 1;
}
else
{
$stmt = PDOquery(\"SELECT * FROM users where `login` = '$login_use', `haslo` = '$haslo_use'\");
foreach($stmt as $wynik)
{
$_SESSION['zalogowany'] = 1;
$_SESSION['login'] = $login_use;
$_SESSION['haslo'] = $haslo_use;
$_SESSION['nick'] = $wynik['nick'];
$this -> zalogowany = 1;
}
$stmt -> closeCursor();
}
}
}
}
?>
I dodatkowo klasa security:
<?php
class security
{
public static function hash
($hash) {
$probny = sha1($hash);
$probny1 = substr($probny,0
,4
); $probny2 = substr($probny,-4
); $hash = md5(sha1
($probny1.md5($hash).$probny2));
return $hash ;
}
}
?>
Edit: Skrypt sprawdzany na WAMP i XAMPP
Ten post edytował qba10 9.09.2008, 18:53:48