404 средствами PHP

Фанат

oncle terrible
Команда форума
наличие документа проверяет АПАЧ!!!
И поэтому если ему не сказать "запусти такой-то скрипт при отсутствии запрошенного файла", то РНР никогда и не узнает, что какой-то файл вообще запрашивался!!!

ФАК читать когда научимся?
 

Popoff

popoff.donetsk.ua
Originally posted by Фанат
идиоты...
2Фанат: Без сомнения, ты умный :) Никто на твой ум и не покушается :)

Незнание - есть блаженство (с) Матрица
Может, людям, которые не знают, завидовать нужно? :)
 

Фанат

oncle terrible
Команда форума
с удовольствием позавидую.
Если они не будут с идиотскими советами лезть в тему, в которой они ни бельмеса не смыслят.
 

Popoff

popoff.donetsk.ua
наличие документа проверяет АПАЧ!!!
Очень похоже на то, что человек, задавший вопрос, испытывает сложности в его формулировке. Он так и не сказал, наличие какого именно документа нужно проверять? Может, он под документом имеет в виду подключаемый модуль? Тогда апаче ничего не проверит :)
ФАК читать когда научимся?
В этом вопросе содержится упрек и агрессия :) Не думаю, что это самый хороший способ научить человека чему-нибудь. Люди обычно лучше воспринимают информацию, высказанную в доброжелательной форме :)
 

Popoff

popoff.donetsk.ua
Если они не будут с идиотскими советами лезть в тему, в которой они ни бельмеса не смыслят.
Если в моих словах содержится, ошибка, то ты, пожалуйста, скажи, где именно и какая именно :) Представь, если бы пхп вместо сообщения об ошибке в таком виде, как оно есть сейчас, выдавал бы просто "ошибка!" :) все :) а дальше сам где хочешь ее там и ищи :)
 

Фанат

oncle terrible
Команда форума
si, у меня к тебе будет просьба. Убери это чудо-юдо в рид-онли?
Пусть сублимируется где-нибудь в другом месте.
Спасибо.
 

4you

еееххххх....
2 Фанат
Я задал очень простой вопрос: можно ли без использования .htaccess или httpd.conf сообщить пользователю что страница не найдена (Error 404). Что-то в этом роде:
PHP:
if(условие) {header ("HTTP/1.0 404 Not Found");exit();}
Я не знаю как это сделать, поэтому и зашел в форум, предворительно почитав правили и посмотрев в поиске.
 

Фанат

oncle terrible
Команда форума
4you, до тебя дошло, что та самая директива, без которой ты хочешь обойтись - это и есть способ сказать апачу, что надо подключить к процессу РНР?

Что РНР не принимает никаких запросов от пользователя?
Что принимает их, как написано в факе, апач, по расширению файла определяет, какому модулю файл надо отдать на обработку, и отдает?
Что что если запрошенного файла нет, то и отдать нечего? И что апач в этом случае, если ему не сказать обратного, выдаст стандартный заголовок сам?
 

Фанат

oncle terrible
Команда форума
ясно.
не понял.

поясняю.
.htaccess или httpd.conf - это НЕ средства общения РНР с ЮЗЕРОМ.
Это средство общения ВЕБМАСТЕРА с сервером АПАЧ.

остальное я тебе уже написал выше. по поводу твоей дурацкой строчки, которую ты, если бы подумал головой, то и сам бы понял, что просто НЕКУДА писать. что строчку эту можно написать только в РНР файле. который юзер вызывает.
но если юзер вызывает этот файл, то и писать ничего не надо, поскольку файл есть.
А если файла нет, то значит, Апач его и НЕ ВЫЗОВЕТ! ПОТОМУ, ЧТО ЕГО НЕТ!

И ты собрался писать свою строчку в файл, КОТОРЫЙ НЕ СУЩЕСТВУЕТ!

И чтобы это понять, не надо быть семи пядей во лбу, а надо только постараться понять, чего ты хочешь.

В правилах, которые ты читал, написано, что сначала надо посмотреть в фак.
а в факе как раз и написано, как работает РНР.
 

Quest

Guest
Даааааааа, тему разжевали .. а все напрасно . нет в РНР таких средств что б за сервер определять есть ли нужный документ на диске... (исключение составляет когда обращаешься например к index, который ищет по своей директории (у мя так сделано)).... так что Обработать 404 - без .htaccess или ....conf - невозможно ((((((((
 

Popoff

popoff.donetsk.ua
Сколько людей, столько и пониманий одного и того же вопроса. Очень часто оказывается, что то, что для опытных программистов является самим собой разумеющимся, для начинающих - далеко не тривиальный вопрос. И даже среди опытных программистов бывает, что разные люди под одним и тем же термином понимают разные вещи.

Вот, например, в этой статье по модульному программированию предложен вариант, в котором есть главный модуль, в него через GET передается имя модуля. В методе, предложенном в статье имеются явнные недостатки, например, я могу в качестве имени модуля передать что-нибудь типа ../../../../../ets/passwd :) Но там есть проверка на то, что модуль не существует (файл модуля не существует). Как вариант действия, при обнаружении несуществующего модуля в статье предложено подключать "модуль по умолчанию". Другой возможный вариант - выдавать системное сообщение HTTP404 :) Это особенно полезно, когда скрипт используется как интерфейс между сервером и Вашим собственным клиентом (например, что-нибудь похожее на ICQ -- сервер в интернете и свой клиент). Хотя, как вариант, может использоваться и в обычных условиях, когда юзер пользуется експлорером. :)

Я ни в коем случае не пропагандирую стиль программирования, описанный в той статье. Сам я предпочитаю создавать много папок и много файлов. Модулем в таком случае, получается, будут confing, header, footer, может, что-нибудь еще. Понятно, что в таком случае сделать проверку несуществования модуля и выдать заголовок HTTP404 средствами php невозможно.

Другой вопрос, является ли модуль - документом? И знает ли об этом человек, задавший изначальный вопрос :)

И еще очень похоже на то, что 4you плохо разбирается в том, чем отличается "отобразить свою страничку" от "напечатать специальный заголовок" Но только это не означает, что кто-то здесь идиот. Это озночает только то, что означает: человек в этом не разбирается. Ничего плохого я в этом не вижу. Каждый человек в чем-то не разбирается. И обвинять в плохих знаниях могут либо преподаватели (у них работа такая) либо неуверенные в себе люди (на фоне других, униженных, они чувствуют себя увереннее). :)
 

4you

еееххххх....
2Popoff

Где-то в чем-то я разбираюсь, а где-то нет:) В данном вопросе нет. Поэтому и пришел сюда... :)
 
Сверху