结合$ Session和$ Check

时间:2014-08-31 13:01:10

标签: php session

在Home.html文件的标题中,我使用像这样的$ session函数

<?php
@session_start();
if(  $_SESSION['flag']==1)
echo'<script>window.location="login.html";</script>';
?>

在上面的代码中,如果用户尚未登录,则只会将用户引导至登录文件。


我现在想要的是,如果用户尚未登录,那么他们仍然能够访问home.html文件,但是有些内容我想要隐藏给未注册的用户。

我使用此代码生成此代码:

$(document).ready(function(){
$check=1;
$("span").click(function(){
    if($check==0)
    {
        $("#login").show();
        $("#logout").hide();
    }
    else
    {
        $("#logout").show();
        $("#login").hide();
    }
});
});

所以现在我的问题是,我需要在html文件的标题中更改(在会话函数中)以便它可以与$ Check函数结合使用?&#34;

2 个答案:

答案 0 :(得分:3)

使用javascript完成所有这一切并不是一个好主意。用户需要做的只是view source来自浏览器,他们将看到您要隐藏的页面的所有部分。

使用PHP来确定在发送之前放入页面的内容,而不是隐藏发送的内容。

另外

<?php
@session_start();
if( $_SESSION['flag']==1)
echo'<script>window.location="login.html";</script>';
?>

执行页面重定向是一种糟糕的方式,因为它必须将整个页面发送到浏览器,只是为了将javascript重定向到另一个页面。 更好的方式:

<?php
    session_start();
    if( ! isset($_SESSION['flag']) || $_SESSION['flag'] == 1 ) {
        header('Location: login.html');
        exit;
    }
?>

现在PHP只是向浏览器发送一个标题,告诉它转到另一个页面。此外,你没有理由不运行其余的scritp。

答案 1 :(得分:2)

您必须将php和javascript结合起来,如下例所示:

$(document).ready(function(){
    var check = <?= $_SESSION['flag'] ?>;

    $("span").click(function(){
        if(check==0){
            $("#login").show();
            $("#logout").hide();
        } else {
            $("#logout").show();
            $("#login").hide();
        }
    });
});

显示的示例等待$ _SESSION ['flag']作为整数值。 $ _SESSION ['flag']是一个字符串,您必须将check var设置为引号。