PHP предотвращает сбор неверных данных для списков HTML (выбор, флажок, радио) - PullRequest
0 голосов
/ 12 февраля 2012

Чтобы предотвратить неправильный сбор данных, я думал о том, как предотвратить принятие нежелательных значений моим PHP-кодом.

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

Конечно, это очень упрощенный пример, но я просто хотел пропустить эту идею мимо других программистов, чтобы посмотреть, не ухожу ли я отсюда.

// get form value
$name = $_POST['color'];

// form list values
$arr =  array("blue", "red", "green");

// build options
for($i = 0, $size = sizeof($arr); $i < $size; ++$i)
{
echo '<option value="' . $arr[$i] . '">' . $arr[$i] . '</option>';
}

// verify value is valid
if (in_array($name, $arr)) {
    // valid value
}

Ответы [ 2 ]

1 голос
/ 12 февраля 2012

Я считаю, что это хороший способ сделать это, хотя я, вероятно, выполнил бы всю логику проверки прямо в верхней части скрипта, например:

// set the error flag
$error_flag = false;

// form list values
$arr =  array("blue", "red", "green");

if(isset($_POST)){
    // get form value
    $name = $_POST['color'];

    // verify value is valid
    if (in_array($name, $arr)) {
        // valid value
    } else {
        // error - you selected an invalid value!
        $error_flag = true;
    }

    if($error_flag == false){
        // process data and save to database, etc etc
    }
}

if($error_flag == true){
    // display the error
}

// build options
for($i = 0, $size = sizeof($arr); $i < $size; ++$i){
    echo '<option value="' . $arr[$i] . '">' . $arr[$i] . '</option>';
}

Я добавил вфлаг ошибки, чтобы вы также могли уведомить конечных пользователей о том, что они сделали неправильно, и позволить им снова заполнить форму.Конечно, вы можете развернуть его так, чтобы правильные поля «запоминали» данные, которые уже были отправлены ранее, и указывали, какие поля были неверными.

1 голос
/ 12 февраля 2012

Похоже, путь!

Не уверен, был ли это простой набросок, но лучше использовать foreach

for($i = 0, $size = sizeof($arr); $i < $size; ++$i){
    echo '<option value="' . $arr[$i] . '">' . $arr[$i] . '</option>';
}

становится

foreach($arr AS $v){
    echo '<option value="' . $v . '">' . ucfirst($v) . '</option>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...