スクリプトの 1 つでセッション変数を保存しようとしていますが、スクリプトの一部では問題なく動作しているように見えますが、コードの 2 番目の部分で削除されます。すべての行をエコーしましたが、なぜこれが起こっているのかわかりません。また、このコードは以前は問題なく動作していましたが、サーバーを切り替えてから、誤動作しているようです。コードの最初の部分は正常に動作するため、セッションの保存パスではないと思います。これが私のコードの基本的な外部構造です (スペースを節約するために無関係な部分をすべて削除しました):
<!--raw-->
<?php
session_start();
include 'config.php';
?>
<html>
<body>
<form id="driver_record" method="post" action="<?php echo htmlentities($PHP_SELF); ?>">
Enter Driver Number: <input type="text" name="driver" />
<input type="submit" value="Submit" name="user_submit" />
</form>
<?php
if(isset($_POST['user_submit']))
{
if(username_exists($_POST['driver'])){
$ulog = $_POST['driver'];
$_SESSION['user_id'] = $ulog;
echo $_SESSION['user_id']; //Session echos fine here
$tablename_cc = "cc_".$ulog;
$tablename_db = "db_".$ulog;
$tablename_misc = "misc_".$ulog;
$tablename_cash = "cash_".$ulog;
?>
<form id="expenses_update" method="post" action="<?php echo htmlentities($PHP_SELF); ?>">
<input type="submit" value="Approve" name="record_approve" />
<?php
}
}
?>
<?php
if(isset($_POST['record_approve']))
{
echo $_SESSION['user_id']; //Session does not echo here
$ulog = $_SESSION['user_id'];
$tablename_cc = "cc_".$ulog;
$tablename_db = "db_".$ulog;
$tablename_misc = "misc_".$ulog;
$tablename_cash = "cash_".$ulog;
}
//unset($_SESSION['user_id']);
//session_destroy();
?>
</body>
</html>
<!--/raw-->
編集: unset ステートメントをコメントアウトし、コードの動作を変更せずに if ステートメント内に配置しようとしました。