パスワードとユーザー名が挿入されていると、コードで変数を設定することが想定されています。しかし、$ _SESSION変数は決して設定されず、私は理由を知らず、ログインページにリダイレクトしています。
loginform.php:
<?php
$server = 'hiddenforthispost';
$username = 'hiddenforthispost';
$password = 'hiddenforthispost';
$schema = 'hiddenforthispost';
$pdo = new PDO('mysql:dbname=' . $schema . ';host=' . $server, $username, $password,
[ PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION]);
if (isset($_POST['Submit'])) {
if(empty($_POST['Username']) || empty($_POST['Password'])) {
echo '<p> You must insert all of the fields! </p>';
}
else {
$stmt = $pdo->prepare('SELECT * FROM logins
WHERE login_name = :username');
$criteria = [
'username' => $_POST['Username']
];
$stmt->execute($criteria);
$user = $stmt->fetchColumn(1);
echo $user;
if (password_verify($_POST['Password'], $user)) {
session_start();
$_SESSION['loggedin'];
header('location: adminpage.php');
}
else {
echo '<p> Wrong password </p>';
}
}
}
?>
私は唯一のアクセスにユーザーにログインするページ: adminpage.php:
<?php
session_start();
if(!isset($_SESSION['loggedin'])){
header('location: loginpage.php');
}
else {
}
?>
そして、はい、私はこの問題について無数の記事をチェックしましたし、それらのどれも動作しません。私は何が間違っているのか分かりません。 – xafierz
エラー報告をオンにします。おそらく、セッションが開始される前にヘッダーを送信するような出力があります。これを解決するには、session_start()をすべてのファイルの先頭に移動します。 –
@JohnConde私の答えを見て、私はそれがその質問には何もないと思います。 – Barmar