用PHP在HREF标签上附加GET参数


Appending GET parameters on HREF tag with PHP

我正在编写这样的代码:

<?php
$id=$_POST['id'];
$url_tag = $_POST['url_tag'];
$url_back = 'https://www.page.example.com/page.php?';
$query='id='.$id.'&url_tag='.$url_tag;
$url = $url_back.$query;
echo 'Look how this url shows up: '.$url;
echo '<a href='.$url.'>Click here</a>';
?>

也就是说,页面接收两个POST参数。然后准备一个到https://www.page.example.com/page.php?的链接,我将这两个参数分别添加为id为idurl_tag的GET参数。

然后显示整个链接的样子。它正确显示,在本例中是https://www.page.example.com/page.php?id=ID&url_tag=URL_TAG,其中ID和URL_TAG是作为POST参数接收的实际值。

但是,当我点击' click here'链接时,它将我重定向到https://www.page.example.com/page.php?,这是没有任何GET参数的url。

为什么会发生这种情况,我该如何解决它?我试过用urlencode($url)代替HREF,但它将我重定向到一个充斥着不需要的字符的地址…

任何想法?谢谢你!

试着用下面的代码替换最后一行:

echo '<a href="'.$url.'">Click here</a>';

尝试使用http_build_query(),它会为您处理任何URL字符兼容性问题…

// assuming you've already checked and validated your $_POST parameters
$query = http_build_query(array(
    'id'      => $_POST['id'],
    'url_tag' => $_POST['url_tag']
));
$url = 'https://www.page.example.com/page.php?' . $query;
?>
<a href="<?= $url ?>">Click here</a>