2010-08-06 70 views
2

如果用户输入不正确的密码,那么该用户不需要重新输入用户名?我应该为此使用会话吗?PHP:在字段中保留用户名

+0

如果用户名本身是错误的呢? – 2010-08-06 11:19:03

+0

@Srinivas Reddy Thatiparthy:保持用户名在现场是一个广泛使用,我认为。如果用户名错误,用户将编辑它。 – 2010-08-06 11:20:33

+0

@felix kling:现在在gmail中看到了..谢谢! – 2010-08-06 11:36:46

回答

2

值只是传递到字段:

<input name="uid" value="<?php echo (isset($_POST['uid'])) ? $_POST['uid'] : ''?>" /> 

永远不要忘记先过滤用户输入! (不喜欢我的例子,但它应该给你正确的想法)。

但请注意错误信息。不要说密码错误。说的密码或用户名是错误的。你不想让任何人知道某个用户名在系统中注册(至少不是通过尝试登录)。

+0

谢谢你,好主意。你的意思是“先清理用户输入”? – Karem 2010-08-06 11:59:07

+0

为什么在编写if语句时,为什么使用三元运算符?我曾经使用它们加载这种类型的东西,但它有一天点击我实际上编写更多的代码。 – Luke 2010-08-06 11:59:29

+2

@Luke:在这种情况下,区别是6个字符......我可以忍受这种情况;)当我混合使用HTML和PHP时,我只是不喜欢以这种方式使用控制结构。使用三元运算符,感觉更像是一个声明。 @Karem:它不应该包含例如脚本代码或破碎的HTML(或至少逃脱这个东西,所以它不被浏览器解释)。用户名应该是安全的,可以再次打印。 – 2010-08-06 12:17:23

0

是,如果你不张贴到相同的页面,而是一个PHP HANDELING脚本,你需要使用一个会话变量像$_SESSION['sticky']['username'] = $_POST['username'],然后你回到

<input type="text" value="<?php if isset($_SESSION['sticky']['username']) echo $_SESSION['sticky']['username'] ?>" name="username" /> 
+0

-1否验证 – 2010-08-06 12:19:11

+0

你是什么意思没有验证?我没有在任何地方存储数据,原始海报没有要求验证,只有如何获得用户名回来。你有任何验证sujestions,我应该已经执行? – Luke 2010-08-06 12:44:08

+0

哦,对不起,没有' t notice $ _SESSION。请你可以编辑,这样我可以收回我的投票吗? – 2010-08-07 09:37:44

0

在页面上确保$ _ POST ['用户名']数据首先是无害的。

<input name="username" type="text" value="<?php echo $_POST['username'] ?>" /> 
+0

类型会是文本,文本框是 Luke 2010-08-06 11:21:18

0

试试这个

使用会话变量

$_SESSION['username'] = $_POST['username']; 


<input type="text" name="username" value="<?php echo $_SESSION['username']; ?>" /> 
+0

这个窝如果未设置$ _SESSION ['用户名'],uld会生成一个错误,对于初次访问站点/会话超时 – Luke 2010-08-06 11:35:51

0

只是打印:

<input name="username" type="text" value="<?php echo htmlspecialchars($_POST['username']) ?>">