2014-01-19 4 views
0

Я создал функцию, которая должна фильтровать данные, переходящие в переменную $_GET. Недавно он работал, но я начал работать с mysqli, и теперь его больше нет. Повторяя мой $data каждый раз, когда он проходил через функцию PHP, результат дал mysqli_real_escape_string, вызывающий переменную $data, чтобы вернуть пустой. Но что я делаю неправильно здесь.mysqli_real_escape_string возвращает пустую внутреннюю функцию

Моя функция, которая должна фильтровать $_GET переменные, но mysqli_real_escape_stringвозвращает пустую переменную ..

function filter($data) { 
      global $link; 
      $data = trim(htmlentities(strip_tags($data))); 
      if (get_magic_quotes_gpc()) 
       $data = stripslashes($data); 
      $data = mysqli_real_escape_string($link, $data);  
      return $data; 
     } 

Петля для того, чтобы запустить все $_GET переменные корыта фильтра.

foreach($_GET as $key => $value) { 
    $get[$key] = filter($value); 
} 

соединение с базой данных (соединение работает): ($link)

$link=mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME); 
+3

'$ link' недоступен внутри функции из-за [scope scope в PHP] (http://php.net/manual/en/language.variables.scope.php) – kero

+0

Я использую' global $ link; 'и STI я не буду работать. Также попробовал '$ GLOBALS ['link'];' но говорит, что индексная ссылка не указана ... –

+0

Какую причину использует 'globals' здесь? Чем вы следуете? Пожалуйста, объясните этот подход. – voodoo417

ответ

0

Измените функцию, чтобы включить $link и передать его по ссылке, если вы хотите:

function filter($data, &$link) { 
    $data = trim(htmlentities(strip_tags($data))); 
    if (get_magic_quotes_gpc()) 
     $data = stripslashes($data); 
    $data = mysqli_real_escape_string($link, $data);  
    return $data; 
} 
Смежные вопросы