1

作業中のサイトでスプラッシュページ効果を作成しようとしています(スプラッシュページが悪いなどはわかっていますが、理由があります)。基本的に、スプラッシュ画像オーバーレイを実行するスクリプトを呼び出したいのは、訪問者は外部のWebサイトからインデックスにアクセスしています。そうすれば、訪問者が内部ページから「ホーム」をクリックしても、スプラッシュは起動しません。私は探していて、$ _ SERVER ['HTTP_REFERER']を使用してphpでこれを行うことができるようですが、私はphpを初めて使用し、午後中ずっとそれを試してみてもうまくいかないようです。

次のコードはスクリプトをロードしますが、参照URLに「mysite」が含まれていて、ページの上部に
「PHPエラーが発生しました
重大度:通知
メッセージ:未定義のインデックス:HTTP_REFERER 」というエラーメッセージが表示されるかどうかは気にしないようです。
ファイル名:..."

<?php
$referrer=$_SERVER['HTTP_REFERER'];
if(stristr($referrer, "mysite") == FALSE) {

echo '
<script type="text/javascript">
$(document).ready(function() {

                   $("#wrapper").hide();

        $("#imgContainer").npFullBgImg("/imgs/splash_image.jpg", {fadeInSpeed: 2000, center: true});   
        $("#logoContainer").fullLogoImg("/imgs/splash_logo.png", {fadeInSpeed: 2000, center: true});
        $("#logoContainer").click(function(){

                $("#wrapper").show("fast");
                $("#splash_kill").remove();
                $(this).remove();

        });
});
    </script>';
}
?>

どんな助けでも大歓迎です。ありがとう!

4

4 に答える 4

3

この通知は、HTTP_REFERERが設定されていないことを示しています。

'HTTP_REFERER'ユーザーエージェントを現在のページに参​​照させたページのアドレス(存在する場合)。これは、ユーザーエージェントによって設定されます。すべてのユーザーエージェントがこれを設定するわけではなく、HTTP_REFERERを機能として変更する機能を提供するものもあります。要するに、それは本当に信頼できるものではありません。

http://php.net/manual/en/reserved.variables.server.php

クイック検索でこれがわかり、もう少し詳細がわかります:http ://www.electrictoolbox.com/php-http-referer-variable/

アップデート:

セッション変数を使用してみることができます。変数は単純なブール値である可能性があり、スプラッシュページが表示されている場合はtrueに設定され、それ以外の場合はfalseに設定されます。これには、Webサイトへのエントリポイントとなる可能性のあるすべてのページや、スプラッシュを表示するすべてのページでのセッション処理が必要になります。

http://php.net/manual/en/function.session-start.php

もちろん、これはセッションの期間中のみ実行可能です。

したがって、代わりに、またはこのアプローチでCookieを使用できます。

個人的には、これは単なるスプラッシュであるため、おそらく単純なCookieアプローチを選択します。このような単純なもののためにセッションのオーバーヘッドを追加する必要はありません。

于 2010-07-26T20:50:30.903 に答える
1

これが私が試みていることです。ワイルドカードについてはよくわかりません:

 <?php
 //echo $ref
 $ref = $_SERVER["HTTP_REFERER"];
 //if is NOT coming from inside linking
 if ( $ref != '*www.example*' )
 // send to index and exit
 {header("Location:http://www.example.com/index.php");
 Exit;
 //
 }
 ?>
于 2011-01-18T00:11:23.193 に答える
0
if(isset($_SERVER['HTTP_REFERER'])&&!empty($_SERVER['HTTP_REFERER'])) {
    $http_referer=$_SERVER['HTTP_REFERER'];
}
于 2012-05-08T06:44:34.607 に答える
0

$_SERVER['HTTP_REFERER'] の設定に完全に依存することはできませんが、スプラッシュ ページには十分信頼できることがわかると思います。設定されていない場合、リファラーはなく、ヘッダーにないため空白になります。

まず、empty($_SERVER['HTTP_REFERER']) かどうかをテストしてから、独自のドメインが含まれているかどうかを確認する必要があります。

別の注意として、私は、これらの $_SERVER 変数のいくつかの名前を変更し、一般的にそれらを台無しにした古い IIS サーバーで作業していました。print_r($_SERVER) を実行して、何が起きているかを確認します。

于 2010-07-27T02:34:35.577 に答える