gpt4 book ai didi

php - 我不明白 PHP sleep() 行为

转载 作者:可可西里 更新时间:2023-10-31 23:06:42 34 4
gpt4 key购买 nike

我有这个表格:

<form method="post" action="secret.php">
<label for="pw">Password: </label><input type="password" name="pw" id="pw" />
</form>

这是 secret.php:

<?php 
if(isset($_POST["pw"])) {
if($_POST["pw"] == "hello") {
echo("<strong>Good pw.</strong><br />");
} else {
echo("<strong>Bad pw.</strong><br />");
echo("<a href=\"form.php\">Back</a>");
sleep(5);
}
} else {
header("Location: /tut/first/form.php");
}
?>

如果密码错误,它会在显示 Bad pw 之前休眠。当我提交表单时,它在表单页面 休眠 5 秒,然后更改页面并显示 Bad pw。为什么?

最佳答案

发生的事情是您导致 PHP 脚本休眠。脚本必须在将结果发送回客户端(浏览器)之前完成。*因此,您导致脚本在响应客户端它不是一个好的密码之前花费了 5 秒的时间。

既然你不想在这里避免蛮力情况,我会建议这样的事情:

<?php 
if(isset($_POST["pw"])) {
if($_POST["pw"] == "hello") {
echo("<strong>Good pw.</strong><br />");
} else {
echo("<strong>Bad pw.</strong><br />");
echo("<script type=\"text/javascript\">");
echo ("setTimeout(function() {");
echo ("window.location = form.php;"); //might need a more complete URL here
echo ("}, 5)"); //sleep for 5 seconds before redirecting
echo("</script>");
sleep(5);
}
} else {
header("Location: /tut/first/form.php");
}
?>

*输出实际上是按照 PHP 脚本中的写法发回的,但是有了缓冲,除了标题和非常大的页面外,您看不到这有什么不同。

关于php - 我不明白 PHP sleep() 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16863983/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com