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ヘッダー情報の変更でどうセッションに影響するのでしょうか?

よろしくお願い致します。