传递查询字符串获取值到url链接

时间:2014-09-12 15:35:26

标签: php query-string

我正在尝试从查询字符串传入$ _GET变量,并将其传递到指向其上有应用程序的另一个页面的链接。

客户将被定向到我的页面,并且该网址将具有变量名称merchantid。我需要在主页上将其传递给应用程序页面。

我已将它显示在主页上作为测试,所以我知道如何获得它。我只需要知道如何将它传递给应用程序页面。

<?php
    if (empty($_GET)) {
        // no data passed by get
        echo "<a href='{site_url}application'>Application</a>";
    }
    else
    {
        // The value of the variable name is found
        echo "<a href='{site_url}application?merchantid=" .merchantid ."'><Application></a>";
    }
?>

我的其他链接实际上已经爆炸了。

好的,这是我的第二次尝试,结果相同。当我将商品传入网址时,链接就会爆炸。防爆。 www.mysite.com /?= MERCHANTID = 12345

<?php
    if (empty($_GET)) {
        // no data passed by get
        echo "<a href='{site_url}application'>Application</a>";
    }
    else
    {
        if(isset($_GET['merchantid'])){$merchantid = $_GET['merchantid'];}
        else{$merchantid = "DefaultMerchant";}
            echo "<a href='{$site_url}application?merchantid=" .$merchantid ."'><Application </a>";                                     
    }
?>

3 个答案:

答案 0 :(得分:1)

为什么你的代码不能正常工作

你并没有告诉php“商品”是一个变量,你也没有定义它。

解决方案

替换

echo "<a href='{site_url}application?merchantid=" .merchantid ."'><Application></a>";

使用

if(isset($_GET['merchantid'])){$merchantid = $_GET['merchantid'];}
else{$merchantid = "";}
echo "<a href='{$site_url}application?merchantid=" .$merchantid ."'><Application></a>";
}

<小时/>

更新了代码

<?php
$site_url = 'http://'.$_SERVER['HTTP_HOST'].'/';
    if (empty($_GET)) {
        // no data passed by get
        echo "<a href='{$site_url}application'>Application</a>";
    }
    else
    {
        if(isset($_GET['merchantid'])){$merchantid = $_GET['merchantid'];}
        else{$merchantid = "DefaultMerchant";}
            echo "<a href='{$site_url}application?merchantid=".$merchantid."'>Application</a>";
    }
?>

答案 1 :(得分:1)

$ _ GET是一个由查询字符串中的任何值索引的数组。例如:

http://sit.url.com?merchantId=12&foo=bar

会将以下内容放在$ _GET数组中:

$_GET['merchantId'] = "12"
$_GET['foo'] = "bar"

您需要在代码中使用块来根据$ _GET中这些值的存在来初始化$ merchantId变量:

//folks commonly use ternaries for this:
$merchantId = (isset($_GET['merchantId'])) ? $_GET['merchantId'] : false

这是一种说明的简写方式:

if (isset($_GET['merhantId']) {
  $merchantId = $_GET['merchantId']
} else {
  $merchantId = false;
}

正如Angelo和C.Coggins所提到的,不要忘记&#34; $&#34;在php中的变量前面。

答案 2 :(得分:0)

您需要先将$_GET['merchantid']分配给$merchantid,或将$merchantid替换为$_GET['merchantid'] ,除非您已启用register_globals,真的不应该使用。

所以要么加上这个:

$merchantid = $_GET['merchantid'];

或使用此:

echo "<a href='{$site_url}application?merchantid=" . $_GET['merchantid'] . "'><Application></a>";

除此之外,正如其他人指出的那样,您的原始代码在变量名称之前缺少$