我正在使用PHP在這個網頁上工作。我使用easyphp版本進行本地測試:5.3.9 我做了一個常用登錄,註銷功能。當我在本地測試時,就像預期的那樣工作。但是當我通過FTP將它上傳到godaddy託管服務時,它開始做些奇怪的事情。PHP奇怪,本地工作,但服務器沒有
- 會話變量不能正常工作,有時會工作,有時不起作用! 登錄連接和數據庫驗證工作正常!但是從另一個失敗的文件讀取SESSION變量時。
它可能是什麼? PHP版本?但我只是使用簡單的$ _SESSION ['name']變量。錯誤?請幫忙!
這是我已經嘗試過:
- 使用其他瀏覽器。
- 重新上載源(多次)
- 清除緩存,Cookie等。
- 測試一步一步,但就像我說的,它工作正常本地託管的網頁。
最後一件可能很重要的事情是數據庫託管在服務器上(這不是我的本地pc ofc)而且這個數據庫的連接在兩種情況下都工作正常。
這是我的代碼:
landing.php(如果你想知道XD):
<div class="xxx">Log in</div>
<div class="xxx">
<form class="xxxx" method="post" action="Bean.php">
<input type="hidden" value="login" name="oper">
<input type="text" placeholder="E-mail" name="mail"/>
<input type="password" placeholder="Password" name="pass"/>
<input type="submit" value="LOG IN!" />
</form>
</div>
Bean.php
if (!isset ($_COOKIE[ini_get('name')])) {
session_set_cookie_params(0, '/');
session_name('name');
session_start();
}
if($oper=="login")
{
$user=$cws->VerifyUser($_POST['mail'],$_POST['pass']);//$cws is a class that connects to the server with the db via WS
if(strlen($user->body->mail)>5)//this is because if the user is not found it returns blank or '@.'
{
$_SESSION['session_mail']=$user->body->mail;
$_SESSION['session_name']=$user->body->name;
$_SESSION['session_miniPicture']=$user->body->miniPicture;
$_SESSION['session_on']=true;
//This are the variables I can't read later!
echo("<script type=\"text/javascript\" > location.replace(\"../home.php\");
</script>");
}
else{
echo("<script type=\"text/javascript\" >
alert(\"E-mail or password incorrect \"); location.replace(\"../landing.php\");
</script>");
}
}
home.php:
if (!isset ($_COOKIE[ini_get('name')])) {
session_set_cookie_params(0, '/');
session_name('name');
session_start();
}
//In this check, the variable $_SESSION['session_on'] is NOT set! WHY???
if(!isset($_SESSION['session_on']) || $_SESSION['session_on']==false)
{
echo("<script type=\"text/javascript\" >
location.replace(\"landing.php\");
</script>");
}
echo ("mail: ".$_SESSION['session_mail']."<br/>"); // for debug
echo ("name: ".$_SESSION['session_name']."<br/>"); // for debug
echo ("on: ".$_SESSION['session_on']."<br/>"); // for debug
Welcome <?php echo $_SESSION['session_name']; ?> - <a href="signout.php">Sign out</a>
signout.php:
if (!isset ($_COOKIE[ini_get('name')])) {
session_set_cookie_params(0, '/');
session_name('name');
session_start();
}
if(isset($_SESSION['session_on']) && $_SESSION['session_on']==true)
{
$_SESSION['session_on']=false;
echo("<script type=\"text/javascript\" >
location.replace(\"landing.php\");
</script>");
}
請幫忙!我應該聯繫godaddy支持嗎?這與PHP版本有關嗎?會是什麼呢?謝謝
亞歷杭德羅·卡薩斯
使用其他瀏覽器並沒有真正改變任何東西。 PHP腳本在服務器端執行,PHP不關心你使用的瀏覽器,它只關心請求。 – Shoe 2013-03-06 00:40:23
'ini_get('name')'business是什麼?爲什麼在初始化會話之前檢查cookie? – Phil 2013-03-06 00:41:11
那麼我得到的警告說會議已經開始,所以我找到了這個解決方案。這是錯的嗎?謝謝你的迴應。 – Alejandro 2013-03-06 00:44:14