2012-02-13 11 views
0

私は以前にウェブサイトにアクセスしたことについて話しているわけではありませんが、ログインしていないユーザーが以前にウェブサイトにアクセスしたことがあっても、ウェブサイトのホームページにアクセスしたばかりです。私はセッションで何かをしなければならないと思っていますが、私はそれをまだ理解していません。PHPでは、ユーザーがウェブサイトのホームページ/インデックスページにアクセスしたばかりかどうかを確認するにはどうすればよいですか?

+0

いつでもCookieを使用できますが、安心できません。 – yasar

答えて

2

$_SERVER['HTTP_REFERER']でこれを行うと、最後に訪れたページのアドレスが返されます。この変数は変更することができ、ユーザーエージェントによって設定されていない可能性があるため、重要なことにはこれを頼ることはできません。

現在のページへのユーザエージェントと呼ばページ(もしあれば)のアドレス:PHPドキュメントから

。これはユーザエージェントによって設定されます。すべてのユーザエージェントが に設定されているわけではなく、HTTP_REFERERを 機能として変更する機能もあります。要するに、それは本当に信頼できるものではありません。

// by file 
setcookie('last_page', $_SERVER['PHP_SELF']); 
// by uri 
setcookie('last_page', $_SERVER['REQUEST_URI']); 

とに確認してください:

// homepage 
$home = 'home'; 
// check 
if ($_COOKIE['last_page'] == $home) {} 

参照

    あなたはまた、次のように訪問したクッキーやセッション変数を使用してページを設定することができ

  • $_SERVER
  • setcookie()
  • $_COOKIE
  • +1

    ありがとう、これは私が探していたものです。 – dave

    1

    あなたは、PHPのServer Variableを活用することができるはずです。

    $refer = $_SERVER['HTTP_REFERER']; 
    

    これは誰でも簡単に偽装することができますが、これは簡単な方法です。

    +0

    あなたが言ったように、簡単になりすますことができるので、そのサーバ変数に対してhtmlspecialchars()を実行してください。 –

    +0

    ユーザーは以前からのページを操作できるので、より良いアプローチは何ですか? – dave

    +0

    本当に良い方法はありません。 SSLを使用しているWebサイトが増えれば、これはさらに大きな問題になります。 – earthmeLon

    1

    インデックスページを入力するときに、タイムスタンプ付きのCookieを設定できます。

    1

    確かな方法(ユーザーがCookieを有効にしていることが前提)を望む場合は、セッションを開始し、$_SESSION['ref'] = $_SERVER['PHP_SELF']のような変数を割り当て、ユーザーが訪問する後続のページのホームページURLを確認します。

    関連する問題