0

我有一个用户发布关于他们自己的表格,不包括在内。我已经读到使用 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);
}

这解决了我的问题,但如果问题仍然存在,那么您必须检查您的输入清理。

4

2 回答 2

1

您的服务器上启用了魔术引号,或者您的函数 cleanInput() 正在调用函数 addlashes()。

通过运行以下命令检查是否启用了魔术引号:

if(get_magic_quotes_gpc()){
    echo 'Magic Quotes enabled... sigh!';
}

PHP 手册向您展示了如何处理魔术引号:

于 2012-09-14T14:29:43.387 回答
0

问题肯定是由于我认为您的 cleanInput 方法预先转义了 post 值。

于 2012-09-14T14:29:18.560 回答