我有一个用户发布关于他们自己的表格,不包括在内。我已经读到使用 PDO 时,撇号或 quatation 标记没有任何问题,但是我得到"
了\"
exc。你可以猜到。
还尝试阅读有关http://www.php.net/manual/en/pdo.prepared-statements.php的信息,但是网站的这一部分无法正常工作,因为我知道这就是我首先在这里问的原因。
我得到这样的用户输入:
if(isset($_POST["doit"])) {
$about = cleanInput($_POST["about"]);
$name = cleanInput($_POST["name"]);
if(!empty($about) && !empty($name)){
try{
$cu_query = "INSERT INTO `members` (`about`, `name`) VALUES (:about, :name)";
$cu_query_do = $db->prepare($cu_query);
$cu_query_do -> bindParam(':about', $about, PDO::PARAM_STR);
$cu_query_do -> bindParam(':name', $name, PDO::PARAM_STR);
$cu_query_do->execute() or die(print_r($cu_query_do->errorInfo(), true));
}
catch(PDOException $e) {
$log->logError($e." - ".basename(__FILE__));
}
}
}
我打印出这样的用户输入并从数据库中获取用户输入,如下所示:
//if isset get exc..
try {
$mq = "SELECT * FROM `members` WHERE `m_id` = :m_id";
$mq_check = $db->prepare($mq);
$mq_check->bindParam(':m_id', $m_id, PDO::PARAM_INT);
$mq_check->execute();
$ac = $db->query("SELECT FOUND_ROWS()")->fetchColumn();
}
catch(PDOException $e) {
$log->logError($e." - ".basename(__FILE__));
}
if(!empty($ac)) {
$_loader = true;
$fetch = $mq_check->fetch (PDO::FETCH_ASSOC);
$name = cleanInput($fetch['name']);
$about = cleanInput($fetch['about']);
}
echo $name;
谢谢你
回答:如果您已从 WHM 或 php.ini exc 禁用它,但如果问题仍然存在,请检查下面提到的代码 @Wayne Whitty 如果它似乎仍然处于活动状态,
比在头文件中包含此代码:
if (get_magic_quotes_gpc()) {
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
while (list($key, $val) = each($process)) {
foreach ($val as $k => $v) {
unset($process[$key][$k]);
if (is_array($v)) {
$process[$key][stripslashes($k)] = $v;
$process[] = &$process[$key][stripslashes($k)];
} else {
$process[$key][stripslashes($k)] = stripslashes($v);
}
}
}
unset($process);
}
这解决了我的问题,但如果问题仍然存在,那么您必须检查您的输入清理。