不确定是否正确使用了isset

时间:2015-11-19 15:43:11

标签: php html

我正在建立一个网站,当用户已登录时,该网站不得显示登录选项,即会话处于活动状态。我尝试过这个,但它没有返回所需的输出。请帮忙。感谢。

<?php
    if(!isset($_SESSION)) {echo "<li><a href='Employee.php'>Login</a></li>";}
                ?>

编辑: 我正在添加从数据库检查登录详细信息并启动会话的部分。

 $query = "SELECT Cust_FName from customer where Cust_ID='$name' and  Password='$pass'";


$result = mysqli_query($con, $query);
if(mysqli_num_rows($result)!= false)
{
$row = mysqli_fetch_row($result);
echo row[0];
if(mysqli_num_rows($result) > 0)
{

echo "Logged in!";
session_start();
$_SESSION['userName'] = $row[0];
header("Location: index.php");


}


}

3 个答案:

答案 0 :(得分:2)

如果要检查会话是否已启动,可以使用

if(session_status() != PHP_SESSION_ACTIVE) {
    echo "<li><a href='Employee.php'>Login</a></li>";
}

问题是,如果用户没有登录,会话也在那里。你必须检查是否例如设置$_SESSION['user_id']

if(!isset($_SESSION['user_id']) {
    echo "<li><a href='Employee.php'>Login</a></li>";
}

在我的示例中,{>> 1}}将在用户登录成功时填写。

答案 1 :(得分:0)

放入登录页面

<?php
session_start();
// Store Session Data
$_SESSION['login_user']= $username;  // Initializing Session
?>

必须检查使用时

<?php
session_start();
// Store Session Data
if(isset($_SESSION['login_user'])){
    //do things
}
?>

并退出

<?php
session_destroy();
?>

答案 2 :(得分:0)

<强>问题

来自你的评论:

  

登录按钮只应在用户未登录时显示,一旦登录,它就会消失。

<强>解决方案

// This would be your login.php page
<?php
    session_start();

    // process your HTML form, like this
    if(isset($_POST['login'])){
        // Remember: always validate your form inputs
        $name = $_POST['name'];
        $pass = $_POST['pass'];

        $query = "SELECT Cust_FName from customer where Cust_ID='$name' and  Password='$pass'";
        $result = mysqli_query($con, $query);
        if(mysqli_num_rows($result)!= false){
            $row = mysqli_fetch_row($result);
            //echo row[0];
            if(mysqli_num_rows($result) > 0){
                //echo "Logged in!";
                $_SESSION['userName'] = $row[0];
                header("Location: index.php");
                exit(); // exit() is necessary, otherwise the script execution is not terminated. Setting header alone is not enough to redirect.
            }
        }

    }

    if(isset($_SESSION['userName'])){
        // user is already logged in
        // redirect the user to a different page
        // header("Location: index.php");
        // exit();
    }else{
        // user is not logged in
        // display login option

        ?>

        <!--Your HTML form for login-->
        <form action="login.php" method="POST">
            <input type="text" name="name" value="" /><br />
            <input type="text" name="pass" value="" /><br />
            <input type="submit" name="login" value="Login" />
        </form>

        <?php
    }
?>

<强>编辑:

Session是一个驻留在我们服务器中的文件,在该文件中我们可以存储任何数量的信息。我们通常在客户端的浏览器上部署会话cookie。

在输出任何HTML或空格之前,我们需要开始会话。

当我们这样做时,

<?php
    session_start();
?> 

它会说,转到浏览器,获取会话ID并打开相应的文件,如果它没有找到任何会话ID,它将启动一个新会话。用户只能看到会话ID,没有别的。

提示:请记住不时清理会话。