Php Strip_标签不工作
我很难做到这一点,我想确保,如果用户在文本字段中添加HTML标记或PHP标记,它们不会被添加到数据库中。 我现在的代码将strip_标记以及HTML和PHP标记添加到数据库中 这是我的密码:Php Strip_标签不工作,php,html,mysql,Php,Html,Mysql,我很难做到这一点,我想确保,如果用户在文本字段中添加HTML标记或PHP标记,它们不会被添加到数据库中。 我现在的代码将strip_标记以及HTML和PHP标记添加到数据库中 这是我的密码: <?php //Check for Valid Email function valid_email($email) { return filter_var($email, FILTER_VALIDATE_EMAIL); } //Add people Infor
<?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);
}
?>
不能像在双引号字符串上显示变量那样调用字符串中的函数
因此,您的查询需要如下所示:
$sql= 'INSERT INTO people (name,email) VALUES(\''.strip_tags($_POST[name]).'\', \''.$_POST[email].'\')';
顺便说一下,你真的应该考虑逃避来自POST/get变量的输入数据!比如:
$sql= 'INSERT INTO people (name,email) VALUES(\''.mysql_real_escape_string(strip_tags($_POST[name])).'\', \''.$_POST[email].'\')';
然而,最好的选择是使用准备好的语句来防止sql注入
Eidt:如果您使用字符串中的变量,请使用{$\u POST[email]}而不是$\u POST[email]来保持变量名的一致性 我要补充的是,我只在第一个条目中添加了这个函数,我还没来得及将它添加到其他条目中……你的代码对sql注入攻击非常开放。我一直在搜索google,我刚刚发现一篇帖子说关于sql注入的事情也是一样,它说我应该使用mysqli编写的语句,这样我可能会调查你无法从字符串内部调用函数。设置为“.strip_tags$\u POST[name]”,并在将值附加到查询之前对其进行转义。任何阅读此内容的人都不赞成使用mysql\u real\u escape\u字符串,另一种选择是mysqli\u real\u escape\u字符串