кодесурса
«PHP

Проверка формы PHP

script1adsense2code
script1adsense3code

Предисловие

В этом уроке мы увидим, как использовать PHP для проверки данных, собранных из формы.

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

Live Demo

Ниже приведена живая демонстрация формы PHP, которую мы создадим к концу этого урока.


Иллюстрированная презентация

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

«PHP

Базовый HTML-файл

<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset=utf-8>
<title>Form validation with parsely.js</title>
<link href="../../twitter-bootstrap/twitter-bootstrap-v2/docs/assets/css/bootstrap.css" rel="stylesheet">
<link href="parsely.css" rel="stylesheet">
<style type="text/css">
h1 {margin-bottom:20px}
input, label {margin-top:7px; margin-bottom:7px; color:#000066; font-size: 18px; padding-right: 7px}
input[type='checkbox'] {margin-left: 5px}
.note {color: #ff0000}
.success_msg{color:#006600}
</style>
</head>
<body>
<div class="container">
<h1>Travel reservation form</h1>
<h3><span class="note">*</span> denotes mandotory</h3>
<form id="registration_form" method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
</form>
</div>
</body>
</html>

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

Мы использовали метод POST и action="<?php echo $_SERVER['PHP_SELF']; ?>" что после action="<?php echo $_SERVER['PHP_SELF']; ?>" формы данные будут обрабатываться сценарием PHP, присутствующим только в этом файле. Вы можете выбрать отправку данных формы в другой файл.

Проверка только для непустых символов, букв и пробелов.

Следующий код добавляется в форму

<label>Full name<span class="note">*</span>:</label>
  <input type="text" name="full_name" placeholder="FirstName LastName" autofocus="autofocus" value="<?php echo $_POST['full_name']; ?>">   
  <?php echo "<p class='note'>".$msg_name."</p>";?>
  <?php echo "<p class='note'>".$msg2_name."</p>";?>

Код для проверки

if (isset($_POST['submit'])) {
//checking name
if(empty($_POST['full_name']))
$msg_name ="You must supply your name";
$name_subject = $_POST['full_name'];
$name_pattern ='/^[a-zA-Z ]*$/';
preg_match($name_pattern, $name_subject, $name_matches);
if(!$name_matches[0])
$msg2_name ="Only alphabets and white space allowed";
}

Проверка электронной почты

Код добавлен в форму

<label>Email address<span class="note">*</span>:</label>
  <input type="text" name="email_addr" value="<?php echo $_POST['email_addr']; ?>">
   <?php echo "<p class='note'>".$msg_email."</p>";?>
  <?php echo "<p class='note'>".$msg2_email."</p>";?>

Код для проверки

if (isset($_POST['submit'])) {
//check email
if(empty($_POST['email_addr']))
$msg_email ="You must supply your email";
$email_subject = $_POST['email_addr'];
$email_pattern ='/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/';
preg_match($email_pattern, $email_subject, $email_matches);
if(!$email_matches[0])
$msg2_email ="Must be of valid email format";
}

Проверка списка выбора

Код добавлен в форму

<label>Select Tour Package<span class="note">*</span>:</label>	
   <select name="package">
	<option value="Goa" <?= ($_POST['package'] =="1")? "selected":"";?>>Goa</options>
	<option value="Kashmir" <?= ($_POST['package'] =="2")? "selected":"";?>>Kashmir</options>
	<option value="Rajasthan" <?= ($_POST['package'] =="3")? "selected":"";?>>Rajasthan</options>
   </select>

Код для проверки

if (isset($_POST['submit'])) {
if(empty($_POST['package']))
$msg_package ="You must select a package";
}

Проверка даты

Код добавлен в форму

<label>Arrival date<span class="note">*</span>:</label>
  <input type="text" name="arv_dt" value="<?php echo $_POST['arv_dt']; ?>">
  <?php echo "<p class='note'>".$msg_dt."</p>";?>
  <?php echo "<p class='note'>".$msg2_dt."</p>";?>
  <?php echo "<p class='note'>".$msg3_dt."</p>";?>

Код для проверки

if (isset($_POST['submit'])) {
//date validation
if(empty($_POST['arv_dt']))
$msg_dt ="You must supply an arival date";
if(!empty($_POST['arv_dt']))
{
    $dt = $_POST['arv_dt'];
    $array = explode("/",$dt);
    $day = $array[1];
    $month = $array[0];
    $year = $array[2];
    if(!checkdate($month, $day, $year))
    {
    $msg2_dt ="Must be in m/d/y format";
    }
    else
    {
    $today = strtotime("now");
    if(strtotime($dt)<$today)
    $msg3_dt ="Date supplied is before present day";
    }
}
}

Проверка на непустое и неотрицательное целое число

Код добавлен в форму

<label>Number of persons<span class="note">*</span>:</label>
  <input type="text" name="persons" value="<?php echo $_POST['persons']; ?>"s>
  <?php echo "<p class='note'>".$msg_persons."</p>";?>
  <?php echo "<p class='note'>".$msg2_persons."</p>";?>

Код для проверки

if (isset($_POST['submit'])) {
//checking for non-empty and non-negative integer
if(empty($_POST['persons']))
$msg_persons ="You must supply number of persons travelling";
if(!empty($_POST['persons']))
{
$persons = $_POST['persons'];
preg_match("@^([1-9][0-9]*)[email protected]", $persons, $persons_match);
if(!$persons_match[0])
$msg2_persons ="Must be non negative integer";
}
}

Проверка флажка

Код добавлен в форму

<label>What would you want to avail?<span class="note">*</span></label>  
 Boarding<input type="checkbox" name="facilities[]" value="boarding" <?php if(isset($_POST['submit']) && isset($_POST['facilities'][0])) echo "checked" ?> >
 Fooding<input type="checkbox" name="facilities[]" value="fooding" <?php if(isset($_POST['submit']) && isset($_POST['facilities'][1])) echo "checked" ?> >
 Sight seeing<input type="checkbox" name="facilities[]" value="sightseeing" <?php if(isset($_POST['submit']) && isset($_POST['facilities'][2])) echo "checked" ?> >
 <?php echo "<p class='note'>".$msg_facilities."</p>";?>
 <?php echo "<p class='note'>".$msg2_facilities."</p>";?>

Код для проверки

if (isset($_POST['submit'])) {
//checking facilities
$facilities = $_POST['facilities'];
  if(empty($facilities)) 
  {
    $msg_facilities ="You must select facilities";
  } 
 
 if(!empty($_POST['facilities'])) {
    $no_checked = count($_POST['facilities']);
    if($no_checked<2)
    $msg2_facilities ="Select at least two options";
    }
}

Validaiton только для буквенно-цифровых символов с минимальным количеством символов

Код добавлен в форму

<label>Discout Coupon code:</label>
  <input type="text" name="dis_code" value="<?php echo $_POST['dis_code']; ?>">
  <?php echo "<p class='note'>".$msg_dis."</p>";?>
  <?php echo "<p class='note'>".$msg2_dis."</p>";?>

Код для проверки

if (isset($_POST['submit'])) {
//check discount coupon
//[^a-z0-9_]
if($_POST['dis_code'])
{
 $dis_code = $_POST['dis_code'];
 preg_match("/^[a-zA-Z0-9]+$/", $dis_code, $dis_match);
 if(!$dis_match[0])
 $msg_dis ="Must be alphanumric"; 
 if(strlen($dis_code)!='10')
 $msg2_dis ="Must be 10 characters long";
}
}

Обратите внимание, что все фрагменты кода в разделе «Код для проверки» заключаются в if (isset($_POST['submit'])) и } . На практике вы можете хранить все коды в одном if (isset($_POST['submit'])) и } .

Проверка для радио кнопки

Код добавлен в форму

<label>Terms and conditions<span class="note">*</span></label>
  <input type="radio" name="tnc" value="agree" <?php echo $tncv; ?>>I agree<br>
  <input type="radio" name="tnc" value="disagree" <?php echo $tnc1v; ?>>I disagree<br>
  <?php echo "<p class='note'>".$msg_agree."</p>";?>
  <?php echo "<p class='note'>".$msg2_agree."</p>";?>
//checking terms 
$tnc = $_POST['tnc'];
switch($tnc)
{
case "agree":
$tncv="checked";
$tnc1v="";
break;
case "disagree":
$tncv="";
$tnc1v="checked";
$msg2_agree ="You must agree";
break;
default: // By default 1st option is selected
$tncv="checked";
$tnc1v="";
break;
};

Кнопка Отправить

Код добавлен в форму

<button type="submit" class="btn btn-large btn-primary" name="submit">Complete reservation</button>

Последний фрагмент кода, чтобы сообщить пользователю, что форма проверена

// validation complete 
if(isset($_POST['submit'])){
if($msg_name=="" && $msg2_name=="" && $msg_email=="" && $msg2_email=="" && $msg_package=="" && $msg_dt=="" && $msg2_dt==""&& $msg3_dt=="" && $msg_persons=="" && $msg2_persons=="" && $msg_facilities=="" && $msg2_facilities=="" && $msg_dis=="" && $msg2_dis=="" && $msg_agree=="" && $msg2_agree=="")
$msg_success ="You filled this form up correctly";
}

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

echo "

".$msg_success."

";

Как отправить данные, собранные после проверки

Если вы хотите отправить данные, собранные через эту форму, после проверки на чей-либо почтовый адрес, вам поможет следующий код.

// validation complete 
if(isset($_POST['submit'])){
if($msg_name=="" && $msg2_name=="" && $msg_email=="" && $msg2_email=="" && $msg_package=="" && $msg_dt=="" && $msg2_dt==""&& $msg3_dt=="" && $msg_persons=="" && $msg2_persons=="" && $msg_facilities=="" && $msg2_facilities=="" && $msg_dis=="" && $msg2_dis=="" && $msg_agree=="" && $msg2_agree=="")
$msg_success ="You filled this form up correctly";
//send mail 
$to ="[email protected]";
$subject ="Data collected thorugh from";
$message ="<p>".$_POST["full_name"]."</p><p>".$_POST["email_addr"]."</p><p>".$_POST['package']."</p><p>".$_POST["arv_dt"]."</p><p>".$_POST["persons"]."</p><p>".$_POST["facilities"][0]."</p><p>".$_POST["facilities"][1]."</p><p>".$_POST["facilities"][2]."</p><p>".$_POST["dis_code"]."</p><p>".$_POST['tnc']."</p>";
$from ="[email protected]";
mail($to,$subject,$message);
}

Итак, если вы попытаетесь понять, как написать код для него, шаг за шагом, шаг 1 - объявить почтовый адрес, на который вы хотите отправить почту, шаг 2 - написать тему письма, шаг третий - собрать данные из POST, чтобы вы могли записать их в тело письма, шаг 4 - объявить почтовый идентификатор, с которого приходит письмо, и, наконец, отправить письмо с помощью функции PHP mail (). Вы можете распечатать некоторое сообщение после отправки почты по желанию.

Смотрите также: SQL-инъекция

Предыдущий: PHP обработка форм
Далее: Справочник по функциям PHP

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code