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'])){
因此模式仅在用户未通过任一方法登录时显示
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'])){
因此模式仅在用户未通过任一方法登录时显示