Консультация № 47577
28.06.2006, 14:25
0.00 руб.
0 8 7
Приветствую вас еще раз уважаемые Эксперты.
Хотелось бы узнать стоил ли вводить ЯВНО в куске кода выбор esle { $error=0; } или же PHP процессор сам разбереться?
Кусок кода:

if (!isset($_POST["secretcode"]) and !isset($_SESSION["secret_number"]) and
($_POST["secretcode"]!=$_SESSION["secret_number"]) ||
intval($_POST["secretcode"])==0) $error=1;

Обсуждение

Неизвестный
28.06.2006, 14:31
общий
это ответ
Здравствуйте, Чинга!
Думаю, что лучше действительно задать значение 0. Конечно, оно по умолчанию скорее всего такое, но случаи разные бывают... А так - 100%-ная гарантияУдачи!
Неизвестный
28.06.2006, 14:33
общий
это ответ
Здравствуйте, Чинга!
Не обязательно но очень желательно
Неизвестный
28.06.2006, 15:09
общий
это ответ
Здравствуйте, Чинга!

То, что нужно обязательно определять значение переменной - это бесспорно. Как минимум по тому, что PHP язык нетипизированный. Я бы порекомендовал такой подход:

$error=0;

if (!isset($_POST["secretcode"]) and !isset($_SESSION["secret_number"]) and
($_POST["secretcode"]!=$_SESSION["secret_number"]) ||
intval($_POST["secretcode"])==0) $error=1;

При таком подходе можно использовать несколько односложных проверок подряд, вместо вложенных. И если хоть одна из них установила флаг ошибки - значит что-то не так.
Неизвестный
28.06.2006, 15:28
общий
это ответ
Здравствуйте, Чинга!
Нет не разберется. Все переменные нужно явно инициализировать. С точки зрения хорошего программирования, здесь else вообще не нужен.

$error = 0;

if (!isset($_POST["secretcode"]) and !isset($_SESSION["secret_number"]) and
($_POST["secretcode"]!=$_SESSION["secret_number"]) ||
intval($_POST["secretcode"])==0) $error=1;

Вот и все.
Неизвестный
28.06.2006, 15:52
общий
Благодарю Вас всех за ответы!
Неизвестный
28.06.2006, 18:22
общий
это ответ
Здравствуйте, Чинга!

он этого не сделает сам, нужно все указывать самому, но лучше , на мой взгляд, поставить обьявление
$error=0;
перед вашим примером.
Неизвестный
29.06.2006, 01:04
общий
это ответ
Здравствуйте, Чинга!

По вопросу ВСЕГДА задавай начальные значения переменных:

$error=0;

if (....

P.S. по коду измени and на or, а то у ты регистрируеш ошибку когда все неправильно а надо в любом случае.
Неизвестный
29.06.2006, 10:15
общий
это ответ
Здравствуйте, Чинга!
Никто сам разбиратся не будет. Результат будет таков (если $error раньше не "всплывал"):
if(isset($error)) - false
if($error==1) - false
if($error==0) - false
if($error) - false
так что после таких кусков кода будьте осторожны с анализом их результатов
Форма ответа