[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Отладка скриптов на ошибки
YVSIK
доброго времени !!
ещё все пока работает и не особо так чтобы не ясно ПуЧуМу??
и всё же как выдумаете
при помощи этого error_reporting(E_ALL); конечно очень удобно
отлавливать что не так, да и денвер не дает дремать, и это хорошо.
Вот и вопрос на удаленке нет ошибок а на ПК в денвере есть говорит что
Цитата
Это предупреждение, вероятнее всего, возникает вследствие высокого уровня контроля ошибок в PHP, по умолчанию установленного в Денвере (E_ALL). Такой режим вывода ошибок является рекомендуемым и сильно помогает при отладке скриптов. Однако множество готовых скриптов требуют более низкого уровня ошибок.

проверяем почему
Цитата
Вы можете установить более слабый контроль ошибок одним из следующих способов:
    Впишите в скрипты строчку:
    Error_Reporting(E_ALL & ~E_NOTICE);
    Этот способ особенно удобен, если в скрипте есть один файл (конфигурационный), который подключается всеми остальными.
    Рекомендуемый способ. Создайте в директории со скриптом файл .htaccess следующего содержания:
    php_value error_reporting 7
    Исправьте в /usr/local/php/php.ini значение error_reporting на E_ALL & ~E_NOTICE. Этот способ не является рекомендуемым и может привести к серьезным неудобствам при отладке!

а ругается он на вот это
if(!$_SESSION['login'])
и он полностью прав, так думаю,ведь сессии нет вот он и предупреждает и тд.
как вы думаете что в этом случае будет лечше
подставить в папку новый файл, отдать команду чтоб он не реагировал на этот скрипт, может еще что-нибудь сделать ?
какие ваши мнения по этому поводу будут...user posted image



Спустя 10 минут, 30 секунд (9.09.2011 - 09:22) Renden написал(а):
YVSIK
мб isset?)
if(!isset($_SESSION['login']))

Спустя 6 минут (9.09.2011 - 09:28) inpost написал(а):
if(!$_SESSION['login']) - это проверка на TRUE или FALSE, а в твоём примере этой сессионной переменной нет, значит они не может быть ни правдой ни ложью, поэтому ошибка.

Спустя 5 минут, 53 секунды (9.09.2011 - 09:34) YVSIK написал(а):
Renden во как Классно!! очень даже пригодилось ваше замечание .
с толку сбивает что на хосте же работает, вот и потому и ставится вопрос так, или не обращать внимания, или делать как ты предлагаешь,
ваш вариант конечно предпочтительней,
спасибо!!
и вот и полный ответ от inpost,
Всё ясно !! только второй вариант значит!

Спустя 1 час, 23 минуты, 52 секунды (9.09.2011 - 10:58) killer8080 написал(а):
YVSIK
правильней будет
if(empty($_SESSION['login']))

потому что
if(!$_SESSION['login'])

вернёт true если переменная не объявлена или
//$_SESSION['login'] === null
$_SESSION['login'] === false
$_SESSION['login'] === 0
$_SESSION['login'] === 0.0
$_SESSION['login'] === ''

а isset вернёт в этих случаях false так как она не проверяет значение переменной, а только наличие самой переменной.

Спустя 2 минуты, 45 секунд (9.09.2011 - 11:01) Winston написал(а):
Цитата (killer8080 @ 9.09.2011 - 10:58)
а isset вернёт в этих случаях false так как она не проверяет значение переменной, а только наличие самой переменной.

Здесь написано
Цитата
Determine if a variable is set and is not NULL

Спустя 25 минут, 32 секунды (9.09.2011 - 11:26) killer8080 написал(а):
Winston
Точно smile.gif
значит $_SESSION['login'] === null из списка нужно выкинуть.

Спустя 12 минут, 5 секунд (9.09.2011 - 11:38) YVSIK написал(а):
killer8080 сразу не не прочитал как ты написал )) biggrin.gif
мельком подумал что опять тож что и раньше
Цитата
if(!isset($_SESSION['login']))

вот и разделение получилось что для чего надо использовать!!!
когда и что надо isset или empty
хА... biggrin.gif да же и не ожидал такого поворота темы !!!

isset — Устанавливает, определена ли переменная
empty — Проверяет переменную на пустоту

в моем случае проверка -- есть ли перееменная в сессии ?
думаю empty конечно предпочтительней, ведь проверяестя же есть ли в ней что али нет !!!
killer8080у респект!!

Спустя 6 минут, 55 секунд (9.09.2011 - 11:45) Winston написал(а):
Цитата (YVSIK @ 9.09.2011 - 11:38)
isset — Устанавливает, определена ли переменная

+ еще проверяет, чтобы переменная была !== NULL
Цитата (YVSIK @ 9.09.2011 - 11:38)
empty — Проверяет переменную на пустоту

+ если ты напишешь $_SESSION['login'] = 0;
А потом проверишь
if(empty($_SESSION['login']))
echo 'Пусто';
else
echo 'Не пусто';

То тебе будет выдано Пусто

Спустя 14 минут, 48 секунд (9.09.2011 - 12:00) YVSIK написал(а):
Winston вот я так и делаю !
Свернутый текст
if(empty($_SESSION['login']))
{
$result = mysql_query("SELECT id FROM `matr_users` WHERE `login` = '$login'",$db);

if(mysql_num_rows($result)>0)
{
$_SESSION['login'] = $login;
include RYYT.'skins/tpl/menu/output.tpl';
}
else
{
unset($login);
include RYYT.'skins/tpl/menu/authorizes.tpl';
}
}

else
{
include RYYT.'skins/tpl/menu/output.tpl';
}

если пусто отправляю на аторизацию, что и требовалось доказать :D :D :D :D четыре ))user posted image
по моему самое то что надо для моего примера!

Спустя 9 минут, 54 секунды (9.09.2011 - 12:10) Winston написал(а):
Если в $login будет значение O'Relly то получится печалько вот здесь
Цитата (YVSIK @ 9.09.2011 - 12:00)
mysql_query("SELECT id FROM `matr_users` WHERE `login` = '$login'",$db);


Спустя 7 минут, 32 секунды (9.09.2011 - 12:17) YVSIK написал(а):
Winston это я пока собираю все в кучу и пока не было боевых условий
пока только собираю функционал сайта ) расставляю все по местам
потом буду наращивать вот тогда и буду подоное оттачивать
пока лезут ошибки и я их устроняю на самом простом примере
к стати с лету уже сделал так
$result = mysql_query("SELECT `login` FROM `matr_users` WHERE `login` = '$login'", $db);

чтоб не парить PHP попусту))
потом буду прицеплять проверку по пассу и шифровать ))
да; ещё нужны буду куки . до них пока не дошло дело!user posted image

вЫ)сё что сказано ниже принимается полностью ) вО!! ну бывают же дни когда все понимается и спориться :D

Спустя 2 минуты, 40 секунд (9.09.2011 - 12:20) Winston написал(а):
$result = mysql_query("SELECT `login` FROM `matr_users` WHERE `login` = '" . mysql_real_escape_string($login) . "'", $db);

Лучше все сразу писать так как должно, а не оставлять на потом... Потому что потом, ты просто не сможешь все исправить, забудешь/пропустишь и т.д.

Спустя 35 минут, 39 секунд (9.09.2011 - 12:56) Игорь_Vasinsky написал(а):
YVSIK
Запомни для себя основные моменты:

1. ! - знак отрицания (не равно, не истина)
2. empty() - есть, но пусто
3. isset() - существует, есть

Цитата
$db);


зачем использовать второй аргумент у mysql_query(), если сервер один

Спустя 2 часа, 40 минут, 34 секунды (9.09.2011 - 15:36) killer8080 написал(а):
Игорь_Vasinsky
по второму пункту не согласен, нужно так
2. empty() - есть, но пусто
empty($var) является аналогом !$var, с тем отличием, что если переменной нет, то это не вызовет ошибку.

Спустя 25 минут, 39 секунд (9.09.2011 - 16:02) Игорь_Vasinsky написал(а):
killer8080
Цитата
по второму пункту не согласен, нужно так
2. empty() - есть, но пусто
empty($var) является аналогом !$var, с тем отличием, что если переменной нет, то это не вызовет ошибку.


empty($var) и !$var - это же совершенно разные вещи :blink:

!$var - подразумевает, что $var существует и равна false
empty($var) - подразумевает, что переменная существует, но она пустая - без значения.

Цитата
2. empty() - пусто


а если переменной нету - то что пусто??? её фантом?

так что: подразумевается, что переменная уже есть, но она пуста.

перед тем как проверить переменную - нужно проверить - существует ли она- для этого и isset().

Т.е. доля правды в твоих словах есть, логичней

isset(empty($var));
- есть и пуста, а я подразумевал - что переменная уже прошла проверку isset() - т.е. логично же использовать empty - когда переменная существует. Поэтому и: есть и пуста.

Спустя 14 минут, 16 секунд (9.09.2011 - 16:16) killer8080 написал(а):
Цитата (Игорь_Vasinsky @ 9.09.2011 - 16:02)
empty($var) и !$var - это же совершенно разные вещи

чем они отличаются я уже написал.
Цитата (Игорь_Vasinsky @ 9.09.2011 - 16:02)
!$var - подразумевает, что $var существует и равна false

Да нет,
if(!$var)
равносильно
if($var === false || $var === '' || $var === null || $var === 0 || $var === '0' || $var === 0.0)

Цитата (Игорь_Vasinsky @ 9.09.2011 - 16:02)
перед тем как проверить переменную - нужно проверить - существует ли она- для этого и isset().

Т.е. доля правды в твоих словах есть, логичней

перед empty не нужно проверять переменную на существование.
А это вообще нелепая конструкция
isset(empty($var));

Спустя 7 минут, 52 секунды (9.09.2011 - 16:24) killer8080 написал(а):
if(empty($var))

заменяет
if(!isset($var) || !$var)

Спустя 14 минут, 37 секунд (9.09.2011 - 16:39) killer8080 написал(а):
Да ещё забыл упомянуть - пустой массив($var = array();). тоже подпадает под условие
if(!$var)

Спустя 1 минута, 56 секунд (9.09.2011 - 16:41) Игорь_Vasinsky написал(а):
да..да. всё логично. перемудрил.


_____________
«Гнусное свойство карликовых умов приписывать
________________!свое духовное убожество другим!»
___
О) как-же он прав=>__________________ © Оноре де Бальзак.

отличный хост(рекомендую !! )
My MVC-CMV
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.