当我刷新/重新加载页面时,显示消息(主机名,用户名和数据库名称是必需的 . ) . 我更喜欢在提交表单后才显示该消息 .
考虑一下我的 index.php 页面:
// Create database
$sql = "CREATE DATABASE $dbname";
if (mysqli_query($conn, $sql)) {
echo "<div class='msg'>Database created successfully</div>";
} else {
echo "<div class='msg'>Error creating database: " . mysqli_error($conn) ."</div>";
}
mysqli_close($conn);
}else{
echo "<div class='msg'>Host Name, User Name and Database Name are mandatory.</div>";
}
}?>
<form method="post" action="index.php" class="dbform" >
<table>
<tr><td>Host Name</td><td><input type="text" name="hostname" value="localhost"></td></tr>
<tr><td>User Name</td><td><input type="text" name="username"></td></tr>
<tr><td>Password</td><td><input type="text" name="pass"></td></tr>
<tr><td>Database Name</td><td><input type="text" name="dbname"></td></tr>
<tr><td colspan="2" align="center"><input type="submit" name="subbtn" value="Create"></td></tr>
</table>
</form>
Expected bahaviour: 当单击提交按钮时,如果字段为空,则显示 Host Name, User Name and Database Name are mandatory.
消息,它正常工作 .
但是当我刷新页面时,消息也会显示出来 . 我怎么解决这个问题?
1 回答
这是因为浏览器正在重新加载您在该页面上执行的最后一个请求,这是对
index.php
的POST
请求 . 当您点击重新加载时,它再次执行相同的请求 .大多数浏览器在重新提交帖子请求之前要求确认 .
您可以解决的问题是将您的消息存储在会话中并重定向到该页面 .
开始添加PHP代码
然后将您的消息存储在会话中
然后,当您处理了当前请求重定向 .
然后你可以检查是否有任何消息和输出