[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Почему одинаковые не равны?
Владимир55
В обработчике сравниваются переменная, полученная в качестве ответа на капчу, и заданный вопрос. Каждая из них представляет собой одно слово на кириллице в кодировке UTF8.

И почему-то получается, что совершенно одинаковые ответы не равны друг другу!

Я и тип данных проверял - обе string. И в текстовый файл записывал, а потом побайтно сличал с помощью WinHex - они идентичны (файлы во вложении).

Что за чудеса?

(Работа на Денвере. Может быть, он виноват?)


file_put_contents('otvet.txt', $slovo); // Это ответ на капчу
file_put_contents('vopros.txt', $m_contr[$vpr_post]); // Это заданный вопрос

echo (gettype($m_contr[$vpr_post])) . " " . (gettype($slovo));

if ($m_contr[$vpr_post] != $slovo)
{
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='3; URL=harmony.php'></HEAD></HTML>";
exit ('<br /><p style="color:red">Неверно введено слово в капче</p>');
}

Миша
Все файлы сохранить в кодировке utf-8 без бом, в php файле прописать: header('Content-Type: text/html; charset=utf-8');

Как может вопрос не равняться ответу (может тогда ответ на вопрос и ответ на капчу)?

Попробуй: $a !== $b


_____________
Принимаю заказы, писать в ЛС
Владимир55
Цитата
Попробуй: $a !== $b

Это сделано с самого начала, но уж если нестрогое неравенство не выполняется, то строгое тем более не выполнилось.

Цитата
Все файлы сохранить в кодировке utf-8 без бом


Файлы сохраняются так:
file_put_contents('otvet.txt', $slovo);

Каким образом можно обеспечить сохранение "в кодировке utf-8 без бом"?
Миша
Цитата (Владимир55 @ 24.04.2016 - 13:09)
Файлы сохраняются так:
file_put_contents('otvet.txt', $slovo);

Каким образом можно обеспечить сохранение "в кодировке utf-8 без бом"?

Сам файл .php

_____________
Принимаю заказы, писать в ЛС
redreem
ответ на капчу проще в сессии хранить, зачем файлы то привлекать для этого?
Миша
Цитата (redreem @ 24.04.2016 - 14:19)
ответ на капчу проще в сессии хранить, зачем файлы то привлекать для этого?

Я так понял, он сделал это для демонстрации, вообще зачем где-то хранить ответ на капчу?)

_____________
Принимаю заказы, писать в ЛС
Invis1ble
var_dump($m_contr[$vpr_post]);
var_dump($slovo);


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

redreem
Цитата (Медведь @ 24.04.2016 - 15:20)
Цитата (redreem @ 24.04.2016 - 14:19)
ответ на капчу проще в сессии хранить, зачем файлы то привлекать для этого?

Я так понял, он сделал это для демонстрации, вообще зачем где-то хранить ответ на капчу?)

есть решение без хранения ответа? smile.gif в студию!
Миша
Цитата (redreem @ 24.04.2016 - 14:24)
Цитата (Медведь @ 24.04.2016 - 15:20)
Цитата (redreem @ 24.04.2016 - 14:19)
ответ на капчу проще в сессии хранить, зачем файлы то привлекать для этого?

Я так понял, он сделал это для демонстрации, вообще зачем где-то хранить ответ на капчу?)

есть решение без хранения ответа? smile.gif в студию!

Ты же понял wink.gif Ответ от пользователя на эту капчу, а то с чем сравнивать хранить в DB.

_____________
Принимаю заказы, писать в ЛС
Миша
Если ответ на вопрос дёргаешь из DB, то укажи кодировку подключения к DB

_____________
Принимаю заказы, писать в ЛС
redreem
Цитата (Медведь @ 24.04.2016 - 16:19)
Если ответ на вопрос дёргаешь из DB, то укажи кодировку подключения к DB

зачем в базе хранить? https://ru.wikipedia.org/wiki/KISS_(принцип)
sergeiss
Для сравнения строк лучше использовать специальные функции http://php.net/manual/ru/function.strcmp.php

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Владимир55
Спасибо, с strcmp заработало нормально.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.