问题描述
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部分
1楼
根据您的答案
无法通过站点注册成员或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”的布尔逻辑会使您绊倒
2楼
尝试更改此行
if(!isset($_SESSION['members']) || !isset($_SESSION['FBID'])){
至
if(!isset($_SESSION['members']) && !isset($_SESSION['FBID'])){
原因是您当前正在检查是否未设置两个会话变量中的任何一个...这意味着,如果一个会话变量未设置,而另一个未设置,则它将返回false。
你想看看如果两者都没有设置-所以你需要使用&&
。
3楼
if(!isset($_SESSION['members']) || !isset($_SESSION['FBID'])){
想成为
if(!isset($_SESSION['members']) && !isset($_SESSION['FBID'])){
因此模式只会显示用户是否未通过任何一种方法登录
4楼
jQuery没问题。 您忘记了开始会话。
在您的Page2.php
添加session_start()
。