[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Переход на страницу только с одним параметром GET
Страницы: 1, 2
MailRes
Всем привет!

Допустим, есть такой код:

if ($_GET['key1'])
{
echo "Привет!<br/>";
}
if ($_GET['key2'])
{
echo "Опять привет!<br/>";
}
if ($_GET['key3'])
{
echo "И снова привет!<br/>";
}


Получить эти значения можно тремя раздельными ссылками:

<a href='/index.php?key1=1'>Ссылка 1</a>
<a
href='/index.php?key2=1'>Ссылка 2</a>
<a
href='/index.php?key3=1'>Ссылка 3</a>


Соответственно одна ссылка под одно условие. Но если пользователь наберет в адресной строке "mysite.ru/index.php?key1=1&key2=1&key3=1", то сразу увидит все три строки на экране:
Привет!
Опять привет!
И снова привет!

Задача: сделать так, чтобы обрабатывался только первый параметр (остальные, сколько бы их не было - игнорировались)
Решение: Считывать текущий УРЛ. Резать с помощью preg_replace всё что находится после первого символа "&", и с помощью header скармливать новый УРЛ браузеру.

Верно ли такое решение? Или есть более "правильное"? :)
Valick
а зачем key1=1, key2=1, key3=1 ?
почему не key=1, key=2, key=3 ?

_____________
Стимулятор ~yoomoney - 41001303250491
r3al
ниче не верно, вообще не понятна твоя логика.. не изобретай велосипед, возьми switch за основу и зачем тебе куча разных ключей с одним значением? смотри:


<a href="index.php?page=1">1</a>
<a
href="index.php?page=2">2</a>
<a
href="index.php?page=3">3</a>


$page = !isset($_GET['page']) || empty($_GET['page']) ? 0 : intval($_GET['page']);

switch($page) {
case 1:
echo "Привет я первая ссылка";
break;
case 2:
echo "Привет я вторая ссылка";
break;
case 3:
echo "Привет я третья ссылка";
break;
}
MailRes
Valick, ну я это для примера привел key1, key2, key3, чтоб было попроще объяснить, для чего это нужно, но видимо запутал совсем)))
r3al, со switch'ем пример понятен, но немного не подходит.

Итак:
key1 - принимает значение от 1 до .... (пока не знаю до какого) - где 1 это IDшка строки из таблицы БД, которую нужно вывести на экран (статья)
key2 - принимает одно значение "y"... пока не будем вдаваться в подробности для чего этот параметр, много букфф печатать)))
key3 - параметр, который принимает произвольные значение - т.к. через него передается значение для поиска заголовка статьи из таблицы БД

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


sergeiss
Цитата (MailRes @ 8.05.2013 - 01:43)
Так вот чтобы пользователь не шалил

Прочитал и вспомнил сразу же "Малыш и Карлсон" smile.gif

Цитата (MailRes @ 8.05.2013 - 01:23)
Считывать текущий УРЛ. Резать с помощью preg_replace всё что находится после первого символа "&", и с помощью header скармливать новый УРЛ браузеру.

А зачем так "сурово"? Резать, скармливать... Просто выбери первый параметр, который идет после знака вопроса, и с ним работай. А остальные просто "тупо" игнорируй.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
r3al
объяснить свою задачу, я уверен есть выход менее геморойный.
sergeiss
Цитата (r3al @ 8.05.2013 - 01:52)
объяснить свою задачу, я уверен есть выход менее геморойный

Ты прав. Но я тебя уверяю, что далеко не каждый человек может "с ходу" сформулировать свою проблему так, чтобы она была понятна всем. Я уж вот насколько себя считаю "правильным" wink.gif, но и то бывало неоднократно, что задаю вопрос - а его не понимают.

Аналогично, не каждый может объяснить решение, даже если сам может решить проблему "за 3 секунды".

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
MailRes
Цитата
А зачем так "сурово"? Резать, скармливать... Просто выбери первый параметр, который идет после знака вопроса, и с ним работай. А остальные просто "тупо" игнорируй.


Ну выбирать все равно preg_replace'ом или нет?)

Цитата
что далеко не каждый человек может "с ходу" сформулировать свою проблему так, чтобы она была понятна всем.


Это точно))) Много раз ловил себя на мысли, что нельзя мне быть учителем, т.к. объясняю всё как-то издалека и непонятно)))
r3al
MailRes, реально интересно уже стало.. хоть намекни что ты делаешь? Точнее не так, объясняй давай как можешь, хочешь пиши много букав, я почитаю, до 5 утра я свободен.. и не тороплюсь.. смотри, у нас 3 часа ещё с тобой есть..))))
MailRes
Делаю интернет-магазин "своими руками". Да, знаю, есть много готовых решений, самое простое, на мой взгляд, это поставить Joomla + VirtueMart, хотя есть что-то и попроще. Но сколько не смотрел готовых скриптов - всё что-то не то, то там бы переделал, то там, а копаться в чужом коде ужас как не хочется)) Вот и решил сделать сам, чтобы полностью понимать "Что и как?" Ну и донастроить при необходимости нужным образом.

Вот и в моём примере:
один ключ - открывает страницу с описание
другой - открывает корзину
третий - оформление заказа
четвертый - ищет в каталоге

Если, как ранее предлагали, совместить все ключи в один, то на моём примере ещё можно ключи с первого по третий соединить в один, а как быть с поиском? Ведь наберет пользователь, допустим, в поиске "101", а ему откроется страница с ИДэшкой 101, а не все результаты, где "101" встречается в характеристиках или еще где-то. Я, конечно, понимаю, что это мало вероятно, что в запросе будет "101" но мало ли? Хочется сделать нормальный сайт, чтобы пользователь был защищен от случайных ошибок ввода.
MailRes
Цитата
у нас 3 часа ещё с тобой есть..


И я не тороплюсь, полночи впереди biggrin.gif
r3al
Ураа!! ))) А раньше нельзя так было?)))
Смотри, логично поступать таким образом:
(я тебе сейчас буду упорно навязывать свое мнение, не обязательно ему следовать, просто послушай и прими к сведению)

допустим у тебя есть страницы:

<a href="index.php?page=index">Главная страница</a>
<a
href="index.php?page=items">Товары</a>
<a
href="index.php?page=cart">Корзина</a>
<a
href="index.php?page=search">Поиск</a>
<a
href="index.php?page=other">Любая другая страница</a>


обзовем их вот так:

$pages = Array('index', 'items', 'cart', 'search', 'other');


теперь узнаем где наш пользователь, для этого цепляемся к ГЕТ параметру с ключем page и проверяем, если он есть в массиве, то все норм, если нет то по умолчанию будет главная страница

$page = !isset($_GET['page']) || !in_array(strtolower($_GET['page']), $pages) ? 'index' : $_GET['page'];


получается, что если у нас $_GET['page'] не стоит то попадаем на главную страницу, если кто то захотел попасть например на страницу somepages то он так же попадает на главную страницу

далее идет твой пример с условиями, т.е:

if ( $page == 'items' ) { 
echo 'Вы попали на страницу товаров';
} elseif ( $page == 'cart' ) {
echo 'Вы попали на страницу корзины';
} elseif ( $page == 'search' ) {
echo 'Вы попали на страницу поиска';
} elseif ( $page == 'other' ) {
echo 'Вы попали на дополнительную страницу';
} else {
echo 'Вы попали на страницу по умолчанию, т.е. на главную';
}


далее следуя этой же логике, допустим что делать с поиском:
а все просто!, вводим дополнительный $_GET например с ключем s (от слова search)

и получаем что в условии
} elseif ( $page == 'search' ) { 
echo 'Вы попали на страницу поиска';


нужно дописать работу с поиском, т.е к примеру



if ( !isset($_GET['s']) ) {
echo 'Вы не указали фразу для поиска';
} elseif ( empty($_GET['s']) ) {
echo 'Поиск не может быть пустым';
} else {
# ищем фразу в базе товаров
}



И теперь твой код выглядит уже так

if ( $page == 'items' ) { 
echo 'Вы попали на страницу товаров';
} elseif ( $page == 'cart' ) {
echo 'Вы попали на страницу корзины';
} elseif ( $page == 'search' ) {
echo 'Вы попали на страницу поиска';

if ( !isset($_GET['s']) ) {
echo 'Вы не указали фразу для поиска';
} elseif ( empty($_GET['s']) ) {
echo 'Поиск не может быть пустым';
} else {
# ищем фразу в базе товаров
}

}
elseif ( $page == 'other' ) {
echo 'Вы попали на дополнительную страницу';
} else {
echo 'Вы попали на страницу по умолчанию, т.е. на главную';
}


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

Так тебе чем не нравится?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.