Как устранить сообщения об ошибках, генерируемые функцией 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 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);