【问题标题】:Jquery not skipping php if condition如果条件,Jquery不会跳过php
【发布时间】:2015-07-17 14:04:45
【问题描述】:

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

【问题讨论】:

  • 所以,当用户登录时,_SESSION 同时包含membersFBID ?
  • 一个建议在&lt;?php之后的第二页顶部写session_start();
  • 试试var_dump($_SESSION); 看看它包含什么
  • @JaromandaX 没有会员可以通过网站注册memeber 或FB FBID 登录,我检查两者
  • 不应该这样||成为 && ?即只需要设置其中一个来让用户登录,因此除非用户通过这两种方法登录,否则模式将显示。

标签: javascript php jquery fancybox fancybox-2


【解决方案1】:
 if(!isset($_SESSION['members']) || !isset($_SESSION['FBID'])){

想成为

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

所以模式只显示用户没有通过任何一种方法登录

【讨论】:

    【解决方案2】:

    根据你的回答

    没有会员可以通过网站注册会员或 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”的布尔逻辑可能会让你感到困惑

    【讨论】:

      【解决方案3】:

      尝试更改此行

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

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

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

      你想看看 both 是否都没有设置 - 所以你需要使用&amp;&amp;

      【讨论】:

      • @vogomatix 不太好...而且你在['FBID'之后缺少一个右括号
      【解决方案4】:

      这对 jQuery 来说没有问题。您忘记开始会话了。

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

      【讨论】:

      • 您能告诉我们您的登录代码吗?并且可能添加page2.php的完整代码,这样我们就可以看看那里是否出了问题。
      猜你喜欢
      • 2017-08-29
      • 1970-01-01
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多