Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > $_SERVER["REQUEST_URI"]


Автор: alexey___ 16.11.2007, 09:27
Здравствуйте!

структура сайта моего примерно следующая

main/
    - news/
        - 2007/
             - 11/11.txt
             - 11/12.txt
    - contact/
        - index.txt
    - index.txt

так вот
чтобы получить текст из файла /main/index.txt я создаю ссылку /main/ 

Код

    $REQUEST_URI = $_SERVER["REQUEST_URI"];


и перменная $REQUEST_URI = /main/
т .е если в конце адреса есть символ "/ ", то к строке автоматически доавляется index.txt и считывается от туда информация
это работает!


если мне нужно обратиться к файлу, то я делаю следующую ссылку:
/main/news/2007/11/11

вот здесь эта штука
Код

    $REQUEST_URI = $_SERVER["REQUEST_URI"];

перестаёт работать

вопрос такой: - как мне получить значение ссылки, т.е. когда я нажимаю на какой либо пункт меню, как мне получить от туда значение (строку адрес)

 

Автор: ShurikA 16.11.2007, 09:38
Цитата(alexey___ @  16.11.2007,  08:27 Найти цитируемый пост)
вот здесь эта штука
Выделить всёкод PHP
1:
    
    $REQUEST_URI = $_SERVER["REQUEST_URI"];

перестаёт работать

а что значит не работает, что она выдаёт?
По идее ей всё равно.

Автор: alexey___ 16.11.2007, 09:54
Пишет "невозможно найти страницу" в Explorer.


"Not Found

The requested URL /main/2007/11/11 was not found on this server.
Apache/2.0.55 (Win32) PHP/5.2.1 Server at localhost Port 80" в опере.

Автор: ShurikA 16.11.2007, 10:06
Цитата(alexey___ @  16.11.2007,  08:54 Найти цитируемый пост)
Пишет "невозможно найти страницу" в Explorer.


"Not Found

Ничего не понял.
покажи код того что ты делаешь.

Автор: alexey___ 16.11.2007, 10:15
вот код, который формирует наполнение сайта

Код

  $REQUEST_URI = $_SERVER["REQUEST_URI"]; 
  $file=ereg_replace('/$','/index.html',$REQUEST_URI);
  $file=str_replace('.html','',$file);

  $m=explode('/',$file);  // Разбиваем путь по папкам
  $file=ereg_replace('^/','',$file);


  if ($text=@file($file.'.txt')) { $dt=filemtime($file.'.txt'); }
  elseif (file_exists($m[1].'.php')) { require($m[1].'.php'); }
  else die('Error 404: Page not found');
  Header('http/1.0: 200 Ok');

  // Загрузка шаблонов и меню
  $page=implode(file('page.html'),'');
  $m0='.';
  foreach ($m as $m1)
    $submenu=str_replace("\n",' &bull; ',@implode(@file(($m0.=$m1.'/').'menu.txt'),'')).'<br>'.$submenu;
  $menu=str_replace("\n",' &bull; ',@implode(@file('menu.txt'),''));
  // Семантический разбор текстового файла
  $title=$text[0];
  $text[0]='';
  $text=implode($text,'');
  $text=str_replace(array("\r\n\r\n",'<a-'),array('<p>','<a href='),$text);  // Внутренние ссылки
  $text=ereg_replace('<i-([^ >]*)([^>]*)>','<a href=\1 target=_blank><img align=left width=250 src=\1 \2></a>',$text);
  while (ereg('(\@([^\.]+\.php)(/[^/]+/)*)',$text1[$itext],$php))
    {
    $param=str_replace('/','',$php[3]);
    include($php[2]);
    $text=str_replace($php[1],$replace,$text);
    };
  $html=str_replace(array('{title}','{menu}','{submenu}','{text}'),array($title,$menu,$submenu,$text),$page);
  echo($html);


на Apache 1.3 работает всё абсолютно, а на Apache 2 возникает эта ошибка

если я вместо этого
Код

 $REQUEST_URI = $_SERVER["REQUEST_URI"];


напишу

Код

 $REQUEST_URI = '/main/news/2007/11/11';


то всё работает

Автор: ShurikA 16.11.2007, 10:52
попробуй в начале фаила добавить.
Код

echo $_SERVER["REQUEST_URI"];


и поймёшь почему smile

я так понимаю что этот фаил это что то типа index.php который находится вот тут: http://твойсайт.com/index.php
и только там. 
соответственно, если ты пытаешься обратиться к нему так: http://твойсайт.com/main/news/2007/11/11/index.php
(а когда ты пишешь в адресной строке http://твойсайт.com/main/news/2007/11/11 именно это и происходит)

то апачи там его не находит, так как его там нет. 
Попробыьуй пересмотреть свой способ. Может тебе лучше капнуть в сторону: mod_rewrite.

Добавлено через 2 минуты и 8 секунд
В противном случае тебе придётся поместить этот index.php в каждую дерикторию тбоего сайт, а это не есть хорошо.

Автор: alexey___ 16.11.2007, 12:13
спаибо!

пока буду для каждой новсти создавать папку (день выхода новости) и в папке создавать Index.txt
т.е. вместо /main/news/2007/11/11
буду делать /main/news/2007/11/11/

по крайней мере это работает пока  smile

Автор: ShurikA 16.11.2007, 12:18
Цитата(alexey___ @  16.11.2007,  11:13 Найти цитируемый пост)
и в папке создавать Index.txt

А почему Index.txt ане Index.рнр?

Автор: alexey___ 16.11.2007, 12:23
вообще не важно какое разрешение.
с файла берётся текст с разметкой

а название файла index - просто назвал так главные файлы по умолчанию

Автор: ShurikA 16.11.2007, 12:37
Да, но отрабатывается Index.рнр... его ты должен в каждую дерикторию пихать.

Автор: alexey___ 16.11.2007, 12:51
нет, у меня в главной директории лежит файл default.php - он всё и крутит

а в .htaccess
написано следующие

DirectoryIndex /default.php
php_value max_execution_time 3600
php_value max_input_time 3600

Прошу прощения, если я не полную информацию дал

Автор: ShurikA 16.11.2007, 13:39
Цитата(alexey___ @  16.11.2007,  11:51 Найти цитируемый пост)

Прошу прощения, если я не полную информацию дал 

Не страшно smile
Удачи.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)