1

私のプロジェクトでは、Cookie を使用してユーザーを自動的にログインさせています。ただし、どの Cookie がどのような目的で使用されているかをユーザーに知られたくありません。

このため、Cookie の名前とコンテンツを暗号化することにしました。これらの Cookie のコンテンツを使用するために復号化しても、大きな問題は発生しません。私が望むように完璧に機能します。ただし、互換性とダイナミクスのために、次のような同様のコードを使用して、Cookie を名前で動的に呼び出そうとしました。

if(isset($_COOKIE[$encryption->decrypt('username')]){ ... }

しかし、これはうまくいかなかったようです。次のように、Cookie の暗号化された名前で変数を設定することもありません。

$cookie_name = $encryption->decrypt('username');
if(isset($_COOKIE[$cookie_name]){ ... }

私が現在このスクリプトを使用している方法 (動作しますが、少しずさんなようです) は次のようになります。

if(isset($_COOKIE['Nm9yNCtoK1lTY2M5TnhKWnRvL0NjUT09']){ ... }

これを正しく行う方法はありますか、または現在行っているように、事前に暗号化された名前で Cookie を呼び出す必要がありますか?

4

2 に答える 2

2

Cookie を使用してユーザー データを保存したくない場合は、代わりに $_SESSION を使用して、ユーザーがこのコードをより長く保持できるようにします。

session_set_cookie_params ((14 * 24 * 60 * 60),  '/', '.yoursite.com');
//Set the session for 14 days, on all paths, on all subdomains of yoursite.com  

これはブラウザを閉じるよりも長く続き、次に開いたときにセッションを継続します。

たとえば、login.php では、次のようにすることができます。

if ($remembermechecked) {
session_set_cookie_params ((14 * 24 * 60 * 60),  '/', '.yoursite.com');}

$remembermechecked が true の場合、セッションは 14 日間続きます。

于 2013-02-28T05:17:47.873 に答える
1

上記のコメントで述べたように、セッションを使用するのが賢明です。

PHP では、セッションを「永続的」にすることができます... 別名: ユーザーがブラウザを閉じたときに迷わないようにします。

この回答を確認してください。

https://stackoverflow.com/a/9797962/1521230

編集:

各リクエストでセッション Cookie の期間を「リセット」するには、各ページで session_start() の後に、session_regenerate_id(TRUE) も使用する必要があります。

于 2013-02-28T05:12:16.867 に答える