Php 如果我有一个<;搜索输入>;不是<;帐户/密码输入>;,我需要使用mysql\u real\u escape\u字符串吗?
如果我的搜索输入不是帐户/密码输入,我是否需要使用mysql\u real\u escape\u string?Php 如果我有一个<;搜索输入>;不是<;帐户/密码输入>;,我需要使用mysql\u real\u escape\u字符串吗?,php,mysql,Php,Mysql,如果我的搜索输入不是帐户/密码输入,我是否需要使用mysql\u real\u escape\u string?可能是sql注入$sql只需选择限制行的位置 <input type="text" name="search"> include"set.php"; $search=$_POST["search"]; if(strlen($search)) >= $min_length){ $sql="select * from $tbl where subject or
可能是sql注入$sql只需选择限制行的位置
<input type="text" name="search">
include"set.php";
$search=$_POST["search"];
if(strlen($search)) >= $min_length){
$sql="select * from $tbl where subject or content like '%search%';";
..
}
您需要使用不转义的准备语句(始终是)。A.它应该是
$\u POST
而不是$\u POST
变量名在PHP中区分大小写
B.mysql\u**
折旧后改用
来自PHP文档
不鼓励使用此扩展名。相反,应该使用MySQLi或PDO_MySQL扩展。有关更多信息,请参见MySQL:选择API指南和相关常见问题解答。此功能的替代方案包括:
C.最好用$\u GET
设计一个搜索表单,这样可以轻松保存URL
范例
$search = filter_var($_GET["search"], FILTER_SANITIZE_STRING , FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH);
if($search && strlen($search) > 3)
{
$search = mysqli_real_escape_string($link, $search);
$sql = sprintf("SSELECT * FROM %s where subject or content like '%s';",$tbl,"%s" . $search ."%s");
}
D.您永远不会信任用户输入,并且始终验证和筛选您需要的
$\u POST
和$search
:
$search=mysql_real_escape_string($_POST["search"]);
及
是的,每次你都应该逃避用户的任何输入,不管是什么。你的输入被命名为
seach
,你得到的是$\u post['search']
,应该是$\u post
b保护用户输入始终是防止SQL注入攻击、跨站点请求伪造、破坏XML、,虽然它本身是不够的。你应该转义所有用户输入的数据。但是不能使用mysql\u real\u escape\u string
——它已被弃用。改用MySQLi
或PDO
!谢谢,但是在我添加mysql\u real\u escape\u字符串($\u POST[“search”])之后,我不知道为什么代码不起作用,无法搜索添加mysql\u real\u escape\u字符串后,$search
看起来像什么?我告诉过你,它是$search
而不是search
,请看我的答案,在添加mysql\u real\u escape\u escape\u字符串之前-“%。$search%”可以工作吗“$search.”%'无法工作。添加-“%”“$search.”后,“%”无法工作。但在我添加mysql\u real\u escape\u字符串($\u POST[“search”])后,我不知道为什么代码无法工作,无法搜索确定您可以尝试var\u dump($\u REQUEST['search'])
并告诉我是否有任何东西我编辑文章的原始代码。我尝试var\u dump($\u REQUEST['search'])得到的最小长度是2 NULL(无论我键入什么长度)为什么?如果删除mysql\u real\u escape\u string()代码可以工作,打印我想要的内容,但是var\u dump显示NULL tooCool很高兴我能帮上忙
$search=mysql_real_escape_string($_POST["search"]);
$sql="select * from $tbl where subject or content like '%".$search."%';";