Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: file_get_contents и редирект 404

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
El_Commandor
Отправлено: 16 Июня, 2012 - 20:06:20
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




Доброе время суток!
Возникла проблема, над решение которой безуспешно бьюсь уже 2-ые сутки.
Есть .htacess файл, в котором прописано:
(Редирект на index.php при ошибке 404)
CODE (htmlphp):
скопировать код в буфер обмена
  1. AddDefaultCharset UTF-8
  2.  
  3. DirectoryIndex index.php
  4.  
  5. RewriteEngine On
  6.  
  7. ErrorDocument 404 /index.php


Это сделано для того, что бы CMS (самописная) поддерживала ссылки вида mysite.com/284 или mysite.com/edit 284

В файле index.php срабатывает функция, которая разбирает подобную строку:
PHP:
скопировать код в буфер обмена
  1. static function Url () {
  2.                 $url_str=substr($_SERVER['REQUEST_URI'], 1) or $url_str=1;
  3.                 $url_str=urldecode($url_str);
  4.                 $r=strpos($url_str, ' ');
  5.                 if ($r==true) {
  6.                         $url=explode(' ', $url_str);
  7.                 }
  8.                 else {
  9.                         $url=array('view', $url_str);
  10.                 }
  11.                 return $url;
  12.         }


Далее, из файла index.php происходит запрос к модулю за нужным контентом.
Запрос следующий:
PHP:
скопировать код в буфер обмена
  1. $data=file_get_contents('http://mysite.com/modules/blog/blog.php?id=284');

(В реальности запрос содержит переменные)

Но, к сожалению, на этом шаге скрипт зависает. В итоге либо прекращение его работы через 30 сек, либо Завершение работы Апача.

По вашему, чем именно обусловлено такое поведение file_get_contents?
Что следует изменить/добавить?

p.s. В файле blog.php функция по разбору url не подключается.
p.s.s. Используется Denwer, без изменений.

(Отредактировано автором: 16 Июня, 2012 - 20:07:49)

 
 Top
DeepVarvar Супермодератор
Отправлено: 16 Июня, 2012 - 21:22:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Как скажет один мой друг: *рукалицо*

Т.е. в самописной ЦМС колят дрова пинцетом, читают попой книги для слепых, рисуют туалетным ершиком картины для галереи...

Кароче я не знаю что курил автор этой ЦМС, но это шедевр...

Редиректа - перенаправления на ДРУГУЮ СТРАНИЦУ при отправке заголовка 404 никогда не происходило.

ErrorDocument 404 /index.php?такая запись вообще не нужна.

Нужно изначально проверить нет ли папки или файла, и если такового нет, передать запрашиваемые аргументы далее, в php, который в свою очередь если не найдет у себя что показать, САМ ОТПРАВИТ КЛИЕНТУ заголовок 404 и покажет какую-нибудь страничку про 404.
 
 Top
Снегурочка
Отправлено: 16 Июня, 2012 - 21:30:15
Post Id



Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 1 раз(а)





DeepVarvar пишет:
колят дрова пинцетом, читают попой книги для слепых, рисуют туалетным ершиком картины для галереи...

Ха-ха дико смешно, но смысл передан великолепно
 
 Top
El_Commandor
Отправлено: 16 Июня, 2012 - 21:39:14
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




DeepVarvar пишет:
Т.е. в самописной ЦМС колят дрова пинцетом, читают попой книги для слепых, рисуют туалетным ершиком картины для галереи...

Посмеялся, спасибо Подмигивание Доля истины в этих словах есть, впрочем сам способ, если не использовать file_get_contents - благополучно работает.

Цитата:
Нужно изначально проверить нет ли папки или файла, и если такового нет, передать запрашиваемые аргументы далее, в php, который в свою очередь если не найдет у себя что показать, САМ ОТПРАВИТ КЛИЕНТУ заголовок 404 и покажет какую-нибудь страничку про 404.

Тут поподробнее. Допустим, я опущу то правило из .htacess...
Если я введу нечто вроде /view 284 , то СРАЗУ получу 404, но как этот момент перехватить через php c последующими проверками и разборами строк? Верю, что всё относительно просто, но всё же, более подробно свою мысль изложите Радость

(Отредактировано автором: 16 Июня, 2012 - 21:41:50)

 
 Top
DeepVarvar Супермодератор
Отправлено: 16 Июня, 2012 - 22:25:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Судя по проблеме вам нужно ЧПУ и роутер, вот тут все есть в простейшем виде:
http://forum.php.su/topic.php?fo...33&topic=736
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB