全体像

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つのリンクだけが示されているが、他のメニューリンクも同様の方法で更新する必要があり。関数の引数に、対応するフォームの名前を渡すことで、各メニューリンクを適切に処理することができる。

この変更により、ヘッダーメニューのいずれかのリンクがクリックされた際に、まずセッション変数が削除され、その後、対応するページへの遷移が行われるようになる。