проверка в php - PullRequest
       45

проверка в php

0 голосов
/ 06 апреля 2010

У меня есть страница отправки в html . когда я отправляю данные формы, она переходит на страницу php, которая вставляет данные в базу данных.

мой вопрос: как мне убедиться, что данные на html-странице не являются нулевыми или пустыми без использования JavaScript? в любом случае это может быть сделано в php? спасибо!

Ответы [ 4 ]

1 голос
/ 06 апреля 2010

Просто используйте управляющие структуры как обычно:

$non_empties = array('name', 'email', 'address');

foreach ($non_empties as $field) {
    if (! isset($_POST[$field]) || $_POST[$field] == '') {
        show_error("Please fill your $field, thank you.");
    }
}

$db->insert();

Более сложный пример:

// Defined in your library
function validate_as_non_empty(Array $non_empties) {
    foreach ($non_empties as $field) {
        if (! isset($_POST[$field]) || $_POST[$field] == '') {
            throw new Exception("Please fill your $field, thank you.");
        }
    }
}

// Defined in your library
function validate_as_foo(Array $arr) { ... }

// Your request handler
try {
    validate_as_non_empty(array('name', 'address'));
    validate_as_foo(array('email'));
    $db->insert();
} catch (Exception $e) {
    show_error($e->getMessage());
}

Существует как минимум миллион способов проверки. Обычно у вас есть какая-то основа, на которую можно положиться. Приведенные выше примеры приведены только для вдохновения.

1 голос
/ 06 апреля 2010

В самом верху вашей php-страницы (страница, на которую вы ссылаетесь в атрибуте действия формы) поместите:

if (isset($_POST['submit_check']) && strlen($_POST['whatever'])) { // submit_check is a hidden form field
    insert_to_db();
    header('Location: success.php'); // redirect to another page to prevent double-submits
    exit;
}

Так что ваш HTML может выглядеть так:

<form action="" method="post"> 
    <input type="text" name="whatever"/>
    <input type="hidden" name="submit_check" value="1"/> 
</form>

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

0 голосов
/ 06 апреля 2010

Извлеките отправленные данные, используя суперглобальный $ _POST в вашем PHP-файле, например:

$ _ POST ['firstname'] для каждого элемента HTML, для которого выполняется POST. Например, в вашем HTML:

<input type="text" name="firstname" />

Затем проверьте данные с помощью PHP, с помощью регулярных выражений, isset и т. Д. И перенаправьте соответственно либо на страницу успеха, либо обратно в форму HTML.

Вы также можете сделать то же самое, используя Ajax (будет применена та же проверка PHP, только модель передачи данных немного отличается)

0 голосов
/ 06 апреля 2010

Если вы спрашиваете: «Могу ли я убедиться, что данные действительны на стороне клиента без JavaScript», тогда ответ - «нет».

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

foreach ($_POST as $key=> $value) {

  switch ($key) {
   case 'my_value_name':
      //test $value is not null and other validation;
      //insert into database function
      break;

   ...

  }

}
...