PHP Cookie输入两个空格

时间:2013-04-02 14:29:43

标签: php forms validation cookies

我有一个注册表单,我正在尝试创建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, '/');
  }

1 个答案:

答案 0 :(得分:0)

  

我有一个注册表单,我正在尝试创建cookie,以便在用户尝试提交带有验证错误的表单时保留用户数据。

为什么要为此使用Cookie?

数据发送到的脚本已经包含了所有必要的信息 - 所以在不使用cookie的情况下再次直接从那里输出它是非常容易的。

  

当加载表单时,cookie似乎在表单字段中输入两个空格,如果用户提交带有验证错误的表单,则会保留用户信息,但在其详细信息前插入两个空格。造成这种情况的原因是什么?

通过让输出值的PHP代码跨越<?php标记之前的多行空格而插入到HTML中的空白区域。

顺便说一句,您正在通过不正确地将正确放入上下文HTML的数据打开您的页面以应对可能的XSS攻击。