Надежда С.
349 повідомлень
#10 років тому
Здравствуйте, коллеги. Уже целые сутки бьюсь над обработкой платежа через Яндекс.
Всё встало на проверке наличия кода протекции на платеже.
Яндекс Деньги присылает ответ false - это значит, что платеж без кода протекции и мы будем обрабатывать этот платеж, иначе просто завершаем выполнение скрипта.

<?php
$codepro = $_POST;
echo $codepro; //Выводит false
if ($codepro == false) {
echo "Платеж без кода протекции, обрабатываем платеж";
}
else {
echo "Платеж с кодом протекции, завершение скрипта.";
}
?>

В результате получаю ответ "Платеж с кодом протекции, завершение скрипта.", почему?
Как так получается, что false не равно false?
Андрей А.
798 повідомлень
#10 років тому
Цитата (WebAir):
echo $codepro; //Выводит false
var_dump($codepro);
Елена Б.
6863 повідомлення
#10 років тому
Если echo выводит не пустое место, а false, то в переменной находится строка 'false', которая в бинарном виде ну никак не false.
Короче, $codepro == 'false', с кавычками
Александр Ж.
575 повідомлень
#10 років тому
Важно помнить о типизировании, приводите переменные обязательно к нужному типу перед началом работы.
Надежда С.
349 повідомлень
#10 років тому
Где то кто то мне говорил о том, что php сам определяет тип и не нужно указывать тип явно.
Я уж начала думать, что проблема связана с описанием этой статьи
Александр Ж.
575 повідомлень
#10 років тому
WebAir, да пхп сам умеет определять. Но правила хорошего тона говорят что нужно обязательно программисту указывать где это важно (int) (string) (boolean)
чтоб точно получить тот тип, который нужен.
Андрей Халецкий
3562 повідомлення
#10 років тому
Ключевые слова
Приведение типов, string, boolean

можно сразу про
== и === прочитать, может быть полезно в будущем.
Александр Т.
56 повідомлень
#10 років тому
Это же золотое правило нормального кода, что перед тем как с ней работать ее надо проверить на соответствие.
И не конечно не забывать про то что бывают разные типы у переменных.