我有一個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回說,「登錄爲:管理員」
但當我點擊鏈接獲取登錄頁面,或註冊頁面再次從索引頁面,我應該得到相同的消息,「記錄爲...」,但該會話似乎被關閉,而不是。 :(
這裏的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();
?>
我回來的時候使用上述「返回」到索引頁面的鏈接,它顯示登錄爲... 但是當我回到這裏再次,事實並非如此。
所以我想我會被自動銷燬?但是爲什麼呢?
謝謝,我感謝您的幫助。
我忘了說ŧ帽子的php.ini有
session.cookie_lifetime
設置爲 「0」
感謝
謝謝大家,我已經知道了形式行動
'form method =「post」action =「<?php unset($ _ SESSION ['login'])..'問題:PHP解釋器每次都會將會話數組中存儲的「登錄」值取消設置,非常感謝!我生氣了! – Ivan
聽起來很高興,你知道你應該接受其中一個答案,並且你可以提出你喜歡的答案。這會激勵用戶幫助你和其他人;) – PiTheNumber
我現在不能動起來,因爲更多的聲譽,還有很長的路要走!但是,無論如何,謝謝! – Ivan