我知道这很简单,但我不知道这一点。我在同一页面上有php代码,用于注册表单,当任何条件与代码匹配时,会显示一些会话变量。
代码结构如下:
<?php
session_start();
if(isset($_POST['signup'])
{
if(condition)
{
$_SESSION['err1']="string";
}
else
{
$_SESSION['err2']="string";
}
}
?>
//HTML form
<?php if(isset($_SESSION['err1']) {?>
<li><?php echo $_SESSION['err1'];}?></li>
<?php if(isset($_SESSION['err2']) {?>
<li><?php echo $_SESSION['err2'];}?></li>
//rest of the form
我的代码中有更多if-else块。最初,当条件匹配时,将显示会话消息。但是一旦页面刷新,另一个会话消息就会与先前的会话消息一起显示。
这是使用表单编码的正确方法吗?因为我想在html表单中显示错误消息。
答案 0 :(得分:0)
在回显后,只需取消设置会话变量即可。
<li><?php echo $_SESSION['err1'];} unset($_SESSION['err1']); ?></li>
答案 1 :(得分:0)
这可能是因为你没有清空会话变量。
在2个HTTP请求之间,会话保留在服务器上(每次请求时重新加载juste)。
因此,如果您在第一次通话时在$_SESSION['error1']
上发送消息,则会显示该消息。然后,在第二次加载时,如果您在$_SESSION['error2']
上发送消息,则还会显示error1
消息,因为该会话会保留您的数据。
显示表单后,您应该清空所有会话消息
答案 2 :(得分:0)
这是一个使用会话来回显错误的错误示例。
我在php开始时做了很多次。
$errors = array(); // make a empty array errors before the conditional statements
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['Submit'])) {
//handle your POST variable
if(condition1){
$errors[] = "some error";
}
if(condition2) {
$errors[] = "some another error";
}
//more conditions
if (!empty($errors)) {
//process your form data if there is no errro
} else {
//display back your form along with Errors
if(isset($errors) && !empty($errors)) {
foreach($errors as $error) {
echo "<p class = 'error'>" . $error . "</p>";
}
}
<form action = "" method = "POST">
//your form elements
</form>
}
}
答案 3 :(得分:0)
在php页面的第一行,你可以写 您可以尝试if条件
之间的三行中的任何一行if(isset($_SESSION))
{
unset($_SESSION);
unregister($_SESSION['variable-name']) // try this also
session_destroy(); //try this also
}