IPB


Бесплатные VPN сервера

Здравствуйте, гость ( Вход | Регистрация )

> Внимание!

Задавая вопрос, обязательно укажите свой логин, домен и скрипт, которых он касается.

>> !!Ответы на 90% вопросов здесь!! <<


Правила хостинга | Общие ошибки новичков | Поиск

 
Тема закрытаНачать новую тему
PHP дура или include or die
Горбушка
сообщение 19.7.2011, 4:54
Сообщение #1


Ректор
**********

Группа: Пользователи
Сообщений: 8994
Регистрация: 3.3.2008
Из: Москва/Россия
Пользователь №: 42
Домен: m-v-l.org


В общем, при написании кода потребовалось проверять подключился ли файл и корректно ли он сделал это... Дело всё в том, что код предусматривает отсутсвие таких файлов и это не должно приводить к выводу на экран ошибок PHP...

Отличным вариантом было бы использование такого кода:
Код
@include ('index.php') or die ('нет такого файла');

Но случилось чудо!!! include не дружит с or ... unsure.gif

Вопрос: чё делать?

--------------------
upd:
Методом тыка придумал способ:
Код
if (!@include 'index.php') die ('Немогу подключить файл');

вот только очень интерено, насколько он верен rolleyes.gif Файл вроде подгружается верно, всё содержимое выполняется... Если файла нет - скрипт прекращает работу... Но будет ли это работать за пределами локали или заданного сервера?

Откуда вообще посетила такая мысля:
1) include кроме ошибки в случае отсутсвия файла возвращает false... => можно использовать IF
2) ! требуется для того, чтобы поменять true и false местами (отстутствие файла становится истиной), т.к. факт наличия файла меня мало интересует
3) @ ставится для отключения вывода ошибки об отсутсвии файла, т.к. у меня стоит свой обработчик ошибок.
4) Не использую отключение ошибок в системе через error_reporting т.к. код пишется кусками, часть кусков 100% выводит ошибки, а мне оно надо для контроля "это ещё не закончино"... На рабочей машинке можно будет @ проудалять...


--------------------
Мы - анононим. Имя нам - Легион. Мы не прощаем. Мы не забываем. Ждите нас.
Перейти в начало страницы
 
+Цитировать сообщение
Kildor
сообщение 19.7.2011, 12:02
Сообщение #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
Перейти в начало страницы
 
+Цитировать сообщение
Горбушка
сообщение 19.7.2011, 13:00
Сообщение #3


Ректор
**********

Группа: Пользователи
Сообщений: 8994
Регистрация: 3.3.2008
Из: Москва/Россия
Пользователь №: 42
Домен: m-v-l.org


Дело в том, что мне не нужно отслеживать его наличие. Меня интересует факт его отсутсвия... Если делать через fexists возникает много лишнего кода if, else, сам fexists... Думаю, моё решение будет менее затратным по ресурсам, ибо:
1) include включает в себя проверку на существование
2) Не требуется условие "иначе"
Да и выглядит симпотичнее...

Вопрос в том, будет ли оно работать на любом хостинге или мне с Debian так повезло...


--------------------
Мы - анононим. Имя нам - Легион. Мы не прощаем. Мы не забываем. Ждите нас.
Перейти в начало страницы
 
+Цитировать сообщение
vit9696
сообщение 19.7.2011, 13:03
Сообщение #4


"User friendly"
*******

Группа: Пользователи
Сообщений: 1161
Регистрация: 9.10.2010
Из: Москва
Пользователь №: 1840



Запустил у себя на PHP 5.3.6 под win32 - все без проблем....
(с) если уж под виндой..... ставь смело.


--------------------
С уважением, vit9696. Перед созданием темы или при ответе в тему, пожалуйста, обратите внимание на Правила форума.

Убедительная просьба в ЛС по вопросам хостинга не писать, т.к. я его покинул.
Перейти в начало страницы
 
+Цитировать сообщение
BaNru
сообщение 19.7.2011, 13:28
Сообщение #5


Местный флудер
*******

Группа: Пользователи
Сообщений: 1222
Регистрация: 24.5.2010
Из: Самарская обл.
Пользователь №: 1502
Домен: g63.ru


Я в свое время сделал такое
Код
if (is_file ($file)){
    include $file;
}
else {echo 'Что за х*** ты мне впариваешь?!';exit;}

Тут конечно от елсе можно избавится, в елсе выводится как раз ошибка.
И происходит два запроса к файловой системе.


--------------------
Мой простой блог возродившийся из пепла времён

Чем больше человек стыдится, тем больше он заслуживает уважения /Б.Шоу/


- бесплатное продвижение сайтов
- обмен целевым трафиком
- увеличение посещаемости сайта
Тема об "RSSFriends" на форуме NX0
Перейти в начало страницы
 
+Цитировать сообщение
Горбушка
сообщение 19.7.2011, 20:38
Сообщение #6


Ректор
**********

Группа: Пользователи
Сообщений: 8994
Регистрация: 3.3.2008
Из: Москва/Россия
Пользователь №: 42
Домен: m-v-l.org


По идеи,
Код
if (!@include 'index.php') die ('Немогу подключить файл');
делает только один запрос к файловой системе, им же подгружает нужный мне файл => скорость будет в 2 раза (ну ладно, ладно, опрасить наличие файла быстрее, чем его прочитать, согласен, в 1,5 раза) быстрее...

На винде проверил на 5.2 - тоже работает. Дебиан 5 и 6 тоже съели... Думаю, можно юзать спокойно...

Меня просто смущало сочетание !@ - первый раз его использую, а в документации про него ни слова happy.gif


--------------------
Мы - анононим. Имя нам - Легион. Мы не прощаем. Мы не забываем. Ждите нас.
Перейти в начало страницы
 
+Цитировать сообщение
BaNru
сообщение 19.7.2011, 21:29
Сообщение #7


Местный флудер
*******

Группа: Пользователи
Сообщений: 1222
Регистрация: 24.5.2010
Из: Самарская обл.
Пользователь №: 1502
Домен: g63.ru


Ну так по отдельности то они есть.

У меня просто на моем варианте не заканчивается код.
У меня там случае наличия файла, после подключения идет еще пару действий. Кстати, одно из них - что то ищ рода тобой когда подсказанное...
Помнишь я тебя спрашивал про запрос в БД и если ответ пустой. Ты говорил присвоить переменной значение и потом проверить на него.

У меня там и такое есть (правда сделано оно было еще до совета...хотя не отменяет полезность по вопросу БД - спасибо). И еще пару функций, которые должны выполняться обязательно при наличие инклуда.


--------------------
Мой простой блог возродившийся из пепла времён

Чем больше человек стыдится, тем больше он заслуживает уважения /Б.Шоу/


- бесплатное продвижение сайтов
- обмен целевым трафиком
- увеличение посещаемости сайта
Тема об "RSSFriends" на форуме NX0
Перейти в начало страницы
 
+Цитировать сообщение
Горбушка
сообщение 19.7.2011, 22:07
Сообщение #8


Ректор
**********

Группа: Пользователи
Сообщений: 8994
Регистрация: 3.3.2008
Из: Москва/Россия
Пользователь №: 42
Домен: m-v-l.org


Да просто include и or die тоже отдельно есть... А вот вместе не дружат =) Боялся, что и @ с ! не подружаться =)


--------------------
Мы - анононим. Имя нам - Легион. Мы не прощаем. Мы не забываем. Ждите нас.
Перейти в начало страницы
 
+Цитировать сообщение

Тема закрытаНачать новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 8.12.2019, 19:05