PHP IF Statement, выполняющий оба условия - PullRequest
4 голосов
/ 22 сентября 2010

В настоящее время я интегрирую платежную систему на свой сайт.У меня есть скрипт ответа, который в основном берет данные с защищенного сервера и показывает клиенту, прошел платеж или нет.Моя проблема заключается в том, что в операторе 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 (), но это тоже не сработало - тот же результат, что и в предыдущем случае - пустое тело.

У кого-нибудь есть идеи?

РЕДАКТИРОВАТЬ:

Я пробовал некоторые из предложенных способов, однако у меня все еще проблема с пустой страницей: (* ​​1015 *

Вот мой путь ->

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

Это все еще дает мне пустую страницу, хотя синтаксис выглядит правильно?

Ответы [ 7 ]

10 голосов
/ 22 сентября 2010

Попробуйте:

if (($result == "00") && ($payersetup == "00") && ($pmtsetup =="00") ) {
   ...
   ...
}
9 голосов
/ 22 сентября 2010

Чтобы добавить к другим ответы:

Ваш оригинальный код:

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

- синтаксическая ошибка. После того, как синтаксический анализатор PHP увидит ), отмечающий конец условного условия if, он ожидает увидеть другой оператор (ы) или {, чтобы отметить начало тела if Но когда он видит &&, он выдает следующую синтаксическую ошибку:

PHP Parse error:  syntax error, unexpected T_BOOLEAN_AND

Я думаю, что вы отключили сообщение об ошибке, поэтому вы видите пустую страницу.

3 голосов
/ 22 сентября 2010

Интересно, как работает ваше условие, потому что в ваших if условиях отсутствуют ( и ):

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

Или просто:

if ($result == "00" && $payersetup == "00" && $pmtsetup =="00"){...}
2 голосов
/ 22 сентября 2010

Вот что вам нужно сделать, чтобы включить отчеты об ошибках:

В вашем PHP-скрипте: используйте функцию error_reporting, описанную здесь .

Или,если у вас есть доступ к php.ini, обратитесь к этому документу .

Вы должны использовать локальный сервер разработки (например, XAMPP в Windows / Linux ) на вашемсобственный компьютер, и когда вы закончите, разверните на реальном сервере.

2 голосов
/ 22 сентября 2010

Простой чистый способ

<? 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 ?>
2 голосов
/ 22 сентября 2010

Вы, вероятно, имеете в виду:

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

if заканчивается после закрытия ).

1 голос
/ 22 сентября 2010

Как уже отмечали другие, вам нужно заключить в скобки несколько условий в скобках:

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

Невыполнение этого требования приведет к фатальной ошибке разбора.

ОДНАКО, если бы это была основная причина проблемы, выполнение страницы остановилось бы на этой строке и отобразило бы либо ошибку PHP в браузере, либо пустую страницу. Оригинальный пост указывает, что это не то, что происходит; вместо этого выводятся оба блока HTML.

Вы просматривали источник в своем браузере, чтобы увидеть, отправлено ли что-либо в браузер? Я наполовину подозреваю, что вы используете короткие открытые теги (учитывая, что вы используете их в блоке кода), и ваша конфигурация PHP настроена на их запрет. Это приведет к тому, что весь блок кода будет отправлен как есть в браузер, что означает, что фатальная ошибка синтаксического анализа никогда не сработает, и браузер обрабатывает блок <? ... ?> как недопустимый HTML и просто игнорирует его. Это вызывает рендеринг обоих блоков HTML, как описано.

Конечно, если включены короткие открытые теги, я понятия не имею. : -)

...