2015-06-20 2 views
-2

Я использую функцию для очистки переменных в целях безопасности. Однако эта функция преобразует каждое значение в строковый тип данных, который я не хочу.Нежелательный тип в foreach

Так, например, когда входной параметр является целым типом данных, функция возвращает тип данных строки.

Любая идея, как вернуть тот же тип данных?

public function cleanInput($value) 
{ 
    if (is_array($value)) 
    { 
     $newVal = ''; 
     foreach($value as $field => $value) 
     { 
      $newVal[$field] = $this->link->real_escape_string($value); 
     } 
    } 
    else 
    { 
     $newVal = $this->link->real_escape_string(trim(htmlspecialchars($value))); 
    } 

    return $newVal; 
} 


    // In example 
    $oldData = 20; // input is integer 
    $newData = cleanInput($oldData); // output should still be integer 
    if (is_int($newData)) 
    { 
    echo "Working!"; 
    } 
    else 
    { 
    echo "Not working..."; 
    } 
+1

Ну, 'htmlspecialchars()' действительно возвращает строку, в самом деле. Функция не имеет никакого смысла при работе с целыми числами. Может быть, 'real_escape_string()' показывает то же поведение. Неясно, что делает этот метод. – arkascha

ответ

1

Как сказал arkascha, htmlspecialchars и real_escape_string обоих возвратных строк, это своего рода подразумеваемые в функции обоих.

Если вы хотите, чтобы ints, плавающий ect ect возвращался с исходным типом данных, вам просто не нужно было очищать их. В любом случае, нет смысла пытаться избежать числовых типов.

else if (!is_string($value)) 
{ 
    return $value; 
} 

http://php.net/manual/en/function.is-string.php

+0

Verox, спасибо за объяснение! – Piet

Смежные вопросы