我希望我网站上的链接像这样重定向......
$offer = $_GET['url'];
if ($offer == '1'){
header("Location: http://site1.com");
}
if ($offer == '2'){
header("Location: http://site2.com");
}
这是功能性的,但有没有更好的方法来做到这一点,而不是拥有 50 个 if 语句?
我希望我网站上的链接像这样重定向......
$offer = $_GET['url'];
if ($offer == '1'){
header("Location: http://site1.com");
}
if ($offer == '2'){
header("Location: http://site2.com");
}
这是功能性的,但有没有更好的方法来做到这一点,而不是拥有 50 个 if 语句?
假设您的网站不是真的site1.com
并且site2.com
(如果是的话,我会印象深刻),这可能是解决问题的好方法:
$sites = array(
'1' => 'http://www.google.com/',
'2' => 'http://www.bing.com/'
);
if (isset($sites[$_GET['url']])) {
header('Location: ' . $sites[$_GET['url']]);
die();
} else {
die('Sorry, this does not exist.');
}
这当然也允许你做一些事情,比如在?url=
.
将标识符和 URL 存储在关联数组中:
$list = array(
'1' => 'http://site1.com',
'2' => 'http://site2.com'
);
然后查找与您的键匹配的值:
if (array_key_exists($_GET['url'], $list)) {
header('Location: ' . $list[$_GET['url']]);
} else {
// bad key
}
header("Location: http://site{$url}.com"); //success!!
或者
header("Location: http://site" . $url . ".com"); //success!!
但请不要依赖这样的用户(客户端)输入。
在制作标题之前先验证一下,否则你会遇到问题......
只要它们采用这种格式,您就可以使用:
$offer = $_GET['url'];
header("Location: http://site".$offer.".com");
可能要检查 $offer 作为整数$offer = intval($offer)
在 db 上使用表,搜索 id 并使用单个 header() 或数组 $redirect[option] header("Location: "$redirect[option]);
您可以拥有一组可能的 URL,您可以$_GET['url']
根据这些值检查 的值,然后相应地重定向用户。这可以是此 PHP 文件中手动编写的数组,也可以是其值已从数据库中收集的数组。
您也可以使用条件if/else
或switch
条件,但这会使您的代码更长。这不是一个糟糕的选择,尽管它不太实用。
此外,如果您在此特定页面中有任何其他代码,请确保您exit;
在header()
函数之后有防止它在重定向之前执行。
$urls = array(
1 => 'www.someurl.com',
2 => 'www.someotherurl.com'
);
$key = @trim($_GET['url']);
if (!empty($key) && isset($urls[$key]))
header('Location: http://' . $urls[$key]);
else
// fallback
header('Location: http://www.defaulturl.com');
exit;
不要传递数字,而是尝试传递实际的 url。当您最初将 url 放在链接上时,请确保对其进行编码,并且当您尝试将其读回时,请确保对其进行解码。
$offer = urldecode($_GET['url']);
header("Location: ". $url);
您还可以将 number 和 url 的映射存储在数据库中,然后只需查询 number 与您发送的内容匹配的 url。
另一种选择是有一个数组,你有那个映射。
<?php
$array = array(
1 => "http://www.google.com",
2 => "http://www.yahoo.com",
3 => "http://www.msn.com",
4 => "http://www.reddit.com"
);
$offer = $_GET['url'];
header("Location: " . $array[$offer]);
?>