【发布时间】:2011-10-24 07:17:07
【问题描述】:
我正在经历将服务器上的 PHP 从 5.2 升级到 5.3 的痛苦。将我的旧 php.ini 迁移到新的并升级了我的 mysql 密码后,我的 PHP 会话不再工作。
这是我下面的登录代码,它可以正确执行,甚至可以在活动日志中正确记录我的登录。 (更新日志功能)我还发布了我的会话有效校验码。
我的登录代码中是否有任何明显的东西在 PHP 5.3 中不再有效,以前在 5.2 下工作过?
// 登录用户///
if(@$_POST["dologin"] == 1)
{
//record login attempt
updatelog("",$_SERVER['REMOTE_ADDR'],"Login Attempt By: ".$_POST['username']);
$user_name = escape($_POST["username"]);
$password = escape(md5(SALT.$_POST["password"]));
$login = $query->GetSingleQuery("--SINGLE","SELECT user_name, id, user_email FROM url_users WHERE user_name='".$user_name."' and user_password='".$password."';",array("user_name","id","user_email"));
if(!isset($login['user_name'])) //failed login
{
$_SESSION['loggedin'] = 0;
//record failure
updatelog("",$_SERVER['REMOTE_ADDR'],"Login Failure By: ".$_POST['username']);
header("Location: index.php?failed=1&user=$user_name");
}else
{
//login valid
//get country details
$getcountry = $query->GetSingleQuery("--SINGLE","SELECT geo_ip.ctry FROM admin_adfly.geo_ip geo_ip WHERE INET_ATON ('".$_SERVER['REMOTE_ADDR']."') BETWEEN geo_ip.ipfrom AND geo_ip.ipto;",array("ctry"));
//set session items
$_SESSION['country'] = $getcountry['ctry'];
$_SESSION['username'] = $login['user_name'];
$_SESSION['userid'] = $login['id'];
$_SESSION['loggedin'] = 1;
$_SESSION['email'] = $login['user_email'];
//session salt
$hsh = md5($_SERVER['HTTP_USER_AGENT'].SALT);
$_SESSION['_XXX(*@#!_D@R*&$%(){*@)_D_296']['user_agent'] = $hsh;
//update the ui transaction log
updatelog($login['id'],$_SERVER['REMOTE_ADDR'],"Login Success For: ".$_POST['username']);
// run function to check if any adverts have completed
adcomplete($_SESSION['userid']);
//redirect
header("Location: index.php");
}
}
// 检查用户登录会话是否有效,这在我想通过登录限制的每个页面上调用。 ////
if(isset($_SESSION['_XXX(*@#!_D@R*&$%(){*@)_D_296']['user_agent']) == $_SERVER['HTTP_USER_AGENT'].SALT)
{
return 1; //session success
}else
{
return 0; //session failure
}
【问题讨论】:
-
跟进:如果我在页面 a->b 之间链接,会话将被保留。但是,当我使用标头重定向时,所有会话数据都会丢失。
-
更新:查看服务器会话文件,会话数据不会保存在 php 2.3 下。会话文件已创建,但其中不保存任何数据。会话数据保存在 5.2 下 ok