【发布时间】:2017-11-05 17:50:12
【问题描述】:
我有个小问题,
例如,我上次使用 MySQL,现在使用 PDO,这就是我的问题:
当用户想在我的网站上使用 MySQL 发布消息时,如果他尝试发布类似 <div class="HAHAHA"> 的内容,它不起作用或会显示:From USER, Message => <div class="HAHAHA">
但是现在有了 PDO,当用户发布像 HTML 一样的内容时,它会在我的网站上运行。 (我不知道这是否有意义)。
我的一段代码:
<?php $contenu = nl2br($_POST['contenu']);
$sql_add_pub = $pdo->prepare("INSERT INTO publications (steamid,profile,contenu,ajout,ip) VALUES ('".$user['steamid']."','".$user['steamid']."', :contenu , '".time()."', '".$_SERVER['REMOTE_ADDR']."') ");
$sql_add_pub->execute(Array("contenu" => $contenu)); ?>
所以我的问题是,我怎样才能用 PDO 解决这个问题?
提前致谢。
【问题讨论】:
-
警告:使用 PDO 时,您应该使用带有占位符值的 prepared statements,并将任何用户数据作为单独的参数提供。在此代码中,您可能有严重的SQL injection bugs。永远不要使用字符串插值或连接,而是使用 prepared statements 并且永远不要将
$_POST或$_GET数据直接放在查询中。有关此问题和其他问题的指导,请参阅 PHP The Right Way。