2012-10-30 110 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 –