当我刷新/重新加载页面时,显示消息(主机名,用户名和数据库名称是强制性的。)。我更喜欢在提交表单后才显示该消息。
考虑我的 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>
预期的行为:点击提交按钮时,如果字段为空,则显示Host Name, User Name and Database Name are mandatory.
消息,此消息正常。
但是当我刷新页面时,消息也会显示出来。我怎么解决这个问题?
答案 0 :(得分:0)
这是因为浏览器正在重新加载您在该页面上执行的最后一个请求,这是对POST
的{{1}}请求。
当您点击重新加载时,它再次执行相同的请求。
大多数浏览器在重新提交帖子请求之前都要求确认。
您可以解决的问题是将您的消息存储在会话中并重定向到该页面。
开始添加PHP代码
index.php
然后将您的消息存储在会话中
session_start();
然后当您处理了当前请求重定向时。
$_SESSION['msg'] = 'Your message';
然后你可以检查是否有任何消息和输出
header('Location: YOUR_URL');
die();