【问题标题】:How do I properly encode a form in php如何在 php 中正确编码表单
【发布时间】:2011-04-12 15:15:34
【问题描述】:

my site 上,用户可以通过表单向数据库添加内容。我希望用户能够在表单中输入任何内容,并将其全部添加到数据库中。目前我遇到了一些字符的问题,即斜杠、&、?等等

将所有字符正确添加到数据库的最佳方法是什么?

另外,在显示它们时是否必须对其进行解码才能正常工作?如果是这样,我该怎么做?

【问题讨论】:

  • 不需要任何编码。只要对数据运行正确的转义方法,就可以将任何字符插入数据库。对于mysql_* 系列函数,即mysql_real_escape_string()。显示您用于输入和输出数据的代码,并准确描述出现问题的地方。
  • 您使用的是什么数据库?您在 DDL 中创建的数据库/表使用什么字符集?

标签: php forms character-encoding decode encode


【解决方案1】:

保存时,使用mysql_real_escape_string(或PDO)防止SQL注入攻击。这样就可以在不破坏 SQL 查询的情况下编写引号和反斜杠。

<?php
$text = mysql_real_escape_string($_POST['text']);
mysql_query('INSERT INTO table(text) VALUES("'.$text.'")');
?>

将数据打印到浏览器时(使用 echo),首先通过htmlspecialchars 运行它以禁用 HTML 并解决您当前的问题:

<?php
// ...fetch $text from db here...
echo htmlspecialchars($text);
?>

【讨论】:

    【解决方案2】:

    htmlentities() 可以帮你编码和decode html 字符:

    您还可以使用nl2br() 来保留 textarea 元素的换行符:

    您还应该使用PDO 来满足您的数据库需求,因为它比转义数据的旧方法mysql_real_escape_string() 更安全

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 2012-01-15
      • 2018-09-15
      相关资源
      最近更新 更多