创建PHP会话变量会挂起我的浏览器
我只是最近才从我的ASP洞穴出来,我很难适应PHP的阳光 我目前的问题在于一个简单的登录序列,在这个序列中我创建了一个会话变量——这一步会导致我的浏览器挂起,然后不稳定地运行 从我的登录页面(A.php),登录表单被定向到B.php(下面),B.php处理密码,创建会话变量,然后将用户重定向到另一个文件(C.php) 简而言之,我只是假设登录成功。B.php包含以下内容:创建PHP会话变量会挂起我的浏览器,php,session,variables,Php,Session,Variables,我只是最近才从我的ASP洞穴出来,我很难适应PHP的阳光 我目前的问题在于一个简单的登录序列,在这个序列中我创建了一个会话变量——这一步会导致我的浏览器挂起,然后不稳定地运行 从我的登录页面(A.php),登录表单被定向到B.php(下面),B.php处理密码,创建会话变量,然后将用户重定向到另一个文件(C.php) 简而言之,我只是假设登录成功。B.php包含以下内容: <?php session_start(); require "../scripts/base/toolbox.php
<?php
session_start();
require "../scripts/base/toolbox.php";
fnProcessLogin();
function fnProcessLogin(){
$passwd = strtoupper($_POST["passwd"]);
if (strlen($passwd)==0)
{
$passwd=strtoupper($_SESSION['plpassword']);
unset($_SESSION['plpassword']);
}
try{
$db = Database::getDB();
$sql="SELECT securitylevel, staffID, staffname, stafflname, staffemail, iRoleID FROM staff WHERE staffpasswd=?;";
$data = array($passwd);
$query = $db->prepare($sql);
$query->execute($data);
if($query->rowCount()>0){
$row = $query->fetch();
$a=$passwd."|".$row['staffID']."|".$row['staffname']."|".$row['stafflname']."|".$row['staffemail']."|".$row['iRoleID'];
$_SESSION['admin'] = $a;
header('Location: C.php');
}
}
catch(PDOException $pe){
echo "We are sorry, but we cannot complete this database operation.";
file_put_contents('PDOerrors.txt',$pe->getMessage(),FILE_APPEND);
}
}
?>
如果我注释掉“$\u SESSION['admin']=$a;”行,重定向工作正常,但只要我尝试创建该会话变量,我的浏览器就会挂起,直到最终转到C.php,它无法正确加载任何文件。后退按钮动作似乎将浏览器置于一个无休止的循环中
这个穴居人做错了什么
谢谢
布莱恩。我只是在猜测 您需要有一个
exit()代码>在位置标题之后。如果重定向后输出了更多数据(例如,会话试图设置cookie),则重定向将失败
测试一下,看看会发生什么
您还可以在会话分配之后尝试会话\u write\u close()
,以强制完成所有会话相关数据,然后再尝试重定向。我仍然强烈推荐exit()代码>尽管如此。为什么要将密码设置为大写?还是我读错了?还有:你真的需要在会话中存储密码吗?为什么不为用户数据使用多维数组来添加$\u会话
,而使用字符串(由
分隔)来无限重定向?浏览器是否可能在从B页到C页再返回B页之间被重定向?C页做什么?它是否也包含位置
标题?是否使用?谢谢,但这两个选项都没有任何区别。我还更改了指向此页面的重定向(以防C.php出现问题)。重定向很好,但是如果我返回到B.php,系统会花费很长时间连接到页面,然后不会读取任何包含文件,页面上会充满php错误通知。莫名其妙@用户1216097:如果对这些事情有疑问,我通常会去tcpdump
。