因此,我使用一个简单的登录脚本来处理几个页面,使用会话来识别用户,方法是将用户名放在$ _SESSION变量中,然后检查是否在每个页面上设置了变量。当我通过WAMP服务器在本地运行脚本时,这很好用 - 但是当我将它上传到webhotel时,我遇到了一个奇怪的问题。
login-script,如果用户名和密码与来自MySQL数据库的信息匹配,则设置$ _SESSION变量,不知何故不会启动会话。我有session_start();在每个页面的顶部,包括登录脚本,所以我不明白为什么它不会启动。
现在,我在这里找到了一个用于检查会话支持的脚本:
<?php
// Start Session
session_start();
// Show banner
echo '<b>Session Support Checker</b><hr />';
// Check if the page has been reloaded
if(!isset($_GET['reload']) OR $_GET['reload'] != 'true') {
// Set the message
$_SESSION['MESSAGE'] = 'Session support enabled!<br />';
// Give user link to check
echo '<a href="?reload=true">Click HERE</a> to check for PHP Session Support.<br />';
}
else {
// Check if the message has been carried on in the reload
if(isset($_SESSION['MESSAGE'])) {
echo $_SESSION['MESSAGE'];
}
else {
echo 'Sorry, it appears session support is not enabled, or you PHP version is to old. <a href="?reload=false">Click HERE</a> to go back.<br />';
}
}
?>
真正奇怪的是,这个脚本告诉我启用了会话支持 - 运行后,它突然在所有页面上运行。 因此,每次访问站点时都必须运行此脚本(在自己的文件中),因为如果不先运行此脚本,login-script将不会设置$ _SESSION变量。
只是要确定:我不是在问如何检查是否启用了会话支持;问题是为什么在我运行上面的脚本之后才启用会话。
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:1)
运行session_start()
函数时会自动启动会话。要检查会话是否已设置,您不需要那么长的代码。试试这个。
if(session_start())
{
echo session_id();
}
如果会话已启动,则会打印会话ID。否则,它不会。