【问题标题】:Escaping apostrophies and other characters in text area在 textarea 中转义撇号和其他字符
【发布时间】:2015-05-29 19:05:07
【问题描述】:

所以我发现这个表单我刚刚崩溃,甚至没有提交内容,直到有人在此文本区域键入撇号时第一个撇号。如何转义内容以便将其放入我的 MySQL 表中?谢谢!

<form action=\"./functions/notes.php\" method='post'>
<input type='hidden' id='ID' name='ID' value='{$row['ID']}' />

<textarea placeholder=\"Add more notes here...\" name=\"notes\"></textarea><br />
<input type='submit' name='formNotes' id='formNotes' value='Add to Notes' />
</form>

然后在notes.php文件中

$notesID = $_POST['ID'];
$note = $_POST['notes'];
$date= date('Y-m-d');
$result = mysql_query("UPDATE Project_Submissions SET Notes=CONCAT(Notes,'<br />".$date." ".$note."') WHERE ID ='".$notesID."'");

【问题讨论】:

  • stop using mysql_* functions。它们不再被维护并且是officially deprecated。改为了解 prepared statements,并考虑使用 PDO,it's not as hard as you think。如果您使用准备好的语句,则不必担心转义 anything
  • @JayBlanchard 我使用 mysqli 而不是 mysql。你认为这有问题吗?我不知道可以与 mysqli_fetch_assoc 相媲美的函数来返回我需要的一切。我读到 mysqli 是改进版。
  • @JoseManuelAbarcaRodríguez 实际上,urlencode 是错误的函数/方法。正确的答案是绑定您的查询,好的/坏的答案是逃避您的查询。使用 urlencode 需要您在提取值时进行 urldecode,否则您最终会在文本中得到一堆 %20 值(和其他 url 实体)。至少,将其传递给 htmlentities。
  • @Zapp mysqli 与 PDO 相比很好。选择哪个只是个人喜好。关键是绑定您的查询,而不是使用连接和转义来构建查询。哦,对了,mysqli是改进的mysql。 Mysql 将在以后的版本中被移除。

标签: php html forms escaping textarea


【解决方案1】:

撇号对 SQL 具有特殊意义,因此为了将它们放入需要“转义”的数据中,PHP 有一个快速功能,它还可以进行一些安全检查以帮助防止您的数据库被黑客入侵。

$note = mysql_real_escape_string($note);

DITTO 从 mysql 转移到 mysqlI

与 MySQLI 类似,您只需提供连接变量....

$note = mysqli_real_escape_string($link, $note);

【讨论】:

  • 谢谢!这很有帮助,并向我展示了如何进行更改
猜你喜欢
  • 2011-01-25
  • 2011-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-26
  • 2018-05-13
  • 2018-09-21
  • 1970-01-01
相关资源
最近更新 更多