Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Очередной вопрос по постраничному выводу (http://forum.oszone.net/showthread.php?t=54381)

vadimiron 27-09-2005 17:29 359108

Очередной вопрос по постраничному выводу
 
С самим постраничным выводом у меня проблем нет.
Проблема только с формированием ссылок на страницы.
Проблема заключается в том, что у меня через адресную строку передаётся несколько переменных, поэтому я не могу писать ссылки на страницы таким образом
PHP код:

href='?page=".$i." ' 


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

Единственное, до чего я дошёл, это просто вырезать ' page=".$page." ' из $_SERVER['REQUEST_URI'] и навесить на то, что осталось, значение page:
PHP код:

$number=$i-1;
$uri=$_SERVER['REQUEST_URI'];
$uri=str_replace("&page=".$page,"",$uri);
$text.="<a href='".$uri."&page=".$number."'>".$i."</a>&nbsp;"

$_SERVER['REQUEST_URI'] я могу спокойно использовать, так как в любом случае хоть одна переменная, но наверняка передаётся через адресную строку

Vlad Drakula 27-09-2005 22:28 359245

vadimiron
$_GET['page']

а также есть:
$_POST, $_REQUEST, $_COOKIE и т. д.

elfoflorien 27-09-2005 22:30 359246

vadimiron
все переменные из адресной строки хранятся в массиве $_GET или $HTTP_GET_VARS (в PHP5 по умолчанию только $_GET), поэтому обращаться нужно вот так:
PHP код:

$page$_GET['page']; 

пока писал ответ меня опередили :(

vadimiron 27-09-2005 23:20 359268

Vlad Drakula,elfoflorien
Сори,блин, не то я объяснил
У меня нет проблем с получением переменной, у меня проблема с тем, что скорей всего адресная строка уже содержит эту переменную (то есть когда не на первой странице), то есть если просто "навесить", то в адресной строке будет уже две переменных page, ещё раз-уже три и тд.

mar 28-09-2005 00:52 359305

vadimiron
а собственно, почему они у тебя множатся? ведь uri со всеми переменными тоже можно каждый раз формировать по-новому:
типа
PHP код:

$PHP_SELF'?id='$_GET['id']. 'page='$_GET['page'/* и так далее */ 

.
Кажется, на сей раз я чего-то не поняла :)

vadimiron 28-09-2005 12:48 359432

mar
Самая большая проблема то, что я не знаю какие и сколько там переменных сидят, я не могу сказать есть ли $_GET['id'] или нет.
$_GET['id'] натолкнуло меня ещё на одно решение, которое наверно будет самым правильным. Пройтись по всему массиву $_GET и записывать переменные обратну в строку так как они были, а page поставить свой, то есть что то типа этого:
PHP код:

foreach($_GET $key=>$value)
{
if(
$key=="page"$url.=$key."=".$page."&"
else $url.=$key."=".$value."&"



mar 28-09-2005 13:52 359469

Цитата:

Самая большая проблема то, что я не знаю какие и сколько там переменных сидят
вообще-то это грозит инъекцией, или просто не знаешь, есть ли какая-то из обслуживаемых тобой? По-любому, то, что ты сам предложил с foreach - это выход.

vadimiron 28-09-2005 15:39 359534

Цитата:

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

mar 28-09-2005 16:41 359577

ну, я все-таки (особенно если дело идет о $_GET) предпочитаю из соображений безопасности разбираться с каждой своей предопределенной $_GET -переменной. Чтоб не скормить скрипту инъекции. Собственно, ведь переход на $_GET и $_POST в PHP и был обусловлен соображеиями безопасности

elfoflorien 28-09-2005 17:07 359600

vadimiron
Цитата:

Да, просто хочется, чтобы в любой момент можно было бы добалять ... новые переменные в скрипт, которые передаются через адресную строку
PHP код:

$_GET['var_name'

Цитата:

при этом не меняя уже написанного кода
в каком смысле не меняя? что-то я не могу понять, что именно надо?
если хотите формировать новую строку url с переменными, и с возможностью удалять лишние, ненужные переменные, то можно так

PHP код:

function generate_url$_GET$odd_vars false )
{
    foreach( 
$_GET as $var => $value )
    {
         if( 
$odd_vars && in_array$var$odd_vars )) continue;
        
$url .= "&$var=$value";
    }
    return 
$url;
}
// $odd_vars - массив "лишних" переменных: $odd_vars= array( 'var1', 'var2', 'var3', 'etc' ); 


XCodeR 28-09-2005 20:05 359704

"ламерский"(это как посмотреть), но действенный совет:
сессиии. суй туда переменныую $page и бери оттудова через массив $_SESSION
......

elfoflorien 28-09-2005 23:15 359756

Xcode
зачем такие сложности?

XCodeR 29-09-2005 20:10 360121

elfoflorien
1.
Цитата:

"ламерский"
2. собс-но, если переменные не через URL, то через что?... остаются сессии и кукисы...

elfoflorien 29-09-2005 22:21 360157

Xcode
Цитата:

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


Время: 10:00.

Время: 10:00.
© OSzone.net 2001-