【发布时间】:2011-05-14 11:05:25
【问题描述】:
您好,我有以下页面,它设置了一个带有当前 URL 的 cookie 以及一个简单的外部链接。
<?php
function pageURL()
{
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on")
{
$pageURL .= "s";
}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80")
{
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
}
else
{
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
$CurrentPage = pageURL();
setcookie('linkback', $CurrentPage);
?>
<p><a href="http://www.google.com/">External Link</a></p>
我想要做的是使用 PHP 为所有外部链接添加前缀,以便它们具有以下结构:
localhost/outgoing?url=http://www.google.com/
这会像这样加载一个传出页面:
<?php
if(!isset($_GET['url']))
{
header('HTTP/1.0 404 Not Found');
}
?>
<h1>Warning! Now leaving website</h1>
<ul>
<li><a title="Return to Website" href="<?php if(isset($_COOKIE['linkback'])) { echo $_COOKIE['linkback']; } else { echo 'http://localhost:8888/creathive/'; } ?>">Return to Website</a></li>
<li><a title="Continue to <?php echo $_GET['url']; ?>" href="<?php echo $_GET['url']; ?>">Continue to <?php echo $_GET['url']; ?></a></li>
</ul>
这个想法是,使用上一页中设置的 cookie,我可以有一个简单的后退按钮,还可以从查询中获取 url,并允许用户在被警告离开站点后继续。
我遇到的问题是:
1.) 为外部 URL 添加前缀,以便它们转到传出页面
2.) 如果用户在没有 url 查询字符串的情况下访问传出页面但不是,则传出页面顶部的 isset 应该抛出 404
3.) 需要确保 URL 有效,例如防止这种情况发生:localhost/outgoing?url=moo
【问题讨论】:
标签: php