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" />

フォームが送信されると、リファラー 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 に答える