Php 如果我有一个<;搜索输入>;不是<;帐户/密码输入>;,我需要使用mysql\u real\u escape\u字符串吗?

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

如果我的搜索输入不是帐户/密码输入,我是否需要使用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 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."%';";