0

请帮忙。在 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。这段代码有问题还是有什么特定的方法可以防止引用 URL 被切换?

4

1 回答 1

0

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

当用户第一次访问您的网站时,您可以使用会话将引荐来源网址临时存储在那里。

<?php
session_start();

// ...

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

// ...

if( $_SESSION['referrer'] !== "domain.com"){
    die("Server Error");
}
于 2013-12-02T20:29:40.087 回答