qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請?jiān)L問 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數(shù)組用于規(guī)定只可以寫入的字段
          */
          $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數(shù)組用于規(guī)定只可以寫入的字段
          */
          $filetarr=array('title','content');
          $filtre=true;
          $where='';
          /**
          *$wherearr數(shù)組用來根據(jù)字段指定查詢條件,例如大于,等于,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連接條件語句,截取前面兩個(gè)字符
          */
          $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) 評(píng)論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫

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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 安丘市| 西畴县| 福安市| 灌南县| 深州市| 万年县| 北辰区| 吉首市| 浦北县| 饶阳县| 南和县| 玉山县| 岱山县| 于都县| 故城县| 中卫市| 五指山市| 阿克| 巴彦县| 台南县| 松原市| 社会| 张家川| 安化县| 左权县| 萨嘎县| 孝昌县| 江源县| 中方县| 白沙| 滨州市| 芜湖县| 连平县| 云林县| 绥中县| 威海市| 波密县| 安顺市| 关岭| 南木林县| 潜江市|