Это мой код для входа. когда я пытаюсь войти в систему в первый раз, он передает пустое значение session.but, когда я снова вернусь на страницу входа в систему и запишу это время успешно. Я не понял, что случилось с этим кодом? PLZ помочь мне.
session_unset();
session_start();
Global $i;
$root = $_SERVER['DOCUMENT_ROOT'];
include($root."/signinConfig.php");
function redirect($redirect=null)
{
header("Location : $redirect");
}
if (isset($_POST['submit']))
{
$check = mysql_query("SELECT * FROM user_reg WHERE `username` = '".$_POST['username']."'")or die("Dont Dare To Hack");
$check2 = mysql_numrows($check);
if ($check2 == 0)
{
die('That user does not exist in our database. <a href="../Signup/registration.php" style="text-decoration: none;">Click Here To Register</a>');
}
else
{
$i=0;
$password = mysql_result($check,$i,"password");
$_POST['pass'] = stripslashes($_POST['pass']);
$pass = md5($_POST['pass']);
if ($pass == $password)
{
$_SESSION['username']= mysql_result($check,$i,"username");
mysql_close();
redirect("/User_CP/user_cp.php");
}
else
{
die('Incorrect password, please try again.');
}
}
}//after this html code take place
в файле конфигурации я хранит код подключения к базе данных и код завершения сеанса. здесь
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1000)) { // last request was more than 30 minates ago
session_destroy(); // destroy session data in storage
session_unset(); // unset $_SESSION variable for the runtime
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
Хорошо, прежде всего, ваша функция redirect
отсутствует exit();
после header
function redirect($redirect=null)
{
header("Location : $redirect");
exit();
}
Проблема в том, что если вы не дадите exit, код будет продолжать работать после функции redirect
.
например, здесь вы
redirect("/User_CP/user_cp.php");
И он перенаправит страницу, но php все равно будет запущен, и если после этой строки у вас будет функция session_destroy()
или session_unset()
, она будет завершена, и сеанс будет истекать.
Также возможно, что даже если сеанс не уничтожается, он может вызвать некоторые конфликты.
Попробуйте exit()
и сообщите мне.
mysql_real_escape_string(..)