zoukankan      html  css  js  c++  java
  • 万能写入sql语句,并且防注入

    通过perpare()方法和检查字段防sql注入.
    $pdo=new PDO('mysql:host=localhost;dbname=scms', 'root' );
    $_POST=array('title'=>23,'content'=>'kmm');
    $keys= array_keys($_POST);
    /**
     * $filetarr数组用于规定只可以写入的字段
     */
    $filetarr=array('title','content');
    /**
     *$tableName表的名字
     */
    $tableName='article';
    $filtre=true;
    foreach ($keys as $value){
        if(in_array($value, $filetarr,true)){
            
        }else{
            //var_dump($value);
            $filtre=false;
            break;
        }
    }
    
    
    if($filtre){
        $fields=implode(',', $keys);
        $fieldszwh=':'.implode(',:', $keys);
        $sql="insert into {$tableName}({$fields}) values({$fieldszwh})";
        $pdostatement= $pdo->prepare($sql);
        $pdostatement->execute($_POST);
        var_dump($pdostatement->errorInfo());
    }else{
        echo '非法字段';
    }

    2.万能条件语句,同样通过字段限制防注入

    $pdo=new PDO('mysql:host=localhost;dbname=scms', 'root' );
    $_POST=array('title'=>23,'content'=>'km'); $keys= array_keys($_POST); /** * $filetarr数组用于规定只可以写入的字段 */ $filetarr=array('title','content'); /** *$tableName表名 */ $tableName='article'; $filtre=true; $where=''; /** *$wherearr数组用来根据字段指定查询条件,例如大于,等于,like */ $wherearr=array('title'=>'like','content'=>'>%'); foreach ($keys as $value){ if(in_array($value, $filetarr,true)){ if($wherearr[$value]==='between'){ if(count(explode(',', $_POST[$value]))===1){ break; } $where.='and '.$value.' between '.":{$value}left".' and '.":{$value}right "; $_POST[$value]=explode(',', $_POST[$value]); $_POST[$value.'left']=$_POST[$value][0]; $_POST[$value.'right']=$_POST[$value][1]; unset($_POST[$value]); }else{ $where.='and '.$value.' '.$wherearr[$value].' '.":{$value} "; } }else{ //var_dump($value); $filtre=false; break; } } /** * *如果用or连接条件语句,截取前面两个字符 */ $where=substr($where,3); if($filtre){ $fields=implode(',', $keys); $fieldszwh=':'.implode(',:', $keys); $sql="select * from {$tableName} where {$where}"; var_dump($sql); $pdostatement= $pdo->prepare($sql); $pdostatement->execute($_POST); $re= $pdostatement->fetchAll(); var_dump($pdostatement->errorInfo()); var_dump($_POST); var_dump($re); }else{ echo '非法字段'; }
  • 相关阅读:
    dojo grid 组件
    在xpage开发的时候出现xsp is not defined的错误
    关于Xpages中ssjs库相互引用的问题
    Xpages下实现输入智能提示(TypeAhead)功能
    Xpage中对定制控件在设计视图下外观的定制
    xpage中关于dojo版本的配置
    数据库查询优化方案
    查询表结构
    经典SQL语句集锦
    c#导出PDF
  • 原文地址:https://www.cnblogs.com/zuoxiaobing/p/3687824.html
Copyright © 2011-2022 走看看