![]() |
Показаны 39 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Как в пхп от вопросов и равно избавится.. (http://netadmin.ws/forum/showthread.php?threadid=1190)
Как в пхп от вопросов и равно избавится..
тут вот на одном форуме мне сказали что можно ссылки не такого вида иметь index.php?page=news а такого index.php/news
и написали следующее..
http://host/script.php/param1/param2/param3
только расширение появится.
А так - тоже парсишь $PATH_INFO - и вперёд...
помогите как такое сделать если возможно...
прошу очень..
используешь $REQUEST_URI который будет содержать script.php/param1/param2/param3 и при помощи регулярных выражений добераешся до нужных параметров, присваиваешь их переменным. Только вот удобным такой метод не назовешь, да и на быстродействие будет влиять, ладно если параметр один ну два максимум, а если их целая куча, например переход на другую страницу с параметрами сортировки, это же надо будет каждую ссылку перезаписывать а потом обрабатывать, не логично. Единственный случай когда можно будет использовать это для записи сида сессисии, да и то я бы не стал.
__________________
Всегда есть решение.
polo
Т.е. ты хочешь сказать, что все потом обрабатывается при помощи регулярок? Млин, да это же время будет занимать ужас скока...
И второй вопрос, ну понятное дело парам (в данном случае как я понимаю это значение ключа) пошел, а сам ключ то где?
__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg
так и говорю, в ручную задавать надо, не стоит вообще с этим связываться.
__________________
Всегда есть решение.
mod_rewrite господа 
__________________
The time was broken ...
quote:
mod_rewrite господа

__________________
Всегда есть решение.
Люди помогите..
может кусочек кода для примера дадите что и как там, а то не сильно секу этом..пожалуйста...
а мод_рирайт не подойдет...сомневаюсь что хостер его даст, а уж фришный тем более...
Скажи конкретно как ты это хочешь применить и в каком случае, может и не стоит.
__________________
Всегда есть решение.
ok..
вобщем есть у меня шаблон index.php а в его середину посредством include($page.(".htm") нклудятся страницы типа news.htm links.htm
и урлы получаются вида index.php?page=news
вот и хотелось бы избавится от ненужностей этих..
помогите если можете
..сенкс..
так у тебя параметр всего один?
__________________
Всегда есть решение.
ну получается что да..а мне больше пока и не надо вроде..
не знаю что еще туда запихнуть(в параметр)..не сильно с этим знаком....но про слеши все же хотелось бы услышать..
во первых удостоверься что у тебя на серваке работает этот формат
url.com/index.php/param теоретически это должно работать и не должно возникнуть никаких проблем, но у меня на локалке к примеру вылетает 500 error. И еще могут возникнуть проблемы с изображениями, ссылками на странице если указан относительный путь.
__________________
Всегда есть решение.
ну с сылками разберусь если что..
а как проверить этот самый формат..
просто набрать host.ru/index.php/param и все ..а что вместо парам..??
параметр который ты хочешь передать например 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.
__________________
Всегда есть решение.
а кусочка кода нету..жаль...
может скажете, а куда это вставлять(ereg("/([a-z])", $REQUEST_URI , $matches);
$action = $matches[1]
относительно того как у меня (include($page.(".htm"))
а то запутаюсь совсем..

перед include($page.(".htm")
ссылка на архив в меню форума в самом верху, на любой странице.
__________________
Всегда есть решение.
у меня хоть с этим( 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, но видимо сейчас уже больше, поскольку нет ни одного линка в архиве, ну есть там что такой то скрипт рядом слева иконка рар или зип, но линков нету..
Я пологаю ты делаешь так:
ereg("/([a-z])", $REQUEST_URI , $matches);
$action = $matches[1];
include($page . "htm");
Тогда все понятно в чем проблема, при чем тут $action тоды, если ты потом ссылаешся на $page?
__________________
Всегда есть решение.
polo
так как тогда правильно написать..
ну такто еще уменя перед include... стоит if(!isset($page)) $page=news; хотя это врядли что то меняет..
..
никто мне с архивом не поможет??..ну объясните когда оттудова качать можно станет..plz..
polo
ok попробую и так...но если чего я опять сюда 
по ссылке ходил, но щас вроде
разобрался с архивом, вернее ссылки просто появились , правда ошибка яваскрипта висела (хотя страницу перегрузил), пришлось извращаться из хтмля ссылки выдирать..а так все работает, файл пришел..
и еще маленький вопросик..сорри что не в тему
.. а что значит nullified/null , хорошо это или плохо..
и еще неудобный спамфильтр - 30 сек.. сообщение написал отправил а он пишет низя, тока через 30 сек и сообщение потерялось..для посещаемого форума поменьше надобы..имхо.
.. поэтому я всегда копирую в буфер мессадж, чтоб не терялось..
кстати мож это баг а мож еще чего..но уже с минут пять пытаюсь это сообщение отправить, но пишет эти самые 30 сек..
эта мессага должна быть ниже мессаджа поло
..не знаю как это так ..отправлял после него..
тогда надо
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
__________________
Всегда есть решение.
глюки со временем в пхп 4.2 смотри мое сообщение по этому поводу.
__________________
Всегда есть решение.
polo
все равно не работает..ссылки и картинки не правильные, ну это поправляется скорей всего, а вот вместо инклуда ошибка пишется..
зделай echo $page и посмотри что выводит.
__________________
Всегда есть решение.
в общем..
с этой конструкцией
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
quote:
ereg("/([a-z])", $REQUEST_URI , $matches);
__________________
Всегда есть решение.
2 Polo:
quote:
да что ты все с этим мод реврайт, ты сначало разберись что он делает и как работает, а потом советуй
__________________
The time was broken ...
RaZEr
ну это не иначе как на платный хост надо переезжать..разве что ты знаешь фришний с этим мод_рирайт(подсказал бы
...да и платные как говорят не все дают..
quote:
Кому из нас еще разбираться прийдется ! Ты чем еще сможешь реализовать : http://host/script.php/param1/param2/param3
__________________
Всегда есть решение.
polo
ereg("/([a-z]+)", $REQUEST_URI , $matches);
не помогло..
так точно должно работать
ereg("/([a-z0-9]+)/*$", $REQUEST_URI, $matches);
__________________
Всегда есть решение.
хоть картинки и не показываются...
но все же это работает...кул..
биг сенкс polo
у картинок перепеши на полный урл, в общем все переписывать надо.
__________________
Всегда есть решение.
так то для картинок и ../ помогает..
polo
но вот еще один издержек..
если набираешь index.php/news допустим, то все катит, если у картинок пути поменять..
а вот если просто site.ru или site.ru/index.php , то кроме непоказа картинок появляются траблы, причем с site и site.ru/index.php - разные..
воть..
Ну да конечно регулярное выражение ищет последнее вхождение после / так что если ты просто набирешь index.php то $matches1 и будет содержать index.php там его надо модифицировать так чтобы по умолчанию что-то присваивало, вот к примеру если ты знаешь какие страницы будут использоваться можно сделать так:
switch ($maches[1]) {
case "news":
$page = 'news';
break;
case "links":
$page = 'links';
break;
deafult:
$page = 'index';
break;
}
__________________
Всегда есть решение.
polo
а это куды вставлять..после каких строчек..
вместо
$page = $matches[1];
if(!isset($page)) $page=news;
__________________
Всегда есть решение.
пхп ругается на эту строчку deafult:
и еще..у меня news = корень сайта = index.php
надо default. Так ты вставь нужные значения, откуда я знаю что тебе там надо, это я тебе пример показал.
__________________
Всегда есть решение.
| Формат времени GMT. Текущее время 11:16. | Показаны 39 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.