【问题标题】:PHP Cookie entering two blank spacesPHP Cookie 输入两个空格
【发布时间】:2013-04-02 14:29:43
【问题描述】:

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

【问题讨论】:

  • 尝试省略您的 p 元素和

标签: php forms validation cookies


【解决方案1】:

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

您为什么要为此使用 cookie?

数据发送到的脚本已经包含所有必要的信息——因此直接从那里再次输出它非常容易,无需使用 cookie。

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

通过让输出值的 PHP 代码跨越多行并在 &lt;?php 标记之前带有空格,您插入到 HTML 中的空白。

顺便说一句,你打开你的页面可能会受到 XSS 攻击,因为你没有正确地转义你放入上下文 HTML 中的数据。

【讨论】:

  • 你将如何输出它?
  • " 之间没有空格来限制 value 属性的内容和您要放入其中的实际数据,并且有适当的 HTML 转义......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
  • 2011-07-27
  • 2015-10-08
  • 1970-01-01
  • 1970-01-01
  • 2017-06-22
  • 1970-01-01
相关资源
最近更新 更多