将可选var添加到URL

时间:2015-05-05 18:12:08

标签: php

如果存在该变量,我想向重定向网址添加可选变量。这就是我的意思:

我的网站上有一个网址:

  

mydomain.com/myPage?rel=abc

稍后在我的PHP中,我需要检测是否设置了变量,同时获取变量的名称及其值,并将其添加到我的重定向URL:

  

redirectdomain.com/somePage?rel=abc

为什么我需要我的脚本才能这样做而不只是将其添加到我的代码中?因为变量可能不存在,或者其名称可能是其他内容,例如 userId ,或 acticle 等...它甚至可能有多个变量:

  

redirectdomain.com/somePage?rel=abc&ref=123

我不确定如何从当前网址获取这些内容。我可以使用以下方法获取这些元素:

$_SERVER['REDIRECT_QUERY_STRING'] 

我想我可以爆炸字符串然后获得对吗?有点困惑。

4 个答案:

答案 0 :(得分:0)

您可以使用 parse_url(); PHP函数获取您网址中的所有变量 http://php.net/manual/en/function.parse-url.php 只需将它们添加到另一个URL

即可

答案 1 :(得分:0)

使用$_GET获取HTTP GET变量,并使用http_build_query构建新网址:

<?php
$variables = $_GET;

//you can add some variables here
$variables['foo'] = 'bar';

//or remove a variable
unset($variables['uid']);

//or you can 'rename' a variable by adding a new variable and remove the old one
$variables['user'] = $_GET['username'];
unset($variables['username']);

$base_url = 'http://redirectdomain.com/somePage';

$url = $base_url . '?' . http_build_query($variables);

//redirect to the new url
header("Location: " . $url);

答案 2 :(得分:0)

URL的查询字符串在teh $ _SERVER global中可用。执行此操作将其转换为数组,然后解析数组,或者只传输整个字符串。

此示例将复制确切的字符串...

$mynewURL = 'redirect.com?'.$_SERVER['QUERY_STRING'];

此示例将为您提供一个可以使用的数组。

$somevar = explode('&', $_SERVER['QUERY_STRING']);

如果您只想在重定向中包含某些变量,则可以执行此操作...(假设您只需要userId和Fullname并忽略URL中传递的任何其他变量)

$redirect = 'redirect.com?';
foreach ($somevar as $v) {
   $temparr = explode('=', $v);
   $redirect .= array_search($temparr[0], $temparr) == 'userId' || array_search($temparr[0], $temparr) == 'Fullname' ? $v : '';
}

答案 3 :(得分:0)

您可以创建一个快速简便的功能:

<?php
function addParam(Array $param, Array &$parameters)
{
    $parameters = array_merge($_GET,$param);

}

function makeUrl(Array $parameters)
{
    return $page . '?' . http_build_query($parameters);
}

//Used like this
$itemid = 1;
addParam(array('itemid',$itemid),$parameters);
addParam(array('rel',$rel),$parameters);
?>
<a href="<?php echo makeUrl("/",$parameters); ?>">Go here</a>

请参阅http_build_query()