国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP簡單實現防止SQL注入的方法

2024-05-05 00:02:40
字體:
來源:轉載
供稿:網友

本文實例講述了PHP簡單實現防止SQL注入的方法。分享給大家供大家參考,具體如下:

方法一:execute代入參數

<?phpif(count($_POST)!= 0) {  $host = 'aaa';  $database = 'bbb';  $username = 'ccc';  $password = '***';  $num = 0;  $pdo = new PDO("mysql:host=$host;dbname=$database", $username, $password);//創建一個pdo對象  foreach ($_POST as $var_Key => $var_Value) {    //獲取POST數組最大值    $num = $num + 1;  }  //下標為i的數組存儲的是商品id, 下標為j數組的存儲的是此商品的庫存  for($i=0;$i<$num;$i=$i+2)  {    //庫存下標    $j = $i+1;    //判斷傳遞過來的數據合法性    if(is_numeric(trim($_POST[$i])) && is_numeric(trim($_POST[$j]))){      //禁用prepared statements的仿真效果      $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);      //查詢數據庫中是否存在該ID的商品      //當調用 prepare() 時,查詢語句已經發送給了數據庫服務器,此時只有占位符 ? 發送過去,沒有用戶提交的數據      $stmt = $pdo->prepare("select good_id from delphi_test_content WHERE good_id = ?");      //當調用到 execute()時,用戶提交過來的值才會傳送給數據庫,他們是分開傳送的,兩者獨立的,SQL攻擊者沒有一點機會。      $stmt->execute(array($_POST[$i]));      //返回查詢結果      $count = $stmt->rowCount();      //如果本地數據庫存在該商品ID和庫存記錄,就更新該商品的庫存      if($count != 0)      {        $stmt = $pdo->prepare("update delphi_test_content set content = ? WHERE good_id = ?");        $stmt->execute(array($_POST[$j], $_POST[$i]));      }      //如果本地數據庫沒有該商品ID和庫存記錄,就新增該條記錄      if($count == 0)      {        $stmt = $pdo->prepare("insert into delphi_test_content (good_id,content) values (?,?)");        $stmt->execute(array($_POST[$i], $_POST[$j]));      }    }  }  $pdo = null;  //關閉連接}?>

方法二:bindParam綁定參數

<?phpif(count($_POST)!= 0) {  $host = 'aaa';  $database = 'bbb';  $username = 'ccc';  $password = '***';  $num = 0;  $pdo = new PDO("mysql:host=$host;dbname=$database", $username, $password);//創建一個pdo對象  foreach ($_POST as $var_Key => $var_Value) {    //獲取POST數組最大值    $num = $num + 1;  }  //下標為i的數組存儲的是商品id, 下標為j數組的存儲的是此商品的庫存  for($i=0;$i<$num;$i=$i+2)  {    //庫存下標    $j = $i+1;    //判斷傳遞過來的數據合法性(此數據為商品編號以及庫存,嚴格來說字符串全是由數字組成的)    if(is_numeric(trim($_POST[$i])) && is_numeric(trim($_POST[$j]))){      //查詢數據庫中是否存在該ID的商品      $stmt = $pdo->prepare("select good_id from delphi_test_content WHERE good_id = ?");      $stmt->execute(array($_POST[$i]));      $stmt->bindParam(1,$_POST[$i]);      $stmt->execute();      //返回查詢結果      $count = $stmt->rowCount();      //如果本地數據庫存在該商品ID和庫存記錄,就更新該商品的庫存      if($count != 0)      {        $stmt = $pdo->prepare("update delphi_test_content set content = ? WHERE good_id = ?");        $stmt->execute(array($_POST[$j], $_POST[$i]));        $stmt->bindParam(1,$_POST[$j]);        $stmt->bindParam(2,$_POST[$i]);        $stmt->execute();      }      //如果本地數據庫沒有該商品ID和庫存記錄,就新增該條記錄      if($count == 0)      {        $stmt = $pdo->prepare("insert into delphi_test_content (good_id,content) values (?,?)");        $stmt->bindParam(1,$_POST[$i]);        $stmt->bindParam(2,$_POST[$j]);        $stmt->execute();      }    }  }  $pdo = null;  //關閉連接}?>

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 巧家县| 子长县| 惠来县| 游戏| 呼伦贝尔市| 仁怀市| 嘉义市| 河南省| 汶上县| 安溪县| 嘉兴市| 山阴县| 阿勒泰市| 大兴区| 陆川县| 开鲁县| 广元市| 通化市| 晴隆县| 阳高县| 濮阳市| 甘洛县| 白山市| 体育| 清徐县| 涞水县| 武义县| 曲阜市| 衡阳市| 云安县| 鲁山县| 诏安县| 手游| 南皮县| 海口市| 榆树市| 梧州市| 冀州市| 达拉特旗| 聂荣县| 包头市|