qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          萬能寫入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');
          $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 article({$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');
          $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 article 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 '非法字段';
          }

          posted on 2014-05-04 13:01 順其自然EVO 閱讀(284) 評論(0)  編輯  收藏 所屬分類: 數據庫

          <2014年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 津南区| 仁寿县| 呼图壁县| 平武县| 安福县| 巴彦县| 额尔古纳市| 乐亭县| 巢湖市| 通渭县| 北票市| 泽州县| 栖霞市| 祥云县| 抚松县| 湖口县| 巴彦淖尔市| 林口县| 方正县| 宕昌县| 衡山县| 枣阳市| 安塞县| 孟州市| 阜新市| 江达县| 青川县| 阳高县| 楚雄市| 鹤岗市| 沾益县| 吕梁市| 中宁县| 交口县| 松阳县| 永州市| 班戈县| 班玛县| 武川县| 铁岭市| 柏乡县|