pomocou udajov, ktore som nasiel na tejto stranke:
Kód: Vybrať všetko
http://www.devshed.com/c/a/PHP/Creating-a-Secure-PHP-Login-Script/ale uz vytvorene dielo nedokazem spustit.
pri skusobnom prihlaseni mi vypise chybu, pretoze som zle zostavil kod, alebo sa ho snazim chybne pouzit
tu je vypis kodu na ktory odosielam prihlasovanie udaje:
Kód: Vybrať všetko
<?php
class User
{
var $db = null; // PEAR::DB pointer
var $failed = false; // failed login attempt
var $date; // current date GMT
var $id = 0; // the current user's id
function User(&$db)
{
$this->db = $db;
$this->date = $GLOBALS['date'];
if ($_SESSION['logged'])
{
$this->_checkSession();
}
elseif ( isset($_COOKIE['imagesferksLogin']) )
{
$this->_checkRemembered($_COOKIE['imagesferksLogin']);
}
}
function &db_connect()
{
require_once 'DB.php';
PEAR::setErrorHandling(PEAR_ERROR_DIE);
$db_host = 'localhost';
$db_user = '????';
$db_pass = '????';
$db_name = '????';
$dsn = "mysql://$db_user:$db_pass@unix+$db_host/$db_name";
$db = DB::connect($dsn);
$db->setFetchMode(DB_FETCHMODE_OBJECT);
return $db;
}
function session_defaults()
{
$_SESSION['logged'] = false;
$_SESSION['uid'] = 0;
$_SESSION['username'] = '';
$_SESSION['cookie'] = 0;
$_SESSION['remember'] = false;
}
function _checkLogin($username, $password, $remember)
{
$username = $this->db->quote($username);
$password = $this->db->quote(md5($password));
$sql = "SELECT * FROM member WHERE " .
"username = $username AND " .
"password = $password";
$result = $this->db->getRow($sql);
if ( is_object($result) )
{
$this->_setSession($result, $remember);
return true;
}
else
{
$this->failed = true;
$this->_logout();
return false;
}
}
function _setSession(&$values, $remember, $init = true) {
$this->id = $values->id;
$_SESSION['uid'] = $this->id;
$_SESSION['username'] = htmlspecialchars($values->username);
$_SESSION['cookie'] = $values->cookie;
$_SESSION['logged'] = true;
if ($remember) {
$this->updateCookie($values->cookie, true);
}
if ($init) {
$session = $this->db->quote(session_id());
$ip = $this->db->quote($_SERVER['REMOTE_ADDR']);
$sql = "UPDATE member SET session = $session, ip = $ip WHERE " .
"id = $this->id";
$this->db->query($sql);
}
}
function updateCookie($cookie, $save) {
$_SESSION['cookie'] = $cookie;
if ($save) {
$cookie = serialize(array($_SESSION['username'], $cookie) );
set_cookie('imagesferksLogin', $cookie, time() + 31104000, '/directory/');
}
}
function _checkRemembered($cookie) {
list($username, $cookie) = @unserialize($cookie);
if (!$username or !$cookie) return;
$username = $this->db->quote($username);
$cookie = $this->db->quote($cookie);
$sql = "SELECT * FROM member WHERE " .
"(username = $username) AND (cookie = $cookie)";
$result = $this->db->getRow($sql);
if (is_object($result) ) {
$this->_setSession($result, true);
}
}
function _checkSession() {
$username = $this->db->quote($_SESSION['username']);
$cookie = $this->db->quote($_SESSION['cookie']);
$session = $this->db->quote(session_id());
$ip = $this->db->quote($_SERVER['REMOTE_ADDR']);
$sql = "SELECT * FROM member WHERE " .
"(username = $username) AND (cookie = $cookie) AND " .
"(session = $session) AND (ip = $ip)";
$result = $this->db->getRow($sql);
if (is_object($result) ) {
$this->_setSession($result, false, false);
} else {
$this->_logout();
}
}
}
$_POST['login'] = $login;
$_POST['pass'] = $pass;
if (User::_checkLogin($login,$pass,$rem) == false)
{
echo "Zly login";
}
else
echo "Prihlaseny";
?>Kód: Vybrať všetko
if (User::_checkLogin($login,$pass,$rem) == false)
{
echo "Zly login";
}
else
echo "Prihlaseny";ak sa niekto na to pozrie a najde chybu, tak mu budem velmi vdacny
// k databaze mam vsetko spravne, len tu som to odstranil