注意:未定义的索引:第9行的C:\ xampp \ htdocs \ SIMS \ header.php中的login_id

时间:2015-04-08 14:30:44

标签: php

这是我的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> | 

2 个答案:

答案 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;如果没有发送变量。