|
 38 Кб |
|
| Можно еще вопрос, немного выходящий за рамки темы, но относящийся к этому же скрипту?
В начале скрипта идет форма ввода данных:
<input type=text name=name value="<?= $_POST['name']; ?>">
|
Здесь в value подставляется такой код: <?= $_POST['name']; ?>.
При запуске скрипта это значение выводится в окно ввода, даже если подставлять одинарные либо двойные кавычки. На прикрепленном скриншоте я показал результат выполнения скрипта.
Из-за чего такое происходит? | |
|
|
|
|
|
|
|
для: uch
(08.02.2011 в 17:55)
| | Вероятно файл имеет расширение не "php" или выполняется вне самой среды php
А насчет необязательности экранирования точки в символьных классах меня берут большие сомнения. | |
|
|
|
|
|
|
|
для: Deed
(08.02.2011 в 18:45)
| | Файл имеет расширение .php и выполняется в среде PHP. Скрипт приведен в точности как в книге, но у меня он не работает должным образом :( | |
|
|
|
|
|
|
|
для: uch
(08.02.2011 в 19:26)
| | Хм... а другие PHP-скрипты у вас выполняются нормально (т.е. связка Apache+PHP настроена корректно)? | |
|
|
|
|
|
|
|
для: cheops
(08.02.2011 в 19:31)
| | Да, скрипты выполняются. phpinfo() работает.
Может быть дело в настройках интерпретатора? У меня настроено все по умолчанию, за исключением уровня вывода ошибок. | |
|
|
|
|
|
|
|
для: uch
(08.02.2011 в 19:42)
| | А попробуйте выражение <?= $_POST['name'] ?> заменить на <?php echo $_POST['name'] ?> ( в некоторых версиях PHP короткий вариант тэгов <?= ?> отключен по умолчанию). Ничего не меняется? | |
|
|
|
|
|
|
|
для: cheops
(08.02.2011 в 19:47)
| | Теперь вместо этого выражения в окно ввода выводит следующее:
<br /> <b>Notice</b>: Undefined index: name in <b>C:\server\reg.php</b> on line <b>2</b><br />
|
Как я понимаю, интерпретатор сообщил о неинициализированной переменной?
Я в начале скрипта написал так:
Но ошибка все та же. | |
|
|
|
|
|
|
|
для: uch
(08.02.2011 в 20:05)
| | Интерпретатор ругается, вернее сообщает замечание (Notice), что переменная $_POST['name'] не инициализирована. Когда скрипт создавался, он расчитывался на уровень предупреждения об ошибках, исключающий замечания Notice.
<?php
error_reporting(E_ALL & ~E_NOTICE);
?>
|
Если вывод замечаний (Notice) в php.ini включен, необходимо явно обрабатывать все случаи ввода новых переменных и элементов массивов. Т.е. писать что-то вроде
<?= if(isset($_POST['name'])) echo $_POST['name']; ?>
|
PS На серверах хост-провайдеров режим вывода замечаний обычно отключен или по крайней мере его всегда можно отключить на уровне .htaccess или функции error_reporting(). В дистрибутивах PHP по умолчанию он включен. | |
|
|
|
|
|
|
|
для: cheops
(08.02.2011 в 20:12)
| | Выставил в скрипте уровень замечаний, скрипт заработал должным образом.
Спасибо за ответ, Игорь Вячеславович. | |
|
|
|