防止意外的表单重新提交
由于页面刷新而重新提交表单是 Web 应用程序中常见的烦恼。为了有效地处理这个问题,采用以下策略至关重要:
提交后重定向
不要在同一页面上显示响应,而是将用户重定向到提交表格后单独的页面。这确保了刷新页面加载时,它是一个新的 GET 请求,而不是已处理的 POST 请求的重复。
示例:
// submit // set success flash message (you are using a framework, right?) header('Location: /path/to/record'); exit;
禁用浏览器缓存
防止浏览器缓存您的表单,将以下标头添加到您的 PHP 脚本中:
header('Cache-Control: no-cache, no-store, must-revalidate'); header('Pragma: no-cache');
唯一页面令牌
为每个表单提交在服务器上生成唯一令牌。将此标记作为隐藏字段包含在表单中,并在处理之前对其进行验证。如果令牌不匹配或丢失,则将请求作为重复提交丢弃。
示例(带有会话令牌):
<?php session_start(); // Generate a unique token and store it in the session $token = md5(uniqid(mt_rand(), true)); $_SESSION['token'] = $token; ?> <!DOCTYPE html> <html> <body> <form action="submit.php" method="post"> <input type="text" name="name"> <input type="hidden" name="token" value="<?php echo $token; ?>"> <input type="submit" value="Submit"> </form> </body> </html>
<?php session_start(); // Get the submitted token $token = $_POST['token']; // Check if the token matches the session token if ($token != $_SESSION['token']) { // Discard the request } else { // Process the form data }
结论
通过实施这些技术,您可以有效防止不必要的表单重新提交由于页面刷新,并确保您的 Web 应用程序按预期运行。
以上是如何防止 Web 应用程序中意外重新提交表单?的详细内容。更多信息请关注PHP中文网其他相关文章!