2014-11-07 3 views
3

Я получаю предупреждение о netbeans при использовании этого кода. Может ли кто-нибудь опубликовать код, который не будет показывать предупреждения в netbeans и достигнет того, что я хочу. Имеет ли в моем коде недостаток безопасности?

.

Предупреждение, которое я получаю, говорит: «Никогда не получайте доступ к Superglobal $ _POST. Вместо этого используйте функцию фильтрации».

.

<?php 
//test if required vars are set 
if (
    isset($_POST['num']) && 
    isset($_POST['desc']) 
) { 
    (double) $num = filter_var($_POST['num'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); 
    $desc = $_POST['desc']; 

    //do stuff after with these vars such as: mysqli queries; equations with ! === || &&. 
} 
?> 
+1

Netbeans жалуется на этой линии: '$ убывание = $ _POST [ 'по убыванию'];'. Это само по себе небезопасно, но то, что вы делаете с ним, может быть. Netbeans просто напоминает вам относиться к пользовательским данным со значительной осмотрительностью. –

+0

@MikeW OP фактически получит их во всех 4 строках, где они используются :-) – jeroen

ответ

1

Попробуйте использовать это:

<?php 

if (filter_input(INPUT_POST, 'num') && filter_input(INPUT_POST, 'desc')) { 
    (double) $num = filter_input(INPUT_POST, 'num', FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); 

    $desc = filter_input(INPUT_POST, 'desc'); 

    //do stuff after with these vars such as: mysqli queries; equations with ! === || &&. 
} 
+1

Ваши первые две строки - 'isset' - приведут к фатальной ошибке:' Невозможно использовать возвращаемое значение функции в контексте записи' , 'filter_input' возвращает' NULL', если имя переменной не установлено, поэтому вы можете проверить это вместо этого. – jeroen

+0

Значит, isset() не требуется в примере выше? – compsci

+0

@jeroen, Хороший комментарий, я сделал обновление, спасибо! –

0

Я бы не слишком беспокоиться о том, что предупреждения, даже строку, где вы на самом деле использовать функцию фильтра (хотя другой один, чем NetBeans предлагает ...) создает что то же сообщение.

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

Однако, если вы не хотите, чтобы увидеть их, вы можете пойти:

Tools > Options > Editor > Hints 

И включить конкретные предупреждения индивидуально.

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