Как «добавить» и «вычесть» переменные $ в строку URL? - PullRequest
2 голосов
/ 27 июля 2011

Возникли проблемы здесь ....

Я не могу найти хороший способ "добавить" и "вычесть" переменные $ в строку URL ....

Вот мой пример:

в URL у меня есть http://mywebsite.com/index.php?y=2011

Для исходного кода у меня есть:

$currentPage = $_SERVER['PHP_SELF'];

Тогда, если я хочу добавить разные переменные $ в строку URL, я пробую это ...:

    echo '<a href="$currentPage.&t=col">College</a>';

Но это не сохраняет значение текущего URL ...?

Отображается: http://mywebsite.com/index.php?&t=col

Вместо: http://mywebsite.com/index.php?y=2011&t=col (не хранит переменную $ y)

Мне также нужно найти способ изменить переменную $ y и $ t любыми ссылками, чтобы я мог легко изменить ее на 2010 или 2009, сохранив текущую переменную $ t .. ???

Заранее спасибо!

ЗДЕСЬ ЭТО Что я придумал от большой помощи !!!

$url = "http://www.mywebsite/index.php?";
foreach($_GET as $key=>$val){
$url.="$key=$val&"; }
echo '<a href="' . htmlspecialchars($url . 't=col') . '">College</a>';

Ответы [ 4 ]

3 голосов
/ 27 июля 2011

Как вы, возможно, знаете, все переменные, переданные через URL, доступны в массиве $ _GET.Таким образом, вы можете настроить свою ссылку следующим образом:

$url = "http://site.com/index.php?";
foreach($_GET as $key=>$val){
$url.="$key=$val&"; }

Это дает вам возможность также проверять определенные переменные и удалять те, которые могут быть добавлены пользователем злонамеренно.И это также позволяет вам соответственно изменять переменные, так как $ key будет содержать либо t, либо y

1 голос
/ 27 июля 2011

Вы можете использовать функцию http_build_query () , чтобы перестроить ваш запрос, добавив желаемый дополнительный параметр.

1 голос
/ 27 июля 2011

Не думаю, что ваш вопрос на самом деле связан с манипулированием URL. В основном это основная проблема синтаксиса PHP. В PHP строки в одинарных и двойных кавычках обрабатываются по-разному. В двойных кавычках вы получаете интерполяцию переменных, чего вы не получаете в другом типе:

$foo = 'world!';
echo "Hello, $foo"; // Prints «Hello, world!»
echo 'Hello, $foo'; // Prints «Hello, $foo»

Тем не менее, это все, в частности, строка в двойных кавычках. Вы не можете вставить произвольный код PHP внутри строки и выполнить его:

echo "Size: strlen($foo) . 'chars'"; // Will *not* print «Size: 6 chars»

Полный справочник можно найти в главе Strings руководства по PHP.

Кроме того, вы можете объединять строки с помощью оператора . (см. Операторы строки ):

echo 'Hello, ' . $foo; // Prints «Hello, world!»

Как только вы ознакомитесь с этими понятиями, вам будет легко это сделать.

0 голосов
/ 27 июля 2011
echo '<a href="$currentPage.?y=$_GET[\'y\'].&t=col">College</a>';
...