Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как такое возможно? Одинаковый код - разная реакция 
:(
    Опции темы
JaroslavTavgen
Дата 13.10.2013, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 20.9.2013

Репутация: нет
Всего: нет



В текстовом файле 4 строчки: адрес квартиры, её описание, метраж, цена. ПХП-программа выдаёт пользователю описание квартиры (вторая строчка), а затем случайным образом просит правильно назвать либо адрес, либо метраж, либо цену.

Так вот, эта программа правильно реагирует (пишет "ВЕРНО!"), если ты правильно назвал цену квартиры, и почему-то не реагирует, если ты правильно назвал адрес или метраж (пишет "HEBEPHO", несмотря на то, что данные были введены правильно. При этом код в этих случаях абсолютно идентичен! Почему программа так аномально реагирует?

(программа писалась для себя, поэтому переменные имеют такие имена)

Код

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<form name="a" method="POST" action="ap.php">
<?

$b = file_get_contents("apartments.txt");

$c = explode ("\n", $b);

if (isset($_POST["g"]))
{
echo $_POST["g"].'<br>'.$_POST["f"];
if ($_POST["g"] == $_POST["f"]) 
{
echo "ВЕРНО!";
}
else echo "HEBEPHO!";
}

echo $c[1];

$e = rand(0,2);
if ($e==0) 
{
echo "<br>Адрес: <input type=hidden name=\"f\" value=\"".$c[0]."\">";
}
if ($e==1) 
{
echo "<br>Площадь: <input type=hidden name=\"f\" value=\"".$c[2]."\">";
}
if ($e==2)
{
echo "<br>Цена продажи: <input type=hidden name=\"f\" value=\"".$c[3]."\">";
}
echo '<input type=text name="g"><input type=submit></form>';

?>


Содержание файла apartments.txt:
Код

Street
Реновирвоанная, яркая, красивая квартира с арками. 
38.6
65000


Это сообщение отредактировал(а) JaroslavTavgen - 13.10.2013, 21:32
PM MAIL   Вверх
skyboy
Дата 13.10.2013, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



а выводил-то? что у тебя в $_POST в тот момент, когда "не так, как надо работает"?
PM MAIL   Вверх
azesmcar
Дата 14.10.2013, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



Возможные причины:
  • пробел закрался где-то в конце адреса, сделай trim
  • BOM

PM   Вверх
baldina
Дата 14.10.2013, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



Цитата(JaroslavTavgen @  13.10.2013,  21:27 Найти цитируемый пост)
$b = file_get_contents("apartments.txt");
$c = explode ("\n", $b);

Код

$c = file ("apartments.txt", FILE_IGNORE_NEW_LINES);

PM MAIL   Вверх
JaroslavTavgen
Дата 14.10.2013, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 20.9.2013

Репутация: нет
Всего: нет



Цитата(baldina @ 14.10.2013,  11:26)
Цитата(JaroslavTavgen @  13.10.2013,  21:27 Найти цитируемый пост)
$b = file_get_contents("apartments.txt");
$c = explode ("\n", $b);

Код

$c = file ("apartments.txt", FILE_IGNORE_NEW_LINES);

Спасибо!

Это решило проблему.

Но остался без ответа вопрос: а в чём была проблема в том коде? Почему такая аномалия?

Добавлено @ 22:19
Цитата(skyboy @ 13.10.2013,  23:28)
а выводил-то? что у тебя в $_POST в тот момент, когда "не так, как надо работает"?

Я специально перед фразой "ВЕРНО!" или "HEBEPHO!" поставил строчку

echo $_POST["g"].'<br>'.$_POST["f"];

чтобы проконтролировать, что выводится.

$_POST["g"] - это то, что пользователь набрал в textbox (то есть, его вариант ответа)
$_POST["f"] - это правильный ответ, который передаётся в поле hidden. 

И если ты вводишь правильный ответ (я делал просто копи-пейст для чистоты эксперимента), то есть аномалия, при которой скрипт признаёт правильность ответа, если тебе надо ответить цену квартиры, и не признаёт - если адрес или площадь. Хотя коды для этих вариантов идентичны, и тоже писались для чистоты эксперимента с помощью копи-пейста (с изменением индекса массива переменной $c, которая хранит правильные ответы). Никаких лишних пробелов замечено не было.

Вариант baldina решил проблему, но мне интересно, что было её причиной?

Это сообщение отредактировал(а) JaroslavTavgen - 14.10.2013, 22:24
PM MAIL   Вверх
baldina
Дата 14.10.2013, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



Цитата(JaroslavTavgen @  14.10.2013,  22:16 Найти цитируемый пост)
Почему такая аномалия?

аномалии нет. просто "\n" не весь "конец строки" в том файле. концы бывают разные...
чтобы об этом не думать, надо поручить дело мудрой библиотечной функции, которая все про концы строк знает)))

Добавлено через 5 минут и 57 секунд
ЗЫ: echo не абсолютно надежный инструмент, т.к. в природе случаются не только отображаемые символы
http://ideone.com/N1jaTC
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1471 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.