レスポンスヘッダー情報の変更とセッションについて
PHPを用いています。
セッションを使ってログインを管理していますが、ブラウザバック時に、「フォーム再送信の確認」(Chrome)が表示されるようになってしまったため、
session_start();
の下に、
header('Expires:-1');
header('Cache-Control:');
header('Pragma:');
を記述し、キャッシュに関するヘッダー情報を送らないことにより、この問題を解決しました。
変更前
class Session
{
private static $session_started;
public function __construct() {
if (!self::$session_initialized) {
if (!isset($_SESSION)) session_start();
}
self::$session_initialized = true;
}
}
}
変更後
class Session
{
private static $session_started;
public function __construct() {
if (!self::$session_started) {
if (!isset($_SESSION)) {
session_start();
header('Expires: -1');
header('Cache-Control:');
header('Pragma:');
}
self::$session_started = true;
}
}
}
なのですが、現在ログインができないという状況になってしまいました。
ローカル開発環境では、ローカルのデータベースにセッション情報を登録し、テスト環境では、AWSのRDSを使用しています。(この部分は仲間がいじっているのでデータベースのことに関してはわかりませんが、ここが関係するのでしょうか?)
ログイン認証には、ajaxで別phpファイルに通信し、そのファイルでは、
<?php
#POSTリクエストのみAccept
if ( $_SERVER['REQUEST_METHOD'] != "POST" ) {
echo "Error Occured, Go Back!";
exit;
}
include_once 'Database.php';
$database = new Database();
isset($_SESSION)||session_start();
if(!empty($_POST['id'])) $_SESSION['id'] = $_POST['id'];
if(!empty($_POST['pw'])) $_SESSION['pw'] = $_POST['pw'];
# ログインの認証
if( !$database->userCheck( $_SESSION['id'], $_SESSION['pw'] ) ){
echo "false";
exit;
}else{
echo "true";
}
コンソールでは、このログインの認証部分で、falseが返ってきています。
単にIDとパスワードが間違っている可能性が考えられるかと思いますが、このコード変更を行う前後で、データベースも含め、このコード以外何もいじっていないので、そうではないと思っています。
上記のHTTPヘッダー情報の変更でどうセッションに影響するのでしょうか?
よろしくお願い致します。