Здравейте 
Пиша един малък проект и имам следните файлове:
user.php
Session.php
index.php
Идеята е простичка. Въвеждат се данни проверяват се в authenticate метода, той пък връща обект, ако го има обекта, в session прави променливата, че е логнат и после пренасочва към index.php. Знам, че паролата не се хешира с умисъл засега е така. Проблемът е, че не пренасочва към index.php, а връща пак в login.php. Защо става така? Благодаря предварително
Пиша един малък проект и имам следните файлове:
PHP:
<?php
require_once('../../includes/initialize.php');
ob_start();
if($session->is_logged_in()) {
redirect_to("index.php");
}
if(isset($_POST['submit'])) {
$username = trim($_POST['username']);
$password= trim($_POST['password']);
//check database to see if username/password exist
$found_user = User::authenticate($username, $password);
if ($found_user) {
$session->login($found_user);
echo "tyk sym";
// log_action('login', "{$found_user->username} logged in");
redirect_to("index.php");
} else {
//username/password combo was not found in the database
$message = "Username/password combination incorrect.";
}
} else { //Form has not been submitted
$username = "";
$password = "";
}
?>
<html>
<head>
<title>Photo Gallery</title>
<link href="../stylesheets/main.css" media="all" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="header">
<h1>Photo Gallery</h1>
</div>
<div id="main">
<h2>Staff login</h2>
<?php echo output_message($message); ?>
<form action="login.php" method="post">
<table>
<tr>
<td>Username:</td>
<td>
<input type="text" name="username" maxlength="30" value="<?php echo htmlentities($username); ?>"
</td>
</tr>
<tr>
<td>Password: </td>
<td>
<input type="password" name="password" maxlength="30"
value="<?php echo htmlentities($password); ?>" />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="submit" value="Login" />
</td>
</tr>
</table>
</form>
</div>
<div id="footer">Copyright <?php echo date("Y", time())?> Lyubomir Filipov</div>
</body>
</html>
<?php if(isset($database)) { $database->close_connection();} ?>
user.php
PHP:
public static function authenticate($username="", $password="") {
global $database;
$username = $database->escape_value($username);
$password = $database->escape_value($password);
$sql = "SELECT * FROM users";
$sql .= " WHERE username = '$username'";
$sql .= " AND password='$password'";
$sql .= " LIMIT 1";
$result_array = self::find_by_sql($sql);
return !empty($result_array) ? array_shift($result_array) : false;
}
Session.php
PHP:
<?php
class Session {
private $logged_in = false;
public $user_id;
function __construct() {
session_start();
$this->check_login();
if ($this->logged_in) {
$this->logged_in = false;
//actions to take right away
} else {
//actions to take right away
}
}
public function is_logged_in() {
/* echo "wtf is the problem";
if ($logged_in) {
echo "IT IS TRUE";
} else {
echo "IT IS FALSE";
}*/
return $this->logged_in;
}
public function login($user) {
//database should find the user
if ($user) {
echo "tyk sme session.php";
$this->user_id = $_SESSION['user_id'] = $user->id;
$this->logged_in = true;
}
}
public function logout() {
unset($_SESSION['user_id']);
unset($this->user_id);
$this->logged_in = false;
}
private function check_login() {
if (isset($_SESSION)) {
$this->user_id = $_SESSION['user_id'];
$this->logged_in = true;
} else {
unset($this->user_id);
$this->logged_in = false;
}
}
}
$session = new Session();
?>
index.php
PHP:
<?php
require_once('../../includes/initialize.php');
ob_start();
//echo $session->is_logged_in();
var_dump($session->is_logged_in());
$bool = $session->is_logged_in();
echo $bool;
if (!$session->is_logged_in()) {
redirect_to("login.php");
}
if ($session->is_logged_in()) {
echo "A TUK KAZVA, 4E E VQRNO";
}
?>
<?php include_layout_template('admin_header.php'); ?>
<h2>Menu</h2>
</div>
<?php include_layout_template('admin_footer.php'); ?>
Идеята е простичка. Въвеждат се данни проверяват се в authenticate метода, той пък връща обект, ако го има обекта, в session прави променливата, че е логнат и после пренасочва към index.php. Знам, че паролата не се хешира с умисъл засега е така. Проблемът е, че не пренасочва към index.php, а връща пак в login.php. Защо става така? Благодаря предварително