这是我的header.php
我面临的唯一问题是我的屏幕底部的通知但登录工作正常。当我提交用户名和密码时,它会通过另一页。通知显示{{1}上的错误}。
if($_SESSION['login_id']=="")
这是我的login.php
<?php
var_dump($_SESSION);
if($_SESSION['login_id']=="")
{
?>
| <a href="index.php?page=login">Login</a> |
<?php
}
else
{
echo "<font color='green'> | Welcome ".$_SESSION['login_usr']." ".$_SESSION['login_id']." | Logged in as ".$_SESSION['type']." | </font>";
if($_SESSION['type']=="Admin")
{
?> <a href="index.php?page=main_record_officer">
<?php
}
if($_SESSION['type']=="Student")
{
?> <a href="index.php?page=main_student">
<?php }
if($_SESSION['type']=="Teacher")
{
?><a href="index.php?page=main_teacher">
<?php }
if($_SESSION['type']=="Accountant")
{
?><a href="index.php?page=main_accountant">
<?php } ?>
My Page</a> | <a href="logoff.php">Logoff</a> | <?php
}
?>
<a href="index.php?page=help">Help</a> |
答案 0 :(得分:1)
确保通过在页面顶部添加session_start()
来启动会话,至少包括需要会话功能的页面。也就是说,用以下代码替换你的测试:if($_SESSION['login_id']=="")
:
if( isset($_SESSION['login_id']) && ($_SESSION['login_id']=="") )
答案 1 :(得分:0)
我建议使用空(http://php.net/empty),因为它首先检查变量是否完全定义,然后是否有内容。
所以这个:
if($_SESSION['login_id']==""){
}
最好是:
if(!empty($_SESSION['login_id'])){
}
如上所述,您需要确保您的会话处于活动状态,例如,在文档的开头:
// PHP >= 5.4
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
// ..or else:
if(session_id() == '') {
session_start();
}
请注意,您将遇到&#34; undefined ..&#34;尝试访问尚未设置的变量时出现错误。
因此,您需要检查代码并在必要时添加检查。
例如:
$user=$_POST['usrname'];
$pass=$_POST['password'];
应该是:
$user = empty($_POST['usrname']) ? "" : $_POST["usrname"];
$pass = empty($_POST['password']) ? "" : $_POST["password"];
这样变量$ user和$ pass将是&#34;&#34;如果没有发送变量。