を使用して代わりに、1つのMySQLの2行を挿入:は、私がログインテーブルにログインデータを挿入しようとしている、と私はこのコードを使用していPDO
login.php
$verify = password_verify($password, $results['user_password']);
if($verify){
$session->logUser($results['user_id']);
header('Location: dashboard.php');
}else{
//Error
}
そして、その後、session.phpに私はこれでセッションクラスを持っている:これは正常に動作している
public function logUser($userId){
$_SESSION['userId'] = $userId;
$token = $this->createToken();
$timestamp = time() + (86400 * 14);
$connection = new Connection;
$db = $connection->openConnection();
$stmt = $db->query("INSERT INTO logins (login_token, login_userId, login_expires) VALUES ('$token', '$userId', '$timestamp')");
$stmt->execute();
}
、トークンはGENERされていますated、すべてのデータは正しいですが、データベースをチェックすると、2つのレコードが作成されます(同一のものですが、auto_increment IDが異なる)。
どうしてですか? ありがとうございます。
EDIT:私は永続的なログインを作成するattempにこのトークン事をやっている、私はクッキーを作成するためにまだ持っていますが、最初に私は、ログインデータがデータベースに正しく保存されていたかどうかをテストしたかったです。
私はすべてのコードをチェックしましたが、本当に問題を見つけることができず、必要に応じてスクリーンショットを投稿します。 – nick
は、ループ中であっても、セッションが開始されていなくてもよいし、ログイン時にリフレッシュリダイレクトであってもよい。 –
'query()'はクエリを1回実行します。 'execute()'はそれを再び実行します。これを修正するときは、プリペアドステートメントを調べて、クエリを連結しないでください。それはPDOの目的を破るものです。 – jh1711