私のログインで問題が発生しました。私が最初にブラウザを開くと、2回ログインしてインデックスにリダイレクトする必要があります。その後、私はログアウトしてログインすることができ、すべて正常に動作します。PHPのログインが意図した通りに動作しない
マイログインコード:
<?php
include "connect.php";
session_start();
if (isset($_POST['user_login'])) {
$state_on = 1;
$state_off = 0;
$user = $conn->prepare("SELECT * FROM users WHERE username=:name AND password=:pword AND state=:s");
$user->bindParam(":name", $_POST['username']);
$user->bindParam(":pword", $_POST['password']);
$user->bindParam(":s", $state_on);
$user->execute();
if ($user->rowCount() > 0) {
$row_user = $user->fetch(PDO::FETCH_ASSOC);
$user_id = $row_user['id_user'];
$user_session = $row_user['session_id'];
$user_lvl = $row_user['id_lvl'];
$update_session = $conn->prepare("UPDATE users SET session_id =:idsession WHERE id_user=:iduser");
$update_session->bindParam(":iduser", $user_id);
$update_session->bindParam(":idsession", session_id());
$update_session->execute();
$_SESSION['session_id'] = $user_session;
$_SESSION['id_user'] = $user_id;
$_SESSION['id_lvl'] = $user_lvl;
header("Location: index.php");
// echo 'login = SUCCESS!';
} else {
// echo 'login = FAIL!';
}
}
、ここでは、私は、インデックスに含める私session.phpです。 PHP
session_start();
include "connect.php";
$login_session = $_SESSION['session_id'];
$login_user = $_SESSION['id_user'];
$login_nvlseg_user = $_SESSION['id_lvl'];
if (!isset($login_session)) {
$conn = null;
header('Location: login.php');
}
try {
$session_sql = "SELECT * FROM users WHERE session_id=:session";
$stmt = $conn->prepare($session_sql);
$stmt->bindParam(":session", $login_session);
$stmt->execute();
if ($stmt->rowCount() == 0) {
session_unset();
$conn = null;
header('Location: login.php');
}
} catch (PDOException $e) {
//
echo "Error: " . $e->getMessage();
}
おかげで
ええ、セッションが設定されている場合は、最初に確認する必要があります。(ログインした) – opHASnoNAME
if(session_status().....で試してみましたが、私は2回ログインする必要があります... – JPeter
最初のログイン時に "SUCCESS"エコーが表示されますか? –