我知道之前曾解释过,但每当我使用以下行:
php if (isset($_POST['name'])) echo $_POST['name'];
它在文本框中显示。我有PHP文件设置来验证是否提交了firstname和lastname。但是我想让它保留输入的任何一个盒子,例如:
名字:约翰
姓氏:
以便在表单显示时
你没有输入最后一个名字
名字:约翰
姓氏:
仍然记住第一个名字
答案 0 :(得分:0)
请注意,如果你只是做简单的echo $_POST['firstname']
,那么人们可以通过输入做一些讨厌的事情(比如发布javascript并使用javascript alert()
函数。
所以,你应该像这样封装输入
echo htmlspecialchars(stripslashes($_POST['firstname']))
在一个输入字段上的完整示例html + PHP:
<input type="text" name="firstname" value=" <?php echo htmlspecialchars(stripslashes($_POST['firstname'])); ?>" />
如果$_POST
为空,则代码不会输出任何内容。如果用户发布了某些内容,则该代码将显示安全。
答案 1 :(得分:-1)
当你收集$ _POST数据时,也将它添加到$ _SESSION数组中(当然,首先需要调用session_start(),当然,在处理脚本的顶部)。
然后当他们返回错误的页面时,你可以在你的例子中使用$ _SESSION而不是$ _POST执行相同的isset()调用。
示例处理程序代码:
<?php
session_start();
if ($_POST) {
$_SESSION['firstname'] =
$_POST['firstname'] = filter_input(INPUT_POST, "firstname", FILTER_SANITIZE_STRING);
//etc.
}