Jquery 不跳过 php if 条件

Jquery not skipping php if condition

Jquery 语言对我来说有点像法语,所以很抱歉,如果这是我不太聪明的问题之一,但考虑一下:

PAGE1.php

<form action="page2.php" method="post">
some stuff
</form>

Page2.php

 //form values posted 2 form2
    <?php
     session_start();
    //Check if user is logged in
    //if user not logged in display modalbox
    if(!isset($_SESSION['members']) || !isset($_SESSION['FBID'])){
        ?>
       <script type="text/javascript">
        jQuery(document).ready(function() {
        $.fancybox(
            '<h2>Hi!</h2><p>This is where login form will be</p>',
            {
                    'autoDimensions'    : false,
                'width'                 : 350,
                'height'                : 'auto',
                'transitionIn'      : 'none',
                'transitionOut'     : 'none'
            }
        );
    });
   </script>
    <?php
    }//if not logged in
    ?>  
    <?php
    else{
    //Do stuff with logged on user with  values posted from page1.php
    }

我的问题

无论用户是否登录,都会显示登录模式框。

根据我的逻辑,如果用户已登录,则不应显示模态框,代码应转到 else 部分

jQuery 没问题。您忘记开始会话了。

在您的 Page2.php 中添加 session_start()

根据您的回答

No a member can be logged in either via site registration memeber or via FB FBID hench I check for both

if(!isset($_SESSION['members']) || !isset($_SESSION['FBID'])){

意味着如果其中一个未设置,您将获得登录名

你想要

if(!isset($_SESSION['members']) && !isset($_SESSION['FBID'])){

if(!(isset($_SESSION['members']) || isset($_SESSION['FBID']))){

如果不是通过 A 登录或不是通过 B 登录,你正在做的......他们不能以两种方式登录

第一个答案...如果不是通过 A 登录并且不是通过 B 登录

第二个答案,如果不是(通过 A 登录或通过 B 登录)

带有 "not" 的布尔逻辑可能会让你犯错

尝试更改此行

if(!isset($_SESSION['members']) || !isset($_SESSION['FBID'])){

if(!isset($_SESSION['members']) && !isset($_SESSION['FBID'])){

原因是您当前正在检查是否有一个会话变量未设置...这意味着,如果一个是,另一个不是,它将 return 为假。

您想查看 both 是否未设置 - 因此您需要使用 &&.

 if(!isset($_SESSION['members']) || !isset($_SESSION['FBID'])){

想成为

if(!isset($_SESSION['members']) && !isset($_SESSION['FBID'])){

因此模式仅在用户未通过任一方法登录时显示