2012-10-30 140 views
-3

我無法正常工作我想確保如果用戶在表單中的文本字段中添加了HTML標記或PHP標記,但它們不會被添加到數據庫中。 我現在的代碼將strip_tags與HTML和PHP標籤一起添加到數據庫中。Strip_tags PHP MySQL不能正常工作

這裏是我的代碼:

<?php 
     //Check for Valid Email 
function valid_email($email) { 
    return filter_var($email, FILTER_VALIDATE_EMAIL); 
} 


    //Add people Information to Database 
function addToDB ($sql, $con) { 
require 'db.php'; 

    $sql= ("INSERT INTO people (name,email) VALUES(
      'strip_tags($_POST[name])', 
      '($_POST[email])')"); 

if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 


mysql_close($con); 
} 

    //Add vehicle Information to Database 
function addToDB1 ($sql, $con) { 
require 'db.php'; 

$sql="INSERT INTO vehicle (year, make, model, color) 
VALUES 
('$_POST[year]','$_POST[make]', '$_POST[model]', '$_POST[color]')"; 
if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 


mysql_close($con); 
} 

?> 
+0

我補充一點,我只是把它的功能添加到第一個條目我還沒有得到解決,以將其添加到休息.... – Yamaha32088

+1

你的代碼是敞開的SQL注入攻擊 – 2012-10-30 02:44:24

+0

我一直搜索谷歌,我只是發現一篇文章說關於SQL注入相同的東西,它說我應該使用mysqli準備的語句,所以我可能會看看 – Yamaha32088

回答

3

這是不可能的,你的顯示在雙引號中的字符串變量做字符串中調用函數!

所以,你的查詢需要是類似的東西:

$sql= 'INSERT INTO people (name,email) VALUES(\''.strip_tags($_POST[name]).'\', \''.$_POST[email].'\')'; 

順便說一下,你真的應該考慮逃出輸入數據後,從/ GET變量來了!例如:

$sql= 'INSERT INTO people (name,email) VALUES(\''.mysql_real_escape_string(strip_tags($_POST[name])).'\', \''.$_POST[email].'\')'; 

但是,最好的選擇是使用預處理語句來防止sql注入!


Eidt:如果您正在使用的變量字符串中使用工作{$ _ POST [郵件]},而不是($ _ POST [郵件]),以十個分量的varnames一致!

+0

任何人讀這個,mysql_real_escape_string已被棄用,替代是mysqli_real_escape_string –