-3

ユーザーにログインさせることはできますが、そのユーザーの情報を他のページに引き継ぐにはどうすればよいですか? $thisUserすべての情報のクエリを保持したい

$query = "SELECT * FROM users WHERE username = ? AND password = ? LIMIT 1";

以下は、ログインするための私のコードです。

    <?php

require_once 'includes\constants.php';

class Mysql{
    private $conn;

    function __construct(){
        $this->conn = new mysqli(DB_SERVER,DB_USER,DB_PASSWORD,DB_NAME) or die('There was  a problem conecting to the database.');
    }

    function verify_username_and_pass($un, $pwd) {      
        $query = "SELECT * FROM users WHERE username = ? AND password = ? LIMIT 1";

        if($stmt = $this->conn->prepare($query)){
            $stmt->bind_param('ss',$un,$pwd);
            $stmt->execute();

            if($stmt->fetch()) {
                $stmt->close();
                return true;
        }
    }
    }

}

    <?php

require 'classes\mysql.php';

class Membership{

    function validate_user($un,$pwd) {
        $mysql = New Mysql();
        $ensure_credentials = $mysql->verify_username_and_pass($un,md5($pwd));

        if($ensure_credentials) {
            $_SESSION['status'] = 'authorized';
            header("location: index.php");
            } else return "Please enter a correct username and password";
    }

    function log_user_out() {
        if(isset($_SESSION['status'])) {
            unset($_SESSION['status']);

            if(isset($_COOKIE[session_name()])) 
                setcookie(session_name(),'',time() - 10000 );
                session_destroy();
        }
        }
}
4

3 に答える 3

3

HTMLはステートレスです。つまり、ページの読み込み間でデータを保存することはできません。ただし、PHPとのセッションと呼ばれるものを使用して、サーバーへの呼び出し(ページロード)全体でデータを保存できます。

呼び出すだけで本当に簡単session_start()で、グローバル$_SESSION変数の操作を開始できます。セッションは訪問者ごとに異なります。

セッションのマニュアル

チュートリアル

于 2012-12-19T23:32:09.773 に答える
0

サイト全体に情報を保持するために、情報を保持し$_SESSIONます。使用者がログインしたら、ログインを通過した後、$_SESSION保持する必要がある に情報を追加します。

于 2012-12-19T23:33:50.393 に答える
-2

作成できる最も単純なモデルは、次のようなものです...

セッションを呼び出すスクリプトの先頭で:

session_start();

次に、セッションで名前と値のペアを作成します。

$_SESSION['blnLoggedIn'] = $blnLoggedIn;

次に、保存された値をクエリまたはテストします。

echo $_SESSION['blnLoggedIn'];

この値は、「安全な」ページの上部で照会できます。ユーザーがログインしていない場合は、ログイン ページにリダイレクトできます。

if (!$_SESSION['blnLoggedIn']) {
    header('Location: http://www.example.com/login');
}
    [...'secure' page content...]
}

セッションの問題は、セッションが任意の時間 (思い出すと約 24 分) しか続かないことです。$_SESSIONより多くの作業を行うと、セッションの有効期限が切れた後も引き続きログインする必要があるかどうかを判断するために、Cookie、およびデータベースを使用するログイン モデルを作成できます。これにはさまざまな方法がありますが、最も簡単な方法は、ユーザー名をバニラ Cookie に保存することです。セッションの有効期限が切れ、新しいページが表示されると、Cookie を使用してデータベースにクエリを実行し、特定の時間枠 (たとえば 1 時間) 内にログインしたかどうかを判断します。ユーザーがログインした時間は、この目的およびその他の目的でデータベースに記録されます。

詳細については、セッションに関する PHP マニュアルを参照してください。ユーザーが投稿したコメントには細心の注意を払ってください。彼らは非常に貴重です。

于 2012-12-19T23:36:18.220 に答える