如何防止SERVER ['HTTP_REFERER']切换到调用页面?

时间:2013-12-02 18:53:19

标签: php http-referer http-host getenv

请帮忙。 在form.php中使用$ _SERVER ['HTTP_REFERER']获得的链接如下:

<?php
$link = 'http://' . getenv('HTTP_HOST') . '/';
if (isset($_SERVER['HTTP_REFERER']) and !empty($_SERVER['HTTP_REFERER'])) {
$link = $_SERVER['HTTP_REFERER'];
$refData = parse_url($link); }
if($refData['host'] !== 'domain.com') {
die("server error"); }
?>

<p>Send this link - <?php echo htmlentities($page_url, ENT_QUOTES); ?></P> 

<input name="link" type="hidden" 
value="<?php echo htmlentities($page_url, ENT_QUOTES); ?>" />
<input type="submit" value="submit" />

提交表单后,referer url会切换到 form.php 。这段代码有问题吗?或者是否有任何具体方法可以阻止引用网址被切换?

1 个答案:

答案 0 :(得分:0)

正如评论已经指出的那样,它可以正常运作。

当用户第一次访问您的网站时,您可以使用sessions临时存储引荐来源。

<?php
session_start();

// ...

if( !isset($_SESSION['referrer']) ){
    $_SESSION['referrer'] =  parse_url($_SERVER['HTTP_REFERER']);
}

// ...

if( $_SESSION['referrer'] !== "domain.com"){
    die("Server Error");
}