我有一个用户发布自己的表格。我已经阅读过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__));
}
}
}
我打印出这样的用户输入,然后从db中获取用户输入:
//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中禁用它,但如果问题仍然存在,请查看下面提到的代码@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);
}
这解决了我的问题,但如果问题仍然存在,那么你必须检查你的输入清理。
答案 0 :(得分:1)
您的服务器上启用了魔术引号,或者您的函数cleanInput()正在调用函数addslashes()。
运行此命令检查是否启用了魔术引号:
if(get_magic_quotes_gpc()){
echo 'Magic Quotes enabled... sigh!';
}
PHP manual向您展示如何处理魔术引号:
答案 1 :(得分:0)
问题肯定是由于我的cleanInput方法,我认为它是在预先转义帖子值。