私は問題#2の原因を発見しました。 session_register(foo)の使用です。PHPのセッションでログインシステムを設定するには
私はhandle_registration.phpに以下を入れました。
session_register("foo");
session_register("foo2");
$foo2 = $_POST['email'];
$foo['email'] = $_POST['email']
セッションクッキーに変数が格納されていないので、問題は解決しません。
これは私のlogin scriptのロジックです。
Pascal Martinと The Disintegratorが解決しよう- :ログインのためのセッションを生成する際に機能
session_write_close
を置くための適切な場所ですか? - ユーザー "セッション"の永続セッションを取得して、index.phpが読み込まれるたびに新しいセッションが開始されないようにするにはどうすればよいですか?
index.php
の冒頭にsession_start()
があります。セッションコードの非常に最初の後、私は右の持っている私のindex.php
<?php
session_write_close(); // Session code ends here!
?>
の非常に終わりながら、
私のindex.phpの冒頭
session_start();
if($_SESSION['logged_in'] == false) {
$random_number = rand(1,100000);
session_id($random_number);
session_id['email'] = '';
}
検証ユーザのパスワードの処理by
$dbconn = pg_connect("host=localhost port=5432 dbname=masi user=masi password=123");
$result = pg_prepare($dbconn, "query22", "SELECT passhash_md5 FROM users
WHERE email=$1;");
$passhash_md5 = pg_execute($dbconn, "query22", array($_REQUEST['email']));
// users from registration/login form
if ($passhash_md5 == md5($_REQUEST['password'])) {
$_SESSION['logged_in'] = true;
$_SESSION['email'] = $_REQUEST['email'];
$_SESSION['passhash_md5'] = md5($_REQUEST['password']);
}
// this may be unnecessary if the passhash_md5 cannot be changed by the user
$passhash_md5_2 = pg_execute($dbconn, "query22", array($_SESSION['email']));
// users staying in the site
if ($passhash_md5_2 == $_SESSION['passhash_md5'])) {
$_SESSION['logged_in'] = true;
}
このコードは、ユーザーのデータがユーザーのために保存されないように、連続的にランダムなセッションを生成します。 $_REQUEST
は、$_REQUEST
には$ _SESSIONが含まれていないため、ログイン/登録ハンドラの後に$_SESSION
を置き換えました。同じ問題があり、登録/ログイン後にホームページにユーザ名が表示されません。
最初の問題を解決していただきありがとうございます! –
あなたは歓迎です:-)私はいくつかの考えで私の答えを編集しました。多分彼らはあまりにも助けるでしょう... –
2番目の更新の説明をありがとう! - 改善のためのあなたの提案を実装しました。サイトは、引き続きユーザーのデータが次のページに転送されないように、セッションIDを生成し続けます。 –