2010-04-05 6 views
0

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

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

ответ

1

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

$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()); 
} 

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

+0

спасибо. это сработало! – input

1

В самом верху страницы 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

Вы все еще свободны сделать некоторые проверки ваших данных с Javascript и PHP. И вам обязательно нужно подтвердить с помощью php. Так как вы будете вводить пользовательский ввод в базу данных, используйте подготовленные операторы (также называемые параметризованными запросами, чтобы предотвратить атаки SQL-инъекций) – rkulla

-1

Если вы спрашиваете: «Могу ли я гарантировать, что данные действительны на стороне клиента без 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; 

    ... 

    } 

} 
0

Получить представленные данные с помощью $ _POST супер-глобальный файл PHP, как это:

$ _POST [ 'FirstName'] для каждого HTML-элемента, являющегося POST-е изд. Для eaxmple, в вашем HTML:

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

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

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