Форум сетевых администраторов
Показаны 39 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Как в пхп от вопросов и равно избавится.. (http://netadmin.ws/forum/showthread.php?threadid=1190)


Помещено }:^( 03-05-2002 в 12:58:

Как в пхп от вопросов и равно избавится..

тут вот на одном форуме мне сказали что можно ссылки не такого вида иметь index.php?page=news а такого index.php/news

и написали следующее..
http://host/script.php/param1/param2/param3

только расширение появится.

А так - тоже парсишь $PATH_INFO - и вперёд...

помогите как такое сделать если возможно...
прошу очень..


Помещено polo 03-05-2002 в 14:16:

используешь $REQUEST_URI который будет содержать script.php/param1/param2/param3 и при помощи регулярных выражений добераешся до нужных параметров, присваиваешь их переменным. Только вот удобным такой метод не назовешь, да и на быстродействие будет влиять, ладно если параметр один ну два максимум, а если их целая куча, например переход на другую страницу с параметрами сортировки, это же надо будет каждую ссылку перезаписывать а потом обрабатывать, не логично. Единственный случай когда можно будет использовать это для записи сида сессисии, да и то я бы не стал.

__________________
Всегда есть решение.


Помещено ExcErr 03-05-2002 в 18:12:

polo
Т.е. ты хочешь сказать, что все потом обрабатывается при помощи регулярок? Млин, да это же время будет занимать ужас скока...
И второй вопрос, ну понятное дело парам (в данном случае как я понимаю это значение ключа) пошел, а сам ключ то где?

__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg


Помещено polo 03-05-2002 в 20:17:

так и говорю, в ручную задавать надо, не стоит вообще с этим связываться.

__________________
Всегда есть решение.


Помещено RaZEr 03-05-2002 в 22:06:

mod_rewrite господа

__________________
The time was broken ...


Помещено polo 03-05-2002 в 22:14:

quote:
mod_rewrite господа

да что ты все с этим мод реврайт, ты сначало разберись что он делает и как работает, а потом советуй

__________________
Всегда есть решение.


Помещено }:^( 04-05-2002 в 05:39:

Люди помогите..
может кусочек кода для примера дадите что и как там, а то не сильно секу этом..пожалуйста...

а мод_рирайт не подойдет...сомневаюсь что хостер его даст, а уж фришный тем более...


Помещено polo 04-05-2002 в 15:42:

Скажи конкретно как ты это хочешь применить и в каком случае, может и не стоит.

__________________
Всегда есть решение.


Помещено }:^( 04-05-2002 в 20:48:

ok..
вобщем есть у меня шаблон index.php а в его середину посредством include($page.(".htm") нклудятся страницы типа news.htm links.htm
и урлы получаются вида index.php?page=news
вот и хотелось бы избавится от ненужностей этих..
помогите если можете ..сенкс..


Помещено polo 04-05-2002 в 20:54:

так у тебя параметр всего один?

__________________
Всегда есть решение.


Помещено }:^( 04-05-2002 в 20:59:

ну получается что да..а мне больше пока и не надо вроде..
не знаю что еще туда запихнуть(в параметр)..не сильно с этим знаком....но про слеши все же хотелось бы услышать..


Помещено polo 04-05-2002 в 21:11:

во первых удостоверься что у тебя на серваке работает этот формат
url.com/index.php/param теоретически это должно работать и не должно возникнуть никаких проблем, но у меня на локалке к примеру вылетает 500 error. И еще могут возникнуть проблемы с изображениями, ссылками на странице если указан относительный путь.

__________________
Всегда есть решение.


Помещено }:^( 04-05-2002 в 21:20:

ну с сылками разберусь если что..
а как проверить этот самый формат..
просто набрать host.ru/index.php/param и все ..а что вместо парам..??


Помещено polo 04-05-2002 в 21:34:

параметр который ты хочешь передать например news или что тебе там надо, всмысле все что после = а потом присваиваешь этот параметр нужной переменной, я уже говорил что $REQUEST_URI будет содержать все что нахлдиться после домена /index.php/news в данном случае, для того чтобы добраться до news к примеру можно использовать
ereg("/([a-z])", $REQUEST_URI , $matches);
$action = $matches[1]; // будет содержать то что нужно
можно еще болею продвинутую формуиспользовать, например так:
url/news/index.php
но в данном случае без mod_rewrite не обойтись, используеться так:
RewriteEngineOn
RewriteBase /
RewriteRule ^[a-z]/(.+) /$1
Ð_то к первому случаю тоже можно применить соответственно изменив RewriteRule.

__________________
Всегда есть решение.


Помещено }:^( 04-05-2002 в 21:45:

а кусочка кода нету..жаль...
может скажете, а куда это вставлять(ereg("/([a-z])", $REQUEST_URI , $matches);
$action = $matches[1]
относительно того как у меня (include($page.(".htm"))
а то запутаюсь совсем..


Помещено polo 04-05-2002 в 23:27:

перед include($page.(".htm")
ссылка на архив в меню форума в самом верху, на любой странице.

__________________
Всегда есть решение.


Помещено }:^( 05-05-2002 в 07:55:

у меня хоть с этим( ereg("/([a-z])", $REQUEST_URI , $matches);
$action = $matches[1]; ) , и даже без этого..когда набираешь
index.php/links или любую другую страницу, то выдается главная страница то есть index.php/news, а не нужная страница..
и еще когда вызываешь адрес такого типа index.php/param то исчезает графика и линки исажаются, что впрочем и писалось выше..
то допустим если обычно у меня вся графика лежит в site/images , то запросом такого вида то получается что она лежит в site/index.php/images ... помогает ../ перед линками и путями картинок, хотя почему то баннер инклудится таким образом не захотел и страницы все равно не вызываются, то есть вызывается всегда главная...вот..
про архив..а сколько надо постов..было написано что 5, но видимо сейчас уже больше, поскольку нет ни одного линка в архиве, ну есть там что такой то скрипт рядом слева иконка рар или зип, но линков нету..


Помещено polo 05-05-2002 в 14:07:

Я пологаю ты делаешь так:
ereg("/([a-z])", $REQUEST_URI , $matches);
$action = $matches[1];
include($page . "htm");

Тогда все понятно в чем проблема, при чем тут $action тоды, если ты потом ссылаешся на $page?

__________________
Всегда есть решение.


Помещено }:^( 05-05-2002 в 15:43:

polo
так как тогда правильно написать..

ну такто еще уменя перед include... стоит if(!isset($page)) $page=news; хотя это врядли что то меняет..

..

никто мне с архивом не поможет??..ну объясните когда оттудова качать можно станет..plz..


Помещено }:^( 05-05-2002 в 15:44:

polo
ok попробую и так...но если чего я опять сюда

по ссылке ходил, но щас вроде
разобрался с архивом, вернее ссылки просто появились , правда ошибка яваскрипта висела (хотя страницу перегрузил), пришлось извращаться из хтмля ссылки выдирать..а так все работает, файл пришел..
и еще маленький вопросик..сорри что не в тему .. а что значит nullified/null , хорошо это или плохо..
и еще неудобный спамфильтр - 30 сек.. сообщение написал отправил а он пишет низя, тока через 30 сек и сообщение потерялось..для посещаемого форума поменьше надобы..имхо. .. поэтому я всегда копирую в буфер мессадж, чтоб не терялось..
кстати мож это баг а мож еще чего..но уже с минут пять пытаюсь это сообщение отправить, но пишет эти самые 30 сек..

эта мессага должна быть ниже мессаджа поло ..не знаю как это так ..отправлял после него..


Помещено polo 05-05-2002 в 16:03:

тогда надо
ereg("/([a-z])", $REQUEST_URI , $matches);
$page = $matches[1];
if(!isset($page)) $page=news;
include($page . "htm");

Ты ходил по ссылке что вверху странице?
http://netadmin.ws/forum/announcement.php?s=&forumid=27

__________________
Всегда есть решение.


Помещено polo 05-05-2002 в 16:12:

глюки со временем в пхп 4.2 смотри мое сообщение по этому поводу.

__________________
Всегда есть решение.


Помещено }:^( 05-05-2002 в 18:43:

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


Помещено polo 05-05-2002 в 20:48:

зделай echo $page и посмотри что выводит.

__________________
Всегда есть решение.


Помещено }:^( 05-05-2002 в 21:25:

в общем..
с этой конструкцией
1 ereg("/([a-z])", $REQUEST_URI , $matches);
2 $page = $matches[1];
3 if(!isset($page)) $page=news;
4 include($page . "htm");
выдает ошибку в четвертой строчке(в этом мессадже)
Warning: Failed opening 'i.htm' for inclusion (include_path='') in c:\myserver\root\test\www\icqlist\index.php on line 74
а при echo $page выдает i


Помещено polo 06-05-2002 в 00:51:

quote:
ereg("/([a-z])", $REQUEST_URI , $matches);

замени на
ereg("/([a-z]+)", $REQUEST_URI , $matches);

__________________
Всегда есть решение.


Помещено RaZEr 06-05-2002 в 04:57:

2 Polo:

quote:
да что ты все с этим мод реврайт, ты сначало разберись что он делает и как работает, а потом советуй

Кому из нас еще разбираться прийдется ! Ты чем еще сможешь реализовать : http://host/script.php/param1/param2/param3

(сори, что давно в пост не заглядывал)

__________________
The time was broken ...


Помещено }:^( 06-05-2002 в 08:09:

RaZEr
ну это не иначе как на платный хост надо переезжать..разве что ты знаешь фришний с этим мод_рирайт(подсказал бы ...да и платные как говорят не все дают..


Помещено polo 06-05-2002 в 12:17:

quote:
Кому из нас еще разбираться прийдется ! Ты чем еще сможешь реализовать : http://host/script.php/param1/param2/param3

Ок, что ты в данном случае можешь сделать мод реврайтом?

__________________
Всегда есть решение.


Помещено }:^( 06-05-2002 в 18:19:

polo
ereg("/([a-z]+)", $REQUEST_URI , $matches);
не помогло..


Помещено polo 06-05-2002 в 20:52:

так точно должно работать
ereg("/([a-z0-9]+)/*$", $REQUEST_URI, $matches);

__________________
Всегда есть решение.


Помещено }:^( 07-05-2002 в 10:00:

хоть картинки и не показываются...
но все же это работает...кул..
биг сенкс polo


Помещено polo 07-05-2002 в 11:25:

у картинок перепеши на полный урл, в общем все переписывать надо.

__________________
Всегда есть решение.


Помещено }:^( 07-05-2002 в 12:38:

так то для картинок и ../ помогает..
polo
но вот еще один издержек..
если набираешь index.php/news допустим, то все катит, если у картинок пути поменять..
а вот если просто site.ru или site.ru/index.php , то кроме непоказа картинок появляются траблы, причем с site и site.ru/index.php - разные..
воть..


Помещено polo 07-05-2002 в 14:54:

Ну да конечно регулярное выражение ищет последнее вхождение после / так что если ты просто набирешь index.php то $matches1 и будет содержать index.php там его надо модифицировать так чтобы по умолчанию что-то присваивало, вот к примеру если ты знаешь какие страницы будут использоваться можно сделать так:
switch ($maches[1]) {
case "news":
$page = 'news';
break;
case "links":
$page = 'links';
break;
deafult:
$page = 'index';
break;
}

__________________
Всегда есть решение.


Помещено }:^( 07-05-2002 в 15:46:

polo
а это куды вставлять..после каких строчек..


Помещено polo 07-05-2002 в 18:15:

вместо
$page = $matches[1];
if(!isset($page)) $page=news;

__________________
Всегда есть решение.


Помещено }:^( 07-05-2002 в 18:54:

пхп ругается на эту строчку deafult:

и еще..у меня news = корень сайта = index.php


Помещено polo 07-05-2002 в 20:30:

надо default. Так ты вставь нужные значения, откуда я знаю что тебе там надо, это я тебе пример показал.

__________________
Всегда есть решение.


Формат времени GMT. Текущее время 11:16.
Показаны 39 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.