Надежда С.
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 сообщений
#9 лет назад
Это же золотое правило нормального кода, что перед тем как с ней работать ее надо проверить на соответствие.
И не конечно не забывать про то что бывают разные типы у переменных.