Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我是否需要mysqli->;过滤器url后的真实\u转义\u字符串?_Php_Session_Get_Mysqli - Fatal编程技术网

Php 我是否需要mysqli->;过滤器url后的真实\u转义\u字符串?

Php 我是否需要mysqli->;过滤器url后的真实\u转义\u字符串?,php,session,get,mysqli,Php,Session,Get,Mysqli,我问这个问题是因为我仍然不确定filter$\u GET变量是否足以阻止mysql注入,所以首先我有一个filter函数 function filter_url($url) { if (is_array($url)) { foreach ($url as $key => $value) { // recurssion $url[$key] = filter_url($value); } return $url; } e

我问这个问题是因为我仍然不确定filter$\u GET变量是否足以阻止mysql注入,所以首先我有一个filter函数

function filter_url($url)
{
  if (is_array($url))
  {
    foreach ($url as $key => $value)
    {
      // recurssion
      $url[$key] = filter_url($value);
    }
    return $url;
  }
  else
  {
    // remove everything except for a-ZA-Z0-9_.-&=
    $url = preg_replace('/[^a-zA-Z0-9_\.\-&=]/', '', $url);
    return $url;
  }
}
我有
$\u GET=filter\u url($\u GET)每次我打电话之前

$filter_case =isset($_GET['product_ID'])?"and product_ID={$_GET['product_ID']}":"";
我是否需要执行
$mysqli->real\u escape\u字符串($\u GET['product\u ID'])
?如果我仍然要暗示,什么样的sql注入将超越我的查询方法


除此之外,我想做的
$mysqli->real\u escape\u string($\u SESSION['member\u ID'])
很重要吗?有人可以操纵他的
$\u SESSION
变量吗?

这是一个根本错误的问题

在SQL查询中添加字符串文字时,您需要
$mysqli->real\u escape\u string
在这种情况下,您需要此函数,而不管字符串的来源或验证是什么。在任何其他情况下(即字符串不在查询中或不作为SQL字符串),此函数将完全无用


这就是为什么必须使用准备好的语句,无论是本机语句还是模拟语句。

我同意:准备好的语句是针对SQL注入的解决方案,在所有情况下都有效。现在我看到准备好的语句具有自动转义功能,我在转义时错过了它,因为它没有向下滚动到手册末尾。将我的代码更改为准备好的语句!:)