Mam dziwny problem. Wszystko niby chodzi, sprawdza warunek czy z nazwa i hasło z bazy zgadzają z tymi z formularza, ale zamiast przenosić headerem do strony chronionej zostaje w pliku z obsługą logowania. Co jest nie tak z tym? Powiem jeszcze jedno że jak usunę z zapytania WHERE itd. to loguje użytkownika o ostatnim id w bazie, ale to chyba normalne bo nie ma konkretnego zapytania. Jakby co korzystam z OPD żeby cache'ować zapytania.
<?php
require ("opd.class.php");
class user {
public $user;
private $pass;
public function checkuser() {
$pdo = opdClass
::create(array( 'dsn'=> 'mysql:host=localhost;dbname=oop',
'user'=> 'root',
'password'=> 'mentormiszcz1e',
'cache'=> 'cache/opd/',
'debugConsole'=> true));
$pdo-> setCacheExpire(60, 'trials');
$row= $pdo-> query ("SELECT name,password FROM `trials` WHERE name= '".$_POST['user']."' AND password= '".$_POST['pass']."'");
while ($line= $row-> fetch()) {
$this-> user= $line['name'];
$this-> pass= $line['password'];
if ($this->user== $_POST['user'] && $this-> pass
== md5($_POST['pass'])) { $_SESSION['user']= $_POST['user'];
header ("Location: protect.php"); }
else {
header ("Location: log.html"); }
} // end while
$row-> closeCursor();
} // end function
}
$user= new user;
$user-> checkuser();
?>
<?php
if (isset($_SESSION['user'])) { echo 'Yo, ' . $_SESSION['user'] . '<a href="logout.php">Sign out</a>'; }
else {
header ("Location: log.html"); }
?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us" lang="en-us">
<form action="class.php" method="post"> <input type="text" name="user" /> <input type="password" name="pass" /> <input type="submit" value="Sign in" />