У меня проблема с обработкой сеанса php, которую я не могу объяснить себе. Я изучаю php с нуля, и я не могу понять, как вести сеанс в прямом эфире:Обработка сессии в PHP 5
Это моя индексная страница, где пользователь может войти в систему или зарегистрироваться в базе данных, посетив нужную страницу, а затем вернуться, чтобы увидеть, если он вошел в систему:
Код:
Index
<?php session_start(); ?>
<a href="register.php" target="_self"> Register </a>
<a href="login.php" target="_self"> Login </a>
<?php
if(isset($_SESSION['login']))
{
echo "Logged as: ".$_SESSION['nlogin'];
?>
<form method="post" action="<?php unset($_SESSION['login']) ?>">
<input type="button" name="logOut" value="LogOut" />
</form>
<?php
}
else
{
echo "Please Register or Login";
}
?>
на самом деле эта работа, потому что, когда я вернулся из login.php он говорит, «Записан как: Admin»
Но когда я нажимаю на ссылку, чтобы получить страницу входа в систему, или зарегистрируйтесь страницы снова с индексной страницы, я должен получить одно и то же сообщение «Записан как ...», но вместо этого сеанс закрывается. :(
вот login.php:
<?php
session_start();
include "dbConnect.php";
if(isset($_SESSION['login']))
{
echo "Logged as: ".$_SESSION['nlogin']; // IT NEVER SHOW THIS MESSAGE
}
if(isset($_POST['submit']) &&(trim($_POST['submit']) == "Login"))
{
if(!isset($_POST['user']) || $_POST['user']=="")
{
echo "Attenzione inserire l'username.";
}
elseif(!isset($_POST['pwd'])||$_POST['pwd']=="")
{
echo "Attenzione inserire la password.";
}
else
{
$u = trim(filter_var($_POST['user'], FILTER_SANITIZE_STRING));
$u = str_replace(" ","_",$u);
$p = trim(filter_var($_POST['pwd'], FILTER_SANITIZE_STRING));
$p = sha1($p);
$istance = new dbHandle;
$istance->connect();
$data = $istance->query("SELECT * FROM login WHERE username_login = '$u' AND password_login = '$p'");
if(mysql_num_rows($data) == 0)
{
echo "Failed";
echo "<a href='index.php' target='_self'> Go Back </a>";
}
else
{
echo "Logged";
$res = $istance->getdata($data);
$_SESSION['login'] = $res->id_login;
$_SESSION['nlogin'] = $res->username_login;
echo "<a href='index.php' target='_self'> Go Back </a>";
}
}
}
else
{
?>
Login
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
...
<input name="user" type="text" size="20" required="required"/>
...
<input name="pwd" type="password" size="20" required="required"/>
...
<input type="submit" name="submit" value="Login"/>
</form>
<form method="post" action="<?php unset($_SESSION['login']) ?>">
<input type="button" name="logOut" value="LogOut" />
</form>
<?php
}
$istance->disconnect();
?>
Когда я вернусь, используя ссылку выше «Go Back» на индексной странице, он показывает, как ... Записан , но когда я вернусь сюда снова , это не делает.
Так я предполагаю, что мой сеанс были уничтожены автоматически? но почему?
Спасибо, я ценю вашу помощь.
Я забыл сказать, т шляпа php.ini имеет
session.cookie_lifetime
установлен в "0"
Благодаря
Спасибо всем, я понял, что форма action
'form method =" post "action =" Php unset ($ _ SESSION ['login']) .. 'давали Проблема заключается в том, что интерпретатор PHP использовал для отмены значения «login», хранящегося в массиве сеансов каждый раз. Большое спасибо! Я злюсь! – Ivan
Приятно слышать. Вы знаете, что вы должны принять один из ответов, и вы можете поддержать ответы, которые вам нравятся Это будет мотивировать пользователей, чтобы помочь вам и другим;) – PiTheNumber
Я не могу упрекать прямо сейчас, так как больше репутации, все еще далеко впереди !, но спасибо, в любом случае! – Ivan