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"> <fieldset> <div> <input type="text" name="login"/> </div> <div> <input type="password" name="password"/> </div> <input type="image" src="../images/button_login.png" alt="Zaluguj się" name="login" id="login"> </fieldset> </form> <?php } ?> </div> </div> </body> </html>
<?php require 'header.php'; require_once '../function.php'; $user = login($_POST['login'], $_POST['password']); if($user){ $_SESSION['logged'] = true; $_SESSION['user'] = $user; $_SESSION['browser'] = $_SERVER['HTTP_USER_AGENT']; }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()