创建PHP会话变量会挂起我的浏览器
发布时间:2020-12-13 16:15:05 所属栏目:PHP教程 来源:网络整理
导读:我刚刚从我的ASP洞穴中出现,并且无法适应 PHP的阳光. 我目前的问题在于一个简单的登录序列,我在其中创建了一个会话变量 – 该步骤导致我的浏览器挂起然后行为不正常. 从我的登录页面(A.php),登录表单被定向到B.php(下面),它处理密码,创建会话变量,然后将用户
我刚刚从我的ASP洞穴中出现,并且无法适应
PHP的阳光.
我目前的问题在于一个简单的登录序列,我在其中创建了一个会话变量 – 该步骤导致我的浏览器挂起然后行为不正常. 从我的登录页面(A.php),登录表单被定向到B.php(下面),它处理密码,创建会话变量,然后将用户重定向到另一个文件(C.php). 为简洁起见,我只是假设登录成功. B.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); } } ?> 如果我注释掉“$_SESSION [‘admin’] = $a;”换行,重定向工作正常,但是一旦我尝试创建该会话变量,我的浏览器就会挂起,直到最终转到C.php,它无法正确加载任何文件.后退按钮操作似乎将浏览器置于无限循环中. 这个穴居人做错了什么? 谢谢, 布莱恩. 解决方法
我只是在这里猜测.
你需要一个exit();在您的位置标题后.如果在重定向后输出更多数据(例如,尝试设置cookie的会话),重定向将失败. 给它一个测试,看看会发生什么. 您还可以在会话分配后尝试session_write_close(),以在尝试重定向之前强制完成所有与会话相关的数据.我仍然强烈推荐exit();虽然. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |