0

如果它以用户或来宾开始,我想根据会话启用或禁用 div。我想做这样的事情:

首先,我将通过这样做来评估它是否是用户:

<?php

    if(!isset($_SESSION['idUser'])) // If it is Guest doesn't have id.
    {
        $guest=true;
    } else {
        $guest=false;
    }

?>

然后在jquery中,我想说:

$('.box').click(function(){    // labBox appears when box is clicked
    if(<?php $guest?>)                  
    $("#LabBox").hide();
    else
    $("#LabBox").show();                            

});

问题:如何使用我的 php boolean var $guest 禁用或隐藏我网站的某些元素?我必须做两个不同的php文件吗?一个用于用户,另一个用于来宾(例如 home.php 和 home_guest.php)?

4

7 回答 7

1

你可以做替代方案,例如

<script>
    var guest = '<?php echo $guest; ?>';
    $('.box').click(function(){    // labBox appears when box is clicked
        if(guest === "true") {             
            $("#LabBox").hide();
        } else {
            $("#LabBox").show();                            
        }
    });
</script>

这将允许您将 PHP 值传递给 Javascript 变量,以便您在 onClick 中使用它。

于 2013-04-26T14:18:24.423 回答
1

请记住:到达客户端的所有内容都可以被操纵。因此,如果您发送隐藏元素(例如 hidden <div>),任何精通技术的用户都可以并且将轻松地使它们可见。

您必须在 PHP 脚本中执行有关登录/访客状态的检查,并且不要依赖 jQuery 在客户端组装页面(嘿,毕竟,用户可能完全禁用了 javascript!)

您不需要两个页面(例如:home.phphome_guest.php)来根据用户级别呈现不同的内容。只需适当地使用 session/cookies 和不同echo的 s。

于 2013-04-26T14:20:40.950 回答
0

使用一个隐藏的输入,由 PHP 填充,jQuery 可以抓取:

<?php
   echo "<input type=hidden id=guestcheck value=$guest/>"
?>

if ("#guestcheck").val()) {
}

我个人喜欢这种方法,因为它允许我在调试时检查源代码以找出可能存在的错误(例如,在查看页面时,无论 GUEST 是否为真,您都可以在源代码中清楚地看到)

于 2013-04-26T14:17:38.777 回答
0

这取决于这些文件的内容。如果唯一的区别是块的可见性,那么内联检查更合理。

<?php if (isset($_SESSION['idUser'])) { ?>
    $('.box').click(function() { $("#LabBox").show(); }
<?php } ?>
于 2013-04-26T14:19:41.540 回答
0

就我个人而言,我会在 HTML 而不是 JS 文件中这样做......

<?php

    if(!isset($_SESSION['idUser'])) // If it is Guest doesn't have id.
    {
        $loggedin=true;
    } else {
        $loggedin=false;
    }

?>

然后以后..

<?php if($loggedin===true){?>
    <div>User is logged in</div>
<?php }else{?>
    <div>Guest is viewing page</div>
<?php }?>

这意味着用户的 div 不会显示给来宾,而您当前的解决方案仅将其隐藏在视图之外(用户可以只使用firebug/viewsource!

于 2013-04-26T14:23:56.557 回答
0

你为什么不只是在 php 中显示/隐藏你的 div 取决于他们是否是客人......

所以...

<?php

if(!isset($_SESSION['idUser'])) // If it is Guest doesn't have id.
{
    $guest=true;
} else {
    $guest=false;
}

if($guest===true){
    echo "<div></div>";
}
else{
    //dont echo div
}

?>

于 2013-04-26T14:26:09.233 回答
0

PHP/服务器端:

<?php
    if(!isset($_SESSION['idUser'])) // If it is Guest doesn't have id.
    {
        $guest=true;
    } else {
        $guest=false;
        // add #LabBox element from here to avoid junk/hidden elements for guests
    }
?>

jQuery / 客户端:

$('.box').click(function(){    // labBox appears when box is clicked
    if (!<?php echo $guest?> && $('#LabBox').length > 0) {
        $('#LabBox').show();
    }
});

那么用户请求的任何操作都必须通过“客人与否?”这一点至关重要。在从服务器端授予之前进行测试。

于 2013-04-26T14:30:07.313 回答