Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当密码不正确时,在用户名字段中保留用户名_Php_Authentication_Get - Fatal编程技术网

Php 当密码不正确时,在用户名字段中保留用户名

Php 当密码不正确时,在用户名字段中保留用户名,php,authentication,get,Php,Authentication,Get,当密码输入错误时,有多少登录的网站在用户名字段中保留用户名。 表单的操作(在index.php上)是另一个php文件,如果密码不正确,它将使用Header()返回索引,并使用GET将错误传递给它。我可以使用GET将用户名传递回表单,但这看起来很混乱,我注意到,像SMF论坛这样的网站,用户名保留在用户名字段中,没有凌乱的URL。我通常发现,只有在我收集了正确的输入后,才能在显示表单的同一脚本中处理表单数据,并将其重定向到其他地方。您可以使用会话 例如,当一篇文章不正确时(这将出现在处理你的文章请求

当密码输入错误时,有多少登录的网站在用户名字段中保留用户名。
表单的操作(在index.php上)是另一个php文件,如果密码不正确,它将使用Header()返回索引,并使用GET将错误传递给它。我可以使用GET将用户名传递回表单,但这看起来很混乱,我注意到,像SMF论坛这样的网站,用户名保留在用户名字段中,没有凌乱的URL。

我通常发现,只有在我收集了正确的输入后,才能在显示表单的同一脚本中处理表单数据,并将其重定向到其他地方。

您可以使用会话

例如,当一篇文章不正确时(这将出现在处理你的文章请求的文件中):

$\u SESSION['username']=$\u POST['username']

然后在您的登录页面上:

通过GET方法

header("Location: loginpage.php?username=".$_REQUEST['username']);
在表单页面中,您可以通过以下方式访问它:

<input type="text" name="username" value=<?php echo $_GET['username']?>
简单

<form action="loginpage.php" method="post">
  <fieldset>
    ...
    <input type="text" name="username" value="<?php if (isset($_POST['username'])) echo $_POST['username']; ?>" />
    ...
  </fieldset>
</form>

...

非常糟糕,因为你会受到XSS和SQL注入攻击。引用问题:“我可以使用GET将用户名传递回表单,但这看起来很混乱”你会如何接受SQL注入,没有任何内容提交到数据库?嘿,Martin!你是说Sql注入吗??真的吗?好的!约翰纳森,如果你不想得到正确的方法。你可以从会话中完成,或者通过Ajax调用登录脚本,或者借助隐藏变量,你甚至不需要转到其他页面而不是索引;?这似乎很明显,而且会让事情变得更简单。你能给出一个SMF论坛的示例代码/URL吗?我看到他们发布到同一个index.php页面,该页面可以随时访问表单值。但是如何将用户名从login.php获取到post变量中呢?@Jonathan这就是为什么我们将表单放在login.phpAs中的原因,这是一条一般规则,我不建议出于这种目的使用会话:当用户打开多个选项卡时,您的站点就会中断。会话会跨选项卡/窗口进行。我确实同意,如果表单发布到自身,处理表单会更容易,但情况并非总是如此。如果没有会话,您将如何在验证失败的情况下跨不同页面传输用户数据?(当然,在数据显示后,您必须小心在请求之间清空会话数据等)在当前上下文中,我想不出任何问题。我警告不要使用会话作为表单的一般替代(在某些领域,如预订网站,这是一种非常流行的技术)。