Php 记录不存在';t显示为已保存
这就是我通过php表单对数据库输入的数据进行清理的方法Php 记录不存在';t显示为已保存,php,mysql,sanitize,Php,Mysql,Sanitize,这就是我通过php表单对数据库输入的数据进行清理的方法 function sanitize_input($data){ global $connect; $data = htmlspecialchars($data); $data = trim($data); $data = nl2br($data); $data = mysqli_real_escape_string($connect, $data); return $data; } 输
function sanitize_input($data){
global $connect;
$data = htmlspecialchars($data);
$data = trim($data);
$data = nl2br($data);
$data = mysqli_real_escape_string($connect, $data);
return $data;
}
输出
function sanitized_output($data){
$data = htmlspecialchars($data);
$data = strip_tags($data, '<p><a>') ;
$data = str_replace(array('\r\n', '\n\r'),'',$data);
return $data;
}
请指出问题。尝试从这两个函数中删除
htmlspecialchars()
函数,然后查看结果。像这样尝试使用下面的所有函数删除所有标记
$data = htmlspecialchars($data);
$data = strip_tags($data, '<p><a>') ;
$data = str_replace(array('\r\n', '\n\r'),'',$data);
一般来说,我喜欢在保存数据时完成所有工作。在输出数据时,您很少希望格式化数据,因为您只需保存一次数据,然后多次输出 使用
global
是另一个坏主意。将变量作为参数注入函数
让我们重写函数
function sanitize_input($data, $connect){
$data = strip_tags($data, '<p><a>');
$data = mysqli_real_escape_string($connect, nl2br(trim($data)));
return $data;
}
function sanitize\u输入($data,$connect){
$data=strip_标签($data,);
$data=mysqli_real_escape_string($connect,nl2br(trim($data));
返回$data;
}
这样,您就不需要
经过消毒的\u输出了
。没有必要使用htmlspecialchars
您在做双重工作。你应该逃避你正在做的事情。您的sanitize_输入方法是一种数据销毁方法。我不想使用它。@VMai正是这么做的,但什么是正确的方法来清理数据并保持段落和换行符完整。我按照你的建议做了,这就是发生的事情这是第1段\r\n\r\n这是第2段我完全按照你说的做了。现在输出为“这是第1段\r\n\r\n这是第2段”。您需要先修复输入的数据
$data = htmlspecialchars($data);
$data = strip_tags($data, '<p><a>') ;
$data = str_replace(array('\r\n', '\n\r'),'',$data);
function sanitized_output($data){
$data = nl2br($data);
return $data;
}
function sanitize_input($data, $connect){
$data = strip_tags($data, '<p><a>');
$data = mysqli_real_escape_string($connect, nl2br(trim($data)));
return $data;
}