PHP дура или include or die |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
PHP дура или include or die |
![]()
Сообщение
#1
|
|
![]() Ректор ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 8994 Регистрация: 3.3.2008 Из: Москва/Россия Пользователь №: 42 Домен: m-v-l.org ![]() |
В общем, при написании кода потребовалось проверять подключился ли файл и корректно ли он сделал это... Дело всё в том, что код предусматривает отсутсвие таких файлов и это не должно приводить к выводу на экран ошибок PHP...
Отличным вариантом было бы использование такого кода: Код @include ('index.php') or die ('нет такого файла'); Но случилось чудо!!! include не дружит с or ... ![]() Вопрос: чё делать? -------------------- upd: Методом тыка придумал способ: Код if (!@include 'index.php') die ('Немогу подключить файл'); вот только очень интерено, насколько он верен ![]() Откуда вообще посетила такая мысля: 1) include кроме ошибки в случае отсутсвия файла возвращает false... => можно использовать IF 2) ! требуется для того, чтобы поменять true и false местами (отстутствие файла становится истиной), т.к. факт наличия файла меня мало интересует 3) @ ставится для отключения вывода ошибки об отсутсвии файла, т.к. у меня стоит свой обработчик ошибок. 4) Не использую отключение ошибок в системе через error_reporting т.к. код пишется кусками, часть кусков 100% выводит ошибки, а мне оно надо для контроля "это ещё не закончино"... На рабочей машинке можно будет @ проудалять... -------------------- Мы - анононим. Имя нам - Легион. Мы не прощаем. Мы не забываем. Ждите нас.
|
|
|
![]()
Сообщение
#2
|
|
Абитуриент ![]() ![]() ![]() Группа: Пользователи Сообщений: 31 Регистрация: 8.7.2011 Пользователь №: 3811 Домен: ufoai.nx0.ru ![]() |
А почему бы не проверить файл перед тем как его инклюдить? Что-то типа if (fexists($filename)) include($filename) else die "…";
-------------------- Login: kildor
site: http://ufoai.nx0.ru, script: SelfMade CMS JabberID: kildor@jabber.ru |
|
|
![]()
Сообщение
#3
|
|
![]() Ректор ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 8994 Регистрация: 3.3.2008 Из: Москва/Россия Пользователь №: 42 Домен: m-v-l.org ![]() |
Дело в том, что мне не нужно отслеживать его наличие. Меня интересует факт его отсутсвия... Если делать через fexists возникает много лишнего кода if, else, сам fexists... Думаю, моё решение будет менее затратным по ресурсам, ибо:
1) include включает в себя проверку на существование 2) Не требуется условие "иначе" Да и выглядит симпотичнее... Вопрос в том, будет ли оно работать на любом хостинге или мне с Debian так повезло... -------------------- Мы - анононим. Имя нам - Легион. Мы не прощаем. Мы не забываем. Ждите нас.
|
|
|
![]()
Сообщение
#4
|
|
"User friendly" ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1161 Регистрация: 9.10.2010 Из: Москва Пользователь №: 1840 ![]() |
Запустил у себя на PHP 5.3.6 под win32 - все без проблем....
(с) если уж под виндой..... ставь смело. -------------------- С уважением, vit9696. Перед созданием темы или при ответе в тему, пожалуйста, обратите внимание на Правила форума.
Убедительная просьба в ЛС по вопросам хостинга не писать, т.к. я его покинул. |
|
|
![]()
Сообщение
#5
|
|
![]() Местный флудер ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1222 Регистрация: 24.5.2010 Из: Самарская обл. Пользователь №: 1502 Домен: g63.ru ![]() |
Я в свое время сделал такое
Код if (is_file ($file)){ include $file; } else {echo 'Что за х*** ты мне впариваешь?!';exit;} Тут конечно от елсе можно избавится, в елсе выводится как раз ошибка. И происходит два запроса к файловой системе. -------------------- Мой простой блог возродившийся из пепла времён
Чем больше человек стыдится, тем больше он заслуживает уважения /Б.Шоу/ ![]() - бесплатное продвижение сайтов - обмен целевым трафиком - увеличение посещаемости сайта Тема об "RSSFriends" на форуме NX0 |
|
|
![]()
Сообщение
#6
|
|
![]() Ректор ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 8994 Регистрация: 3.3.2008 Из: Москва/Россия Пользователь №: 42 Домен: m-v-l.org ![]() |
По идеи,
Код if (!@include 'index.php') die ('Немогу подключить файл'); делает только один запрос к файловой системе, им же подгружает нужный мне файл => скорость будет в 2 раза (ну ладно, ладно, опрасить наличие файла быстрее, чем его прочитать, согласен, в 1,5 раза) быстрее...На винде проверил на 5.2 - тоже работает. Дебиан 5 и 6 тоже съели... Думаю, можно юзать спокойно... Меня просто смущало сочетание !@ - первый раз его использую, а в документации про него ни слова ![]() -------------------- Мы - анононим. Имя нам - Легион. Мы не прощаем. Мы не забываем. Ждите нас.
|
|
|
![]()
Сообщение
#7
|
|
![]() Местный флудер ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1222 Регистрация: 24.5.2010 Из: Самарская обл. Пользователь №: 1502 Домен: g63.ru ![]() |
Ну так по отдельности то они есть.
У меня просто на моем варианте не заканчивается код. У меня там случае наличия файла, после подключения идет еще пару действий. Кстати, одно из них - что то ищ рода тобой когда подсказанное... Помнишь я тебя спрашивал про запрос в БД и если ответ пустой. Ты говорил присвоить переменной значение и потом проверить на него. У меня там и такое есть (правда сделано оно было еще до совета...хотя не отменяет полезность по вопросу БД - спасибо). И еще пару функций, которые должны выполняться обязательно при наличие инклуда. -------------------- Мой простой блог возродившийся из пепла времён
Чем больше человек стыдится, тем больше он заслуживает уважения /Б.Шоу/ ![]() - бесплатное продвижение сайтов - обмен целевым трафиком - увеличение посещаемости сайта Тема об "RSSFriends" на форуме NX0 |
|
|
![]()
Сообщение
#8
|
|
![]() Ректор ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 8994 Регистрация: 3.3.2008 Из: Москва/Россия Пользователь №: 42 Домен: m-v-l.org ![]() |
Да просто include и or die тоже отдельно есть... А вот вместе не дружат =) Боялся, что и @ с ! не подружаться =)
-------------------- Мы - анононим. Имя нам - Легион. Мы не прощаем. Мы не забываем. Ждите нас.
|
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 8.12.2019, 8:45 |