我无法使其工作我想确保如果用户在文本字段中添加HTML标记或PHP标记,则表单中的HTML标记或PHP标记不会添加到数据库中。 我现在的代码现在将strip_tags以及HTML和PHP标记添加到数据库中。
这是我的代码:
<?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 :(得分:3)
无法在字符串中调用函数,就像在双引号字符串上显示变量一样!
所以你的查询需要是这样的:
$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:如果你正在处理字符串中的变量,请使用{$ _POST [email]}而不是($ _POST [email])来保持你的varnames一致!