全体像
cancel.php
<?php
session_start();
include "../config/com.php";
$dbh = db_open();
unset($_SESSION['num']);
unset($_SESSION['item']);
unset($_SESSION['code']);
// この部分は必要に応じて変更してください。現状ではホームページにリダイレクトするようになっています。
header('Location: ../index.php');
exit;
?>
<?php
if(isset($_POST["page"])){
$_SESSION["page"]=$_POST["page"];
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
</body>
<script>
function handleMenuClick(formName) {
// セッションをキャンセル
$.post("../cancel.php", function() {
// セッションキャンセル後、元のフォーム送信処理を実行
document.forms[formName].submit();
});
}
</script>
<a href="javascript:void(0);" onclick="handleMenuClick('index')" class="nav <?php if($_SESSION["page"]==1){echo "active";} ?>">
<i class="fa-solid fa-house"></i><span>ホーム</span>
</a>
<a href="javascript:void(0);" onclick="handleMenuClick('order')" class="nav <?php if($_SESSION["page"]==1){echo "active";} ?>">
<i class="fa-solid fa-house"></i><span>ホーム</span>
</a>
<a href="javascript:void(0);" onclick="handleMenuClick('news')" class="nav <?php if($_SESSION["page"]==1){echo "active";} ?>">
<i class="fa-solid fa-house"></i><span>ホーム</span>
</a>
<a href="javascript:void(0);" onclick="handleMenuClick('regist')" class="nav <?php if($_SESSION["page"]==1){echo "active";} ?>">
<i class="fa-solid fa-house"></i><span>ホーム</span>
</a>
</body>
</html>
上記のコードには、メニューの1つのリンクだけが示されているが、他のメニューリンクも同様の方法で更新する必要があり。関数の引数に、対応するフォームの名前を渡すことで、各メニューリンクを適切に処理することができる。
この変更により、ヘッダーメニューのいずれかのリンクがクリックされた際に、まずセッション変数が削除され、その後、対応するページへの遷移が行われるようになる。