我正在使用 PHP 处理这个网页。我正在使用 easyphp 版本进行本地测试:5.3.9 我做了一个通常的登录,注销功能。当我在本地测试时,按预期工作。但是当我通过 FTP 将它上传到 Godaddy 托管服务时,它开始做一些奇怪的事情。
- 会话变量无法正常工作,有时会起作用,有时会不起作用!db 上的登录连接和验证工作正常!但是在从另一个失败的文件中读取 SESSION 变量时。
会是什么呢?php版本?但我只是使用简单的 $_SESSION['name'] 变量。漏洞?请帮忙!
这是我已经尝试过的:
- 使用其他浏览器。
- 重新上传源(多次)
- 清除缓存、cookies等。
- 逐步测试,但就像我说的那样,它可以很好地在本地托管网页。
最后一件可能很重要的事情是数据库托管在服务器上(这不是我的本地 pc ofc),并且与该数据库的连接在这两种情况下都可以正常工作。
这是我的代码:
login.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>
豆.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>");
}
}
主页.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>
签出.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版本有关吗?会是什么呢?谢谢你
亚历杭德罗·卡萨斯