Как устранить сообщения об ошибках, генерируемые функцией GetSQLValueString


Я использую функцию GetSQLValueString dreamweaver, чтобы сделать проверку некоторых переменных, и все работает хорошо, но, делая тест, с помощью программы Acunetix Web Vulnerability Scanner 9.5 наткнулся на сообщение об ошибке, которую он, обвинив возможного нарушения безопасности. Url-адрес, сгенерированный программой, и сообщение это:

Http://meusite.com.br/cidades.ajax.php?ajax=true&search=&uf[]=27

PHP Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in E:\home\topdeia\Web\n-chipi\cidades.ajax.php on line 22

функция, это:

    if (!function_exists("GetSQLValueString")) {

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);     

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
} 

вопрос В том, как обойти эту ошибку?

 1
php
Author: adventistapr, 2017-04-17

1 answers

ПРЕДУПРЕЖДЕНИЕ: функции mysql_* и не должно использоваться.

Проблема В том, что функция ожидает скалярное значение, но массив, переданный в качестве аргумента, кто дает совет, a query string (&uf[]=27).

Сначала нужно решить, что если придет, то массив будет прервать процесс и вернуть сообщение об ошибке пользователю или получить первый элемент массива и использовать?

Втором случае, как только uf должен быть отправлен одновременно можно использовать функцию reset() by указатель массива на первой позиции и получить его значение.

$theValue = is_array($theValue) ? reset($theValue) :  $theValue; //linha adicionada

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);     
 2
Author: rray, 2017-04-17 19:47:30