私は PHP を初めて使用し、コンテンツ管理サイトを構築しようとしています。
ログインページの開発を開始しましたが、最初は SESSION 変数が通常どおり保持され、ログインが確認された後に別のページへのリダイレクトを使用しても問題なく動作していました。
しかし、2日前にパスワードを忘れた機能も開発しようとしましたが、それ以来、有効にしたばかりの出力バッファリングを変更するだけで問題が発生しました。SESSION 変数はリダイレクトされたページに引き継がれないため、ログインは機能しません。
私のコードは以下の通りです:
<?php include("../includes/session.php"); ?>
<?php require_once("../includes/db_connection.php"); ?>
<?php require_once("../includes/functions.php"); ?>
<?php require_once("../includes/validation_functions.php"); ?>
<?php
$username = "";
if (isset($_POST['submit'])) {
// Process the form
// validations
$required_fields = array("username", "password");
validate_presences($required_fields);
if (empty($errors)) {
// Attempt Login
$username = $_POST["username"];
$password = $_POST["password"];
$found_admin = attempt_login($username, $password);
//print_r($found_admin);
if ($found_admin) {
// Success
// Mark user as logged in
$_SESSION["admin_id"] = $found_admin["usr_serno"];
$_SESSION["username"] = $found_admin["username"];
redirect_to("admin.php");
} else {
// Failure
$_SESSION["message"] = "Username/password not found.";
}
}
}else if(isset($_POST['forgot'])) {
redirect_to("forgotPassword.php");
}
?>
<?php $layout_context = "admin"; ?>
<?php include("../includes/layouts/header.php"); ?>
<div id="main">
<div id="navigation">
</div>
<div id="page">
<?php echo message(); ?>
<?php echo form_errors($errors); ?>
<h2>Login</h2>
<form action="login.php" method="post">
<p>Username:
<input type="text" name="username" value="<?php echo htmlentities($username); ?>" />
</p>
<p>Password:
<input type="password" name="password" value="" />
</p>
<input type="submit" name="submit" value="Submit" />
<input type="submit" name="forgot" value="Forgot Password" />
</form>
</div>
</div>
<?php include("../includes/layouts/footer.php"); ?>
session.php はセッションを開始し、admin.php は SESSION[admin_id] が設定されているかどうかを確認し、ページを表示するか、login.php ページに再度リダイレクトします。これが発生します。
アドバイスや助けをお願いします。