我正在编写一个用户登录系统,而我(与许多其他人一样)在会话方面遇到问题.
这是验证输入后登录脚本的指针:
session_start();
$_SESSION['id']=$id;
header('location: memberhome.PHP');
这是memberhome.PHP上的第一件事:
<?PHP
session_start();
$id=$_SESSION['id'];
?>
后来在memberhome.PHP中:
You are logged in as: <?PHP echo $id; ?>
问题是$_SESSION [‘id’]显然是空的,因此回显$id没有显示任何内容.
另一种方法也不起作用:
//removed session_start and $_SESSION bit from the top
You are logged in as: <?PHP session_start(); echo $_SESSION['id']; ?>
现在,这是奇怪的部分.此方法有效:
You are logged in as: <?PHP echo session_start();$_SESSION['id']; ?>
您可以看到session_start()在回显之后被移动了.当页面从登录脚本加载时,此方法有效.但是,刷新后,它将不再起作用.
我尝试了很多替代方法,并花了几个小时来寻找先前问题的答案.我还查看了PHPinfo()的内容,但没有发现任何问题.这完全是我的进步.谢谢!
解决方法:
首先,请启用调试:
error_reporting(E_ALL);
ini_set('display_errors', '1');
其次,session_start()必须位于页面顶部.所以你写的那行;
You are logged in as: <?PHP echo session_start();$_SESSION['id']; ?>
将永远无法工作.
在任何HTML等之前,以下行必须位于页面顶部.
<?PHP
session_start();
$id=$_SESSION['id'];
?>