Php 会话显示 2 bootstrap 警报而不是一个使用 IF 条件

Php session display 2 bootstrap alerts instead one using IF condition

我有一个页面调用“plans.php”和一个页面调用“register.php” .在“plans.php”页面中,我有以下代码:

<?php
session_start();
$_SESSION['quarterly'];
$_SESSION['annual'];
?>


**Quarterly submit button** 

<form method="post" action="register.php" >

<input type="hidden" name="quarterly" value="">
<input type="submit" class="btn btn-success btn-lg" href="register.php" name="quarterly" value="Quarterly Plan" />
</form>

**Anual submit button**

<form method="post" action="register.php" >

<input type="hidden" name="annual" value="">
<input type="submit" class="btn btn-success btn-lg" href="register.php" name="annual" value="Annual Plan" />
</form>

在“register.php”页面中我有以下代码:

<?php session_start(); ?>

<?php

   if (isset($_SESSION['quarterly'])) {
   echo '<div class="alert alert-success" role="alert">You selected Quarterly Plan - <a href="plans.php">CHANGE</a></div>';
}

   if (isset($_SESSION['annual'])) {
   echo '<div class="alert alert-success" role="alert">You selected Annual Plan - <a href="plans.php">CHANGE</a></div>';
}

?>

当用户点击plans.php页面中的季度或年度提交按钮时,register.php页面显示2 Bootstrap 个警报而不是一个与用户点击相关的警报,并且在同一页面中,当用户刷新 register.php 页面时,两个警报都会继续出现。

我还尝试插入下面的代码以查看终止其中一个会话是否只显示一个警报而不是两个但没有成功:

<?php

   if (isset($_SESSION['quarterly'])) {
   echo '<div class="alert alert-success" role="alert">You selected Quarterly plan - <a href="plans.php">CHANGE</a></div>';
   session_unset('annual');
}

   if (isset($_SESSION['annual'])) {
   echo '<div class="alert alert-warning" role="alert">You selected Annual plan - <a href="plans.php">CHANGE</a></div>';
   session_unset('annual');
}

?>

刷新同一页面时,如何只显示一个警报而不使该警报消失?

正在简化您的代码...尝试类似的操作。

简单点。

plans.php

<form method="post" action="register.php" >
<input type="submit" class="btn btn-success btn-lg" name="submit" value="Quarterly Plan" />
</form>

<form method="post" action="register.php" >
<input type="submit" class="btn btn-success btn-lg" name="submit" value="Annual Plan" />
</form>

register.php

session_start();
if(isset($_POST['submit'])){
    $_SESSION['plan']  = $_POST['submit'] ;
}
if (isset($_SESSION['plan'])){
   echo '<div class="alert alert-success" role="alert">You selected '.$_SESSION['plan'].' - <a href="plans.php">CHANGE</a></div>';
}else{
    echo '<div class="alert alert-success" role="alert">You don\'t have any plan, Please - <a href="plans.php">Select</a></div>';
}

优秀的程序员总是避免使用太多 If_ElseLoopsunnecessary code

问题是您正在设置那些 $_SESSION 值,因此您的会话将包含它们。解决方案是通过 isset 检查哪些 $_POST 包含。如果您想将其存储到会话中,则可以覆盖已发布的 $_SESSION 中的值并删除另一个。