【发布时间】:2012-05-11 18:04:48
【问题描述】:
在过去的 3 个小时里,我一直被一个问题所困扰,这让我对 PHP 会话充满了思考。 Iv 从 session_is_registered 转到 $_SESSION 并且它不想工作。
请参阅下面的代码(在我想通过登录保护的页面的最顶部的所有文件中):
<?php
session_start();
if(!isset($_SESSION['user']))
header("location: login.php");
?>
在另一个页面 access.php 我有一个带有两个输入框和提交按钮的表单来检查输入并与 db 交叉引用它。当输入不正确的值时,我收到消息“无效登录”,这是正确的。但是当我输入正确的详细信息时,我会回到 login.php 页面,要求登录。
我正在保存会话并检查详细信息如下:
<?php
session_start();
include("dbfile.php");
$sql = mysql_query("SELECT id FROM myTable WHERE user=$username AND pass=$pass");
if(mysql_num_rows($sql)==1){
$_SESSION['user'] = "Test";
header("location: account.php");
}else{
header("location: login.php");
}
?>
不幸的是,我在一个已关闭 register_globals 的共享服务器上,但不确定这是否是问题所在。如果我在其他页面上回显会话的输出,我什么也得不到。就像它甚至没有注册/保存会话一样。
我在浏览器上启用了 cookie/js。事实上,我已经在 4 个浏览器上进行了测试,但结果相同。谁会成为这个的救命稻草..
【问题讨论】:
-
它在哪里结束,如果语句是从那里进入 login.php 还是进入 account.php?也许你有不止一行从 db 返回?
-
如果找到一条匹配的记录,它将转到我的帐户页面,否则转到 login.php。数据库中的用户名'设置为唯一,因此消除了重复的可能性。
-
你能从 phpinfo() 发布 PHP 配置部分吗?
-
你能不能 var_dump($_SESSION) 然后死掉;让我知道它显示了什么?
-
var_dump($_SESSION) 是否给你输出???
标签: php session variables global-variables