Это происходит потому, что мы пытаемся обра-
щаться
к переменной,
о
которой
на данный
мо-
мент ничего не известно скрипту,
ведь значение
ей не присвоено. В таком случае РНР считает, что
переменная содержит пустую строку и выдаёт за-
мечание
про
неинициализированную
(неопреде-
лённую) переменную.
Этого
можно
избежать
несколькими
путями.
Первый - это уже известный метод игнорирования
предупреждении об ошибках - символ @. Его сле-
дует указывать перед именем
проблемной
пере-
менной, приблизительно так:
ижж _
< 9
echo “a: “[email protected]$a.”<br/>\n”;
I
echo “b: “[email protected]$b.”<br/>\n”;
?>
Второй
метод,
который
обычно
используется
-
это настройка РНР таким образом, чтобы замеча-
ния Notice не выдавались вообще.
На самом деле
РНР
может
выдавать
несколько
уровней
преду-
преждений об ошибках.
Notice
(замечание)
не
являются
серьёзными
ошибками и в большинстве случаев их можно иг-
норировать.
Warning
(предупреждения) уже считаются более
серьёзным случаем и чаще всего означают некото-
рую ошибку в коде (но скрипт после такой ошибки
может выполняться дальше).
Fatal Error
(фатальная ошибка) приводит к оста-
новке выполнения скрипта.
Настройка параметров РНР выполняется, напри-
мер, при помощи файла настройки сервера Apache
- .htaccess.
Этот файл (имя с точкой в начале) сле-
дует создать в папке, где находятся скрипты, и впи-
сать в него строки конфигурации (у нас он уже су-
ществует). Например, строка:
I
php_value error_reporting 7
приводит
к
тому,
что
будут
выводиться
преду-
преждения только типа Warning и Fatal Error, а заме-
чания Notice нет. Если в скрипте появляется ошиб-
ка, которую трудно найти (например, неверное имя
переменной), то можно временно включить показ
Notice, изменив эту строку на
php_value error
reporting 8
Уровень 8 установлен в Денвере по умолчанию. Ра-
зумеется, можно вообще выключить как Warning, так
и Fatal Error, установив этот параметр в нуль.
Но в
большинстве случаев так делать не рекомендуется.
На самом деле этот механизм прозрачного пре-
вращения
параметров
URL в
переменные
внутри
скрипта не является обязательным. Он называется
Register
Globals
(регистрация
глобальных
пере-
менных) и иногда даёт простор для взлома сайтов.
Для более высокого уровня безопасности его обыч-
но выключают в
.htaccess
так:
С php_flag register_globals off
Некоторые конфигурации серверов,
на кото-
^
рых работает РНР,
имеют register_globals off с
самого начала и это правильно. Если попробовать
выполнить пример с таким значением register_glob-
als, то в переменных $а и $Ь получим пустые строки.
В таком случае значения параметров иВЕ получа-
ют другим путём. Об этой возможности я рассказал
лишь для того, чтобы вы были в курсе и могли обез-
опасить свой сайт от взлома.
Глобальный массив $_вЕТ
С
уществуют несколько
глобальных массивов,
содержащих параметры, преданные в скрипт.
Для
получения
параметров
адресной
строки
это
массив
$__СЕТ.
Пример
для
выключенного
гед1Б-
ter_globals
(разумеется,
он
будет
работать
и
при
включенном) имеет такой вид:
То есть
$_вЕТ
- это ассоциативный массив, ключа-
ми которого являются имена переменных, а значени-
ями их значения. Это весьма часто оказывается кста-
ти, когда мы не знаем точно какие переменные долж-
ны передаваться через иВЕ. В этом случае мы можем
узнать их имена по ключам $ОЕТ. Такой пример:
<?
echo “через URL в скрипт передано: “.
count($J3ET).” переменныхСЬг /> \п”;
echo “эти переменные:<Ьг /> \п”;
foreach($_GET as $key => $value) echo “$key =
fSvalue’cbr />\n";
?>
выведет все параметры URL с именами и значе-
ниями:
через URL в скрипт передано: 2 переменных
эти переменные:
а~ ‘10s
і є* ‘5*
Если необходимо просто проследить, что получе-
но на входе скрипта, то рекомендую на случай от-
ладки более компактный способ:
<?
s,
echo “<рге>”;
var_dump($_GET);
echo “</pre>”;
?>
*33В Я п Ш - S
• і : Б: - й я
который выдаст
аггау(2) {
предыдущая страница 36 Компьютер 2010 11-12 читать онлайн следующая страница 38 Компьютер 2010 11-12 читать онлайн Домой Выключить/включить текст