Передача переменной внутри ссылки работает только для первого слова в переменных из нескольких слов. Почему? - PullRequest
2 голосов
/ 18 апреля 2010

У меня есть этот код ниже. Как видите, я передаю две переменные вместе со ссылкой. Вторая переменная (category) работает всякий раз, когда она состоит из одного слова, но некоторые категории представляют собой два слова или более, а затем на принимающей странице php, где я выбираю переменную, выбирается только первое слово.

Пример: я передаю это: Rims & Tires Только это приходит: Rims

$display_table .= "<a href='../ad.php?ad_id=$row[ad_id]&category=$row[category]' target='_parent'>";

Вот как я получаю его в принимающем php-файле (ссылка на который есть):

$cat = $_GET['category'];
echo $cat; //displays only first word of multiple word categories.

Ответы [ 2 ]

2 голосов
/ 18 апреля 2010

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

"<a href='../ad.php?ad_id=".urlencode($row['ad_id'])."&category=".urlencode($row['category'])."' target='_parent'>"

И поскольку & внутри значения атрибута также необходимо правильно закодировать (используя htmlspecialchars):

"<a href='".htmlspecialchars("../ad.php?ad_id=".urlencode($row['ad_id'])."&category=".urlencode($row['category']))."' target='_parent'>"

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

$row['ad_id'] = urlencode($row['ad_id']);
$row['category'] = urlencode($row['category']);
$href = htmlspecialchars("../ad.php?ad_id=$row[ad_id]&category=$row[category]");
$display_table .= "<a href='$href' target='_parent'>";

И если ad_id всегда является числовым значением, вам даже не нужно применять urlencode к нему.

0 голосов
/ 18 апреля 2010

Это должно сделать это:

$display_table .= "<a href='../ad.php?ad_id=".urlencode($row[ad_id])."&category=".urlencode($row[category])."' target='_parent'>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...