我遇到这个问题,当我刷新时,浏览器(Chrome)会弹出一个通知框,就像这样。
我的登录代码在这里:
<form class="uk-form">
<fieldset data-uk-margin>
<legend>Sign up here:</legend>
<input type="text" placeholder="username" required>
<input type="password" placeholder="password" required>
<a href="" class="uk-form-password-toggle" data-uk-form-password></a>
<select>
<option>PYP</option>
<option>MYP</option>
<option>DP</option>
<option>Adults/Teachers</option>
</select>
<div><input type="checkbox" name="remember" id="remember" <?php if(isset($_COOKIE["member_login"])) { ?> checked <?php } ?> />
<label for="remember-me">Remember me</label>
</div>
<button type="confirm" class="uk-button uk-button-primary">Sign Up</button>
</fieldset>
</form>
结果如下:
答案 0 :(得分:1)
之所以发生这种情况,是因为您之前已POST
转到该页面,这意味着您很可能来自某个表单。如果刷新页面,则意味着POST数据将再次发布到该页面,这可能不是您想要做的。
我的建议是,一旦你完成了你需要对表单做的事情,就是将它重定向到另一个页面(理论上可以回到表单页面)并重新填充数据如果你需要保留它。
答案 1 :(得分:0)
处理完先前请求的$_POST
数据后,您可以重定向用户,并通过执行以下操作清除发布数据:
header('Location: '.$url);
exit;
将$url
设置为您要将其发送到的网址。如果你这样做,有两个非常重要的事情。
巧合的是,这就是为什么你会看到一些不包含?>
结束标记的PHP文件。如果文件只包含PHP,则结束标记是可选的,如果在调用它们之前包含结束标记之后,即使是结束标记之后的空格,也会导致重定向。因此,通过省略结束标记,可以没有输出。
Conciser this:
<?php
...code..
?>
\n
\n
是新行。如果在执行header
或甚至下载之前包含此内容,则可能会产生不良影响。我个人从不混用PHP和HTML,因此我从不使用结束标记。
同样,这可以防止重定向工作
\n
<?php
... code ...
exit
。执行重定向后,PHP将继续执行当前脚本,这可能不是您想要的,并且可能会产生不可预测的结果。答案 2 :(得分:0)
这是因为你来自另一个发送POST的表单。刷新时,它会在再次发布之前确认您已发布数据。 我建议你重定向到另一个页面或同一页面。在php中阅读header以重定向