Undefined variable.
Наверняка это реально исправить в настройках httpd.conf. или нет. Только могу предположить. И еще. Скажите, что лучше? DENWER или apache2+MySQL+PHP5? Просто хочу услышать ваше мнение?
Спустя 5 минут, 17 секунд (30.03.2011 - 20:49) alex12060 написал(а):
<?php
echo $var;
?>
<?php
$var = null;
echo $var;
?>
Разница есть?
Спустя 4 минуты, 40 секунд (30.03.2011 - 20:54) m4a1fox написал(а):
alex12060
Вроде да. Первая - переменная не определена. А второе - переменная - пуста.
Вроде да. Первая - переменная не определена. А второе - переменная - пуста.
Спустя 3 минуты, 3 секунды (30.03.2011 - 20:57) alex12060 написал(а):
чтобы такого небыло, есть 4 варианта:
- Меняй в php.ini с error_reporting = E_ALL на error_reporting = E_ALL & ~ E_NOTICE
- Ставь вначале скрипта error_reporting(E_ALL & ~ E_NOTICE);
- Либо в .htaccess пиши php_falg error_reporting "E_ALL & ~ E_NOTICE"
- Либо инициализируй везде переменные с начальным значением null
Спустя 46 секунд (30.03.2011 - 20:57) alex12060 написал(а):
Цитата |
Undefined variable |
C англ. Неопределенная переменная
Спустя 16 минут, 14 секунд (30.03.2011 - 21:14) inpost написал(а):
m4a1fox
Эта беда, так как нарушена логика, обращается к переменной там, где не должна.
Можно писать так: echo @$var; если не всегда она определена.
Эта беда, так как нарушена логика, обращается к переменной там, где не должна.
Можно писать так: echo @$var; если не всегда она определена.
Спустя 10 минут, 30 секунд (30.03.2011 - 21:24) Trianon написал(а):
alex12060
Как минимум первых трех вариантов предлагать не стоило бы.
Поскольку от неопределенных переменных ни один из них не избавляет.
Как минимум первых трех вариантов предлагать не стоило бы.
Поскольку от неопределенных переменных ни один из них не избавляет.
Спустя 7 минут, 40 секунд (30.03.2011 - 21:32) alex12060 написал(а):
Trianon
Не избавляет, но нотисы убивает.
Не избавляет, но нотисы убивает.
Спустя 7 минут, 42 секунды (30.03.2011 - 21:40) Trianon написал(а):
alex12060
После чего разработчик теряет контроль над ситуацией чуть более чем полностью.
После чего разработчик теряет контроль над ситуацией чуть более чем полностью.
Спустя 6 минут, 17 секунд (30.03.2011 - 21:46) alex12060 написал(а):
Trianon
Я уверен, что это банальные замешательства, и небольшие недочеты, которые впоследствии будут устранны. Но, конечно-же, соглашусь, что даже нотисов быть не должно в скриптах.
Я уверен, что это банальные замешательства, и небольшие недочеты, которые впоследствии будут устранны. Но, конечно-же, соглашусь, что даже нотисов быть не должно в скриптах.
Спустя 1 час, 20 минут, 26 секунд (30.03.2011 - 23:06) 7ion написал(а):
m4a1fox
В начале скрипта пропиши error_reporting(E_ALL); и тяни эту строчку из проекта в проект.
Избавиться от этого нотиса можно либо проверяя переменную empty, либо объявив ее согласно типу, в котором она будет использоваться.
В начале скрипта пропиши error_reporting(E_ALL); и тяни эту строчку из проекта в проект.
Избавиться от этого нотиса можно либо проверяя переменную empty, либо объявив ее согласно типу, в котором она будет использоваться.
Спустя 1 час, 23 минуты, 44 секунды (31.03.2011 - 00:30) Trianon написал(а):
7ion
значение error_reporting проще прописать в .htaccess
значение error_reporting проще прописать в .htaccess
Спустя 1 час, 9 минут, 32 секунды (31.03.2011 - 01:40) Invis1ble написал(а):
m4a1fox
Я бы не советовал тебе заглушать ошибки, понижая уровень их отображения.
Нужно учиться правильно кодить, а именно - инициализировать все переменные перед их использованием. Подавление ошибок, не важно каким способом, как уже заметил Trianon, ставит разработчика в незавидное положение, когда он теряет контроль над собственным кодом.
Насчет сервера: чесно говоря никогда не пользовался денвером, имхо, лучше использовать "чистую" связку и настраивать ее самому. Больше опыта получишь и будешь знать, как что выставляется. Вот например, у меня есть товарищ, который довольно хорошо разбирается, но до сих пор не знает некоторых элементарных настроек в php.ini, потому что всегда пользовался denwer'ом.
Я бы не советовал тебе заглушать ошибки, понижая уровень их отображения.
Нужно учиться правильно кодить, а именно - инициализировать все переменные перед их использованием. Подавление ошибок, не важно каким способом, как уже заметил Trianon, ставит разработчика в незавидное положение, когда он теряет контроль над собственным кодом.
Насчет сервера: чесно говоря никогда не пользовался денвером, имхо, лучше использовать "чистую" связку и настраивать ее самому. Больше опыта получишь и будешь знать, как что выставляется. Вот например, у меня есть товарищ, который довольно хорошо разбирается, но до сих пор не знает некоторых элементарных настроек в php.ini, потому что всегда пользовался denwer'ом.
Спустя 52 минуты, 23 секунды (31.03.2011 - 02:32) inpost написал(а):
Invis1ble
Хорошо, что ты не про меня пишешь, потому что я даже денвером не пользуюсь =)))
Хорошо, что ты не про меня пишешь, потому что я даже денвером не пользуюсь =)))
Спустя 9 минут, 54 секунды (31.03.2011 - 02:42) Invis1ble написал(а):

Спустя 2 часа, 8 минут, 29 секунд (31.03.2011 - 04:50) kirik написал(а):
Цитата (inpost @ 30.03.2011 - 18:32) |
я даже денвером не пользуюсь |
inpost - человек-php интерпритатор!
Спустя 57 минут, 6 секунд (31.03.2011 - 05:47) inpost написал(а):
kirik

Спустя 7 часов, 48 минут, 46 секунд (31.03.2011 - 13:36) m4a1fox написал(а):
Всем спасибо за подсказки. Как я понял таких сообщений об ошибка вообще не должно быть. И переменные необходимо инициализировать сразу. Но если так, то теперь придется кучу кода переделать. И если честно не понимаю, именно логически, почему так происходит. По сути, ошибка возникает, если в коде не определенна переменная, но ведь она становится определенной, после того как я совершу действие. Вот собственно не понятно, почему чистая связка apache2+MySQL+PHP5 на это не так ругается как DENWER. Если можно, не могли бы вы привести пример.... Спасибо.
Спустя 3 часа, 39 минут, 53 секунды (31.03.2011 - 17:16) inpost написал(а):
m4a1fox
при чём тут denwer или чистая связка? php.ini, там стоит настройка отображать Нотисы и отображать варнинги. Там ON, там OFF, в этом разница, одинаково настрой их, разницы не будет.
при чём тут denwer или чистая связка? php.ini, там стоит настройка отображать Нотисы и отображать варнинги. Там ON, там OFF, в этом разница, одинаково настрой их, разницы не будет.
Спустя 4 часа, 24 минуты, 8 секунд (31.03.2011 - 21:40) kirik написал(а):
Цитата (m4a1fox @ 31.03.2011 - 05:36) |
но ведь она становится определенной, после того как я совершу действие |
Так сначала нужно совершать это действие, чтобы определить переменную, а потом уже совершать действия над ней

Спустя 50 минут, 56 секунд (31.03.2011 - 22:31) Painerman написал(а):
Меня тоже раздражают подобные ошибки и тоже приходится писать
$var='';
или постоянно проверять
if(isset($var)) echo $var;
else echo "Ну и хрен с ней";

$var='';
или постоянно проверять
if(isset($var)) echo $var;
else echo "Ну и хрен с ней";

Спустя 4 минуты, 51 секунда (31.03.2011 - 22:36) Trianon написал(а):
входные параметры можно спокойно получать конструкцией вроде
$var = @$_GET['id'];
А остальные переменные всяко должны появляться исключительно с ведома программиста, так что проблема надумана напрочь.
$var = @$_GET['id'];
А остальные переменные всяко должны появляться исключительно с ведома программиста, так что проблема надумана напрочь.
Спустя 23 минуты, 54 секунды (31.03.2011 - 23:00) m4a1fox написал(а):
Trianon
Решил пока не парится по этому поводу. Всяко рано или поздно приду к этому. Но пока что оставлю. Всем спасибо за подсказки.
Решил пока не парится по этому поводу. Всяко рано или поздно приду к этому. Но пока что оставлю. Всем спасибо за подсказки.