我有一个注册表单,我正在尝试创建cookie,以便在用户尝试提交带有验证错误的表单时保留用户数据。 Cookie正在执行此操作,但它也会导致其他问题。
当加载表单时,cookie似乎在表单字段中输入两个空格,如果用户提交带有验证错误的表单,则会保留用户信息,但在其详细信息前插入两个空格。造成这种情况的原因是什么?
HTML表单:
<p class="error" id="jsFirstError">
<?php
if(isset($_COOKIE['firstNameErr'])) {
echo $_COOKIE["firstNameErr"];
}
?>
</p>
First name:<input type="text" name="fname" placeholder="First Name" id="firstNameField" autofocus="autofocus" value="
<?php
if(isset($_COOKIE['firstNameEntry'])) {
echo $_COOKIE['firstNameEntry'];
}
?>"><br /><br />
验证和cookie:
if(empty($fname)) {
$error = true;
setcookie("firstNameErr", "Please enter your First Name.", time()+1, '/');
} else if(!ctype_alpha($fname)) {
$error = true;
setcookie("firstNameErr", "Only letters are accepted, please re-enter your First Name.", time()+1, '/');
} else {
setcookie("firstNameEntry", $fname, time()+1, '/');
}
答案 0 :(得分:0)
我有一个注册表单,我正在尝试创建cookie,以便在用户尝试提交带有验证错误的表单时保留用户数据。
为什么要为此使用Cookie?
数据发送到的脚本已经包含了所有必要的信息 - 所以在不使用cookie的情况下再次直接从那里输出它是非常容易的。
当加载表单时,cookie似乎在表单字段中输入两个空格,如果用户提交带有验证错误的表单,则会保留用户信息,但在其详细信息前插入两个空格。造成这种情况的原因是什么?
通过让输出值的PHP代码跨越<?php
标记之前的多行空格而插入到HTML中的空白区域。
顺便说一句,您正在通过不正确地将正确放入上下文HTML的数据打开您的页面以应对可能的XSS攻击。