私のサイトでは、フォームは AJAX 経由で取り込まれ、セッション ID と照合されます。これが最適ではないことはわかっていますが、私たちにとってはうまくいっています。リファラーがセッション ID を持っていない場合、「別のページ」にリダイレクトされます。一部の外部 URL がフォームに直接アクセスできるようにする必要があります。フォームへのリンクがあるページにセッション ID を設定します。
フォームページにあるものは次のとおりです。
<?php
$code = $_GET['sessionid'];
if(strcmp( $code , 'XXXXX' ) != 0) {
header("Location: http://www.domain.com/anotherpage.php");
}
?>
一部の外部ドメインにフォーム ページへの直接アクセスを許可する必要があり、これに問題があります: (フォーム ページの head タグの上に配置しています)
<?php
$code = $_GET['sessionid'];
$referrer = $_SERVER['HTTP_REFERER'];
if(strcmp( $code , 'XXXXX' ) !=0) {
header("Location: http://www.domain.com/anotherpage.php");
} else {
if (preg_match("/site1.com/",$referrer)) {
header('Location: http://www.domain.com/desiredpage.php');
}
}
?>
これはまだ「anotherpage.php」に戻ってきます。何かアイデアはありますか?
** * ** * **編集* ** * ** * 助けてくれてありがとう、それは私が要求した広告で動作します。今、私が尋ねたことが完全に正しくないことがわかりました。これにより、URL に =sessionid?=XXXXX が追加されます。URL が変更されないように .jquery .load でコンテンツをロードしているため、これは私のサイトでは問題になりません。セッション ID を表示したくありませんが、現在は表示されています。a) 何らかの形で URL を「トリミング」するか、b) 2 つの関数を分離して排他的にすることはできますか?