PHP IF语句执行两个条件

时间:2010-09-22 13:03:27

标签: php html syntax if-statement syntax-error

我目前正在将支付系统集成到我的网站中。我有一个响应脚本,它基本上从安全服务器接收数据,并在付款完成时显示给客户。我的问题是if语句实际上是向客户显示两条消息,即使付款成功或不成功。

这是If语句:

<?
if ($result == "00") && ($payersetup == "00") && ($pmtsetup =="00"){
?>  
Thank you
<br/><br/>
To return to the home page <a href="http://www.xx.com"><b><u>click here</u></b></a>
<br/><br/>

<?
} else {
?>

<br/><br/>
There was an error processing your subscription.  
To try again please <a href="http://www.xx.com/signUp.html"><b><u>click here</u></b></a><br><BR>
Please contact our customer care department at <a href="mailto:support@xx.com"><b><u>support@xx.com</u></b></a>

<?
}
?>

我也尝试过以下方式:但是使用此方法时,正文为空白 - 不显示任何文本。

<?
if ($result == "00") && ($payersetup == "00") && ($pmtsetup =="00"){
$thanks = "Thank you! \n\n To Return to the homepage <a href=http://www.epubdirect.com>Click Here</a>"; 
echo $thanks;
} 
else 
{
$nothanks = "There was an error processing your subscription.\n\n To try again please <a href=http://www.epubdirect.com/signUp.html>click here</a>. \n\n If the problem persists, please contact our customer care department at <a href=mailto:support@epubdirect.com>support@epubdirect.com</a>";
echo $nothanks;
}
?>

之后,我尝试将HTML放入单独的文档并使用require_once(),但这也不起作用 - 与之前相同的结果 - 空白正文。

任何人都有任何想法?

编辑:

我尝试了一些建议的方法但是我仍然遇到空白页问题:(

这是我走的路 - &gt;

<?
if (($result == "00") && ($payersetup == "00") && ($pmtsetup =="00"))
{
require_once('thankyou.html');
} 
else 
{
require_once('error.html');
}
?>

即使语法看起来正确,这仍然给我一个空白页?

7 个答案:

答案 0 :(得分:10)

尝试:

if (($result == "00") && ($payersetup == "00") && ($pmtsetup =="00") ) {
   ...
   ...
}

答案 1 :(得分:9)

添加其他答案:

您的原始代码:

if ($result == "00") && ($payersetup == "00") && ($pmtsetup =="00")

是语法错误。一旦PHP解析器看到)标记if条件的结束,它期望看到另一个语句或{来标记if正文的开头。但当它看到&&时会抛出此语法错误:

PHP Parse error:  syntax error, unexpected T_BOOLEAN_AND

我认为您已停用错误报告,这就是您看到空白页面的原因。

答案 2 :(得分:3)

我想知道您的情况是如何运行的,因为您的(条件中缺少)if

if (($result == "00") && ($payersetup == "00") && ($pmtsetup =="00")){...}

或者简单地说:

if ($result == "00" && $payersetup == "00" && $pmtsetup =="00"){...}

答案 3 :(得分:2)

你可能意味着:

if ($result == "00" && $payersetup == "00" && $pmtsetup == "00") {

if结束后)结束。

答案 4 :(得分:2)

简单干净的方式

<? if (($result == "00") && ($payersetup == "00") && ($pmtsetup =="00")):?>
 Thank you
 <br/><br/>
 To return to the home page <a href="http://www.xx.com"><b><u>click here</u></b></a>
 <br/><br/>
<?php else : ?>
 <br/><br/>
 There was an error processing your subscription.  
 To try again please <a href="http://www.xx.com/signUp.html"><b><u>click      here</u></b></a><br><BR>
 Please contact our customer care department at <a  href="mailto:support@xx.com"><b><u>support@xx.com</u></b></a>
<?php endif ?>

答案 5 :(得分:2)

以下是启用错误报告所需执行的操作:

在PHP脚本中:使用函数error_reporting,描述为here

或者,如果您有权访问php.ini,请参阅this document

您应该在自己的计算机上使用本地开发服务器(如XAMPP on Windows/Linux)以及在真实服务器上完成部署。

答案 6 :(得分:1)

正如其他人所指出的那样,你需要在括号中的if语句中包含多个条件:

if (($cond1) && ($cond2)) { ... }

如果不这样做,将导致致命的解析错误。

但是,如果这是问题的根本原因,页面的执行将在该行停止,并向浏览器或空白页面呈现PHP错误。原帖表明这不是发生的事情;相反,输出两个HTML块。

您是否在浏览器中查看了源代码以查看是否有任何内容发送到浏览器?我怀疑你是在使用短开放标签(因为你在代码块中使用它们),并且你的PHP配置被设置为禁止它们。这将导致整个代码块按原样发送到浏览器,这意味着永远不会触发致命解析错误,并且浏览器将<? ... ?>块视为无效HTML并忽略它。这会导致两个HTML块按照描述进行渲染。

当然,如果启用了短打开标签,我根本不知道。 : - )