Witam, mam problem ze skryptem logowania.
W bazie mam użytkownika test, hasło: test. Podaje poprawne dane, ale niestety system zwraca informacje, że dane są błędne. Oto kod:
<?php require_once 'header.php'; ?>
<div id="container_background"> <div id="container_content"> <?php
if((isset($_SESSION['logged'])) && logged($_SESSION['logged'], $_SESSION['browser'])){
echo 'Zostałeś poprawnie zalogowany';
//session_destroy();
}else{?>
<form id="login_form" action="login.php" method="POSt"> <input type="text" name="login"/> <input type="password" name="password"/> <input type="image" src="../images/button_login.png" alt="Zaluguj się" name="login" id="login"> <?php } ?>
<?php
require 'header.php';
require_once '../function.php';
if(isset($_POST['login_x'])){ $user = login($_POST['login'], $_POST['password']);
if($user){
$_SESSION['logged'] = true;
$_SESSION['user'] = $user;
$_SESSION['browser'] = $_SERVER['HTTP_USER_AGENT'];
header('Location: '.$_SERVER['HTTP_REFERER']); }else{?>
<p class="info">Wprowadziłeś błędne dane. Spróbuj raz jeszcze. <a href="
<?php echo $_SERVER['HTTP_REFERER'];?>"><<< Wróć</a>.</p>
<?php }
}
?>
function db_connect(){
try{
$db = new PDO('mysql:host='.DB_HOST.';db_name:'.DB_NAME, DB_USER, DB_PASS);
return $db;
}catch(PDOException $e){
}
}//db_connect
function login($login, $password){
$db = db_connect();
$stmt = $db->prepare('SELECT login FROM users WHERE login = :login AND password = :password');
$stmt->bindValue(':login', $login);
$stmt->bindValue(':password', sha1($password));
$stmt->execute();
$user = $stmt->fetch();
if($user){
return $user;
}
return false;
}// login();
function logged($login, $browser){
if($login && $browser == $_SERVER['HTTP_USER_AGENT']){
return true;
}
return false;
}
Męczę się z tym już trochę, zmieniłem na mysqli i o dziwo działało, ale chciałbym w PDO, ale niestety jest jakiś problem - jakieś sugestie?
*w pliku header znajduje się session_start()
Ten post edytował PawelBah 28.11.2010, 15:56:22