2009-08-20 19 views
1

人が自分のサイトに登録するかログインすると、「thanks.php」に送信されます。ログインしていないユーザーに対して「ありがとう」ページを確保

ページチェックはあなたがログインしているかどうか、そうであれば何をすることができるかを教えてくれます。そうでない場合は、register.phpページへのリンクがあります。

しかし、誰もが自分のクッキーを作ってそのようなスクリプトを騙すことができます。

どうすればこのことから自分を守ることができますか?

私が考えたのは、$_SESSION['session_id']がデータベースに存在するかどうかを確認することでした。私が知っている限り、あなたはそれを生成することはできません。たとえ可能であっても、データベースアクセスを必要とします。

私はあまり確かではありませんが、誰かがこのような「感謝」ページに関するアドバイスや経験を持っていますか?

答えて

5

サーバーにアクセスすることなくセッションデータまたはデータベースデータを生成することはできません。したがって、これを行う安全な方法は、いくつかの変数を持つセッションクッキーを設定し、それをチェックすることです。

session_start(); 
$_SESSION['logged_in'] = true; 


session_start(); 
if(!isset($_SESSION['logged_in'])) 
{ 
    header("Location: youarentsupposetobehere.com"); 
} 
+0

そのセッションID変数が一意でなければなりません理由を管理クッキーを確保するの面倒を設定する必要があります。あなたが言うように、セッション内のものはサーバ上にあります – Eli

+0

Ooops ..そこに行きます。 –

2

の人がログインしたときまあ、はい、あなたはloggedin=trueまたはそのようないくつかを述べているCookieを設定しないでください。

あなたが代わりに $_SESSION['loggedin'] = TRUE PHPは、一般的に、自動的に

+0

実際には、ブラウザをシャットダウンするとセッションクッキーは失効します。ブラウザだけで、コンピュータをシャットダウンする必要はありません。この変数のphp.iniファイルを検索します:session.cookie_lifetime。その意味はその上に説明されています。 – KdgDev

+0

はい、デフォルトでは、セッションデータはセッションだけが終了します。 – Eli

関連する問題