当前位置: 代码迷 >> JavaScript >> jQuery如果条件不跳过PHP
  详细解决方案

jQuery如果条件不跳过PHP

热度:22   发布时间:2023-06-13 11:37:12.0

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部分

根据您的答案

无法通过站点注册成员或FB FBID部门登录任何会员

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'])){

原因是您当前正在检查是否未设置两个会话变量中的任何一个...这意味着,如果一个会话变量未设置,而另一个未设置,则它将返回false。

你想看看如果两者都没有设置-所以你需要使用&&

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

想成为

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

因此模式只会显示用户是否未通过任何一种方法登录

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

在您的Page2.php添加session_start()

  相关解决方案