【问题标题】:Appending GET parameters on HREF tag with PHP使用 PHP 在 HREF 标记上附加 GET 参数
【发布时间】:2014-07-23 00:09:58
【问题描述】:

我正在编写这样的代码:

<?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? 的链接,我将这两个参数附加为 GET 参数,其 ID 分别为 idurl_tag

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

但是,当我单击“单击此处”链接时,它会将我重定向到 https://www.page.example.com/page.php?,这是没有任何 GET 参数的 url。

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

有什么想法吗?谢谢!

【问题讨论】:

    标签: php href


    【解决方案1】:

    尝试将代码的最后一行替换为:

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

    它应该可以工作。

    【讨论】:

    • 作为对忽略此工作原因的任何人(尤其是 PHP 新手,因为我们都曾在某个时间或另一个时候)的提示,原始内容会在生成的 HTML 中丢失双引号,所以 Levon 的代码显示了添加它们的正确方法。
    【解决方案2】:

    尝试使用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>
    

    【讨论】:

    • 我也试过你的解决方案。但我收到此错误“解析错误:语法错误,意外'[',期待')'”。那是指向“$query = http_build_query(["
    • @user2957378 是时候升级 PHP 了。短数组语法从 5.4 开始就出现了。不过我会为你解决我的答案
    • 抱怨的不是我的电脑,而是我的付费远程服务器:D。
    猜你喜欢
    • 2018-07-30
    • 2021-04-27
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多