1

覚えている機能について疑問があります。

システムがオフになった後、ユーザーがサイトを開いたときにログインしたままにすることは可能ですか?

たとえば、ログイン後に自分のサイトで作業していると、突然システムがオフになります。そして再び私のシステムを開きます、システムは私のユーザー名でログインしたままですか?

システムにCookieを保存するためのrememberme機能を保存するために自分自身を検索しました。しかし、私はこれに対する明確な解決策を得ることができませんでした。誰もがこの機能のコーディングを書く方法を知っています。これを解決するのを手伝ってくれませんか私を覚えている機能の問題

<?php 
include("classes.php");
$jeob = new EF_Sql();

    $email= $_POST['userid'];

    $password= $_POST['password1'];

    $papas=base64_encode($password);

    $check = $_POST['rememberme'];

        $tablename="user_record";

    $select_qry = $jeob->SqlQuery("SELECT * FROM ".$jeob->dbprefix.$tablename." WHERE email ='$email' AND password ='$papas' AND active_link='1' ");

        if($jeob->SqlRows($select_qry) == "0"){                 

         echo "Invalid Username and Password";

        } else {

        if($check) {

setcookie("username", $email, time() + 3600);       // Sets the cookie username

        }

        $getuser = $jeob->SqlFetch($select_qry);

        $_SESSION['userid'] = $getuser['user_id'];  

        $_SESSION['oauth_provider'] = "normal";

        $_SESSION['email'] = $getuser['email'];     

        }
?>

上記のコーディングは私のサイトで使用されています。ただし、ブラウザを閉じてサイトを再度開いた後も、ログインしたままになります。ただし、システムがシャットダウンすると破棄されます

4

4 に答える 4

3

Cookieは、システムがシャットダウンされてもしなくてもかまいません。

いくつかのことがあります:

  1. システムが1時間以上シャットダウンされます。Cookieは1時間後に期限切れになるように設定されていsetcookie("username", $email, time() + 3600);ます。もちろん、「永続的」にしたい場合は、これを数週間(またはそれ以上)に延長することもできます。
  2. Internet Explorerを使用していて、ブラウザを「クリーンに」閉じずにシャットダウンします。Internet Explorerは、「大まかな」シャットダウン後に物事を忘れる傾向があります。

ただし、自動ログインのユーザー名を保存するだけでは安全性が低いという点で、コードにはセキュリティ上の問題があります。誰でも、管理用メールアドレスを使用して「ユーザー名」Cookieを作成し、それらとしてログインすることができます。Remember_meが時々処理される方法は、「自動ログイントークン」を生成することです。これはランダムハッシュであり、データベース内のそのユーザーに対して割り当てられ、Cookieに保存されます。このハッシュは、使用されない数日ごとに期限切れになる可能性があり、深刻な古いログインの発生やハイジャックを防ぐことができます。

于 2012-12-21T09:45:53.680 に答える
2

よく私は通常人々が暗号化された認証クッキーを設定するのを見ます。そのCookieが10日間有効である場合は、セッションの有効期限が切れている場合でも、それを使用してユーザーを認証できます。

于 2012-12-21T09:46:05.607 に答える
1

セッション/Cookie
は、実際にCookieを使用していることを確認してください。スニペットにはいくつかの$_SESSIONものが表示されていますが、保存されているCookieが使用されていることを示唆するものはありません。

Cookie
の有効期限Cookieは1時間だけ保存されます。を参照してくださいtime() + 3600。3600は秒を表し、Cookieが有効になる期間を表します。多分それが問題です。この期間を特定の日または週に費やすことができますが、これはかなり一般的です。

ブラウザの設定
また、ブラウザのCookie設定がおかしい可能性があるため、閉じるとすべてのCookieが削除されます。たぶん別のブラウザで確認してください。

于 2012-12-21T09:43:13.557 に答える
1

Cookieは、ブラウザに保存されるユーザーセッションを維持するための最良のソリューションです。また、ユーザーがHTTPリクエストを送信するたびに、Cookieがリクエストとともに送信されます。アプリケーションは、Cookie内の情報を読み取ることでユーザーを識別できます。

必要に応じてCookieの年齢を選択できます。

于 2012-12-21T09:47:56.667 に答える