如果存在该变量,我想向重定向网址添加可选变量。这就是我的意思:
我的网站上有一个网址:
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']
我想我可以爆炸字符串然后获得对吗?有点困惑。
答案 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>