مارس 052012
 

درس بسيط لقطع حبل الانقطاع في الفترة المنصرمة 😀

وهو عبارة عن بعض الطرق للتحقق من صحة البيانات المدخلة في حقل معين في نموذج. يختلف نوع التحقق حسب نوع الحقل وحسب طريقة معالجة البيانات، والتحقق قد يشمل التحقق من حالة الحقل إن كان فارغًا أم لا، أو إن كان البريد الالكتروني مكتوب بشكل صحيح أو هو مجرد ملئ فراغ. عبر الأمثلة سيتم شرح عدة نقاط بإذن الله.

1. صنع النموذج، ولنفترض أنه نموذج للتسجيل في موقع اعتيادي، الحقول بالترتيب: الاسم الأول*، الاسم الثاني، اسم العائلة*، البريد الالكتروني* و رقم الهاتف.

الحقول التي تحمل “*” يقصد بها حقول إجبارية، أي يجب أن تتم الكتابة بها لمواصلة العملية. يمكن عمل النموذج بأحد البرامج المساعدة مثل: Frontpage و Dreamweaver. النموذج جاهزًا:

<form method="POST" action="anypage.php">
<table border="0" width="100%" style="border-collapse: collapse">
<tr>
<th colspan="2">نموذج تسجيل</th>
</tr>
<tr>
<th>الاسم الأول <font color="#FF0000">*</font></th>
<td><input type="text" name="firstname" size="20"></td>
</tr>
<tr>
<th>الاسم الثاني</th>
<td><input type="text" name="secondname" size="20"></td>
</tr>
<tr>
<th>اسم العائلة <font color="#FF0000">*</font></th>
<td><input type="text" name="lastname" size="20"></td>
</tr>
<tr>
<th>البريد الالكتروني <font color="#FF0000">*</font></th>
<td><input type="text" name="email" size="20"></td>
</tr>
<tr>
<th>الهاتف</th>
<td><input type="text" name="phone" size="20"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="اعتماد" name="B1"><span lang="ar-om"> </span>
<input type="reset" value="اعادة تعيين" name="B2"></td>
</tr>
</table>

</form>

صورة للنموذج:

2. التحقق:

2.1. التحقق من الكتابة في الحقول الضرورية:

هناك عدة طرق منها:

if($_POST['name'] == '')

لكن لنكن أكثر رسمية ونستخدم دالة empty ليكون التطبيق كالتالي:

if(empty($_POST['firstname']) || empty($_POST['lastname']) ||  empty($_POST['email']))
{
echo 'هناك حقل فارغ<br />';
}

لاحظ “||” بين كل شطر من الأمر الشرطي، وتعني “أو (OR)” وتستخدم “&&” لتدل على “و (AND)”، وللتوضيح، هنا مثال معاكس لما سبق، أي ان الشرط السابق يتحقق من ان كان أي حقل من الحقول المحددة فارغًا، أما الشرط التالي فهو يتحقق لو أن كل الحقوق المحددة ليست فارغة:

 if(!empty($_POST['firstname']) && !empty($_POST['lastname']) && !empty($_POST['email']))
 {
     echo 'الحقول مكتملة<br />';
 }else
 {
     echo 'هناك حقل غير مكتمل<br />';
 }

لاحظ أيضًا أن هناك علامة “!” قبل الدالة أي ان empty تتأكد من فراغ المحتوى، و !empty تعكس ذلك، أي عدم فراغ المحتوى 🙂

2.2. التحقق من صحة البريد الالكتروني:

هناك الكثير من الطرق المنتشرة في مواقع الانترنت، وسأستخدم الطريقة التالية: التحقق من أن هناك “@”، والتحقق من وجود “.”، الطريقة الأكثر سهولة للتحقق من صحة البريد.

سنستخدم دالتين متشابهتين:

strstr: للاقتطاع من نص معين، من جهة اليسار أو البداية.

strrchr: للاقتطاع من نص معين، من جهة اليمين أو النهاية.

مثال الاستخدام والتطبيق:

if(strstr($_POST['email'], '@') && strrchr($_POST['email'], '.'))
{
echo 'البريد صحيح<br />';
}
else
{
echo 'البريد غير صحيح<br />';
}

تقنيًا، في حالة وجود العلامات المذكورة في الشرطين، فستكون هناك قيمة، لكن في حالة عدم تواجدهم، فستكون القيمة هي 0 أو false، أي لعكس الشرط السابق يمكن استخدام العلامة “!” للتحقق من كتابة البريد بشكل خاطئ.

 

2.3. التحقق من رقم الهاتف: سنتحقق من أن المدخل هو رقم باستخدم الدالة intval، التطبيق:

if(intval($_POST['phone']))
{
echo 'الهاتف صحيح<br />';
}
else
{
echo 'الهاتف غير صحيح<br />';
}

ويمكن التحقق من الرقم عبر التحقق من عدد الأرقام، في سلطنة عُمان رقم الهاتف يتكون من 8 أرقام، سنستخدم الدالة strlen لحساب عدد الأرقام، والتطبيق:

if(intval($_POST['phone']) && strlen($_POST['phone']) == 8 )
{
echo 'الهاتف صحيح<br />';
}
else
{
echo 'الهاتف غير صحيح<br />';
}

هناك بالتأكيد طرق أخرى وأكثر دقة في التحقق، لكن في الدرس استخدمنا الأبسط أو الأكثر عملية، صفحة التجارب كاملة:

<html dir="rtl">

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>test validation</title>
</head>

<body>

<?PHP
if($_POST)
{
  if(!empty($_POST['firstname']) && !empty($_POST['lastname']) && !empty($_POST['email']))
  {
    if(strstr($_POST['email'], '@') && strrchr($_POST['email'], '.'))
    {
      echo 'البريد صحيح<br />';
      if(intval($_POST['phone']) && strlen($_POST['phone']) == 8 )
      {
        echo 'الهاتف صحيح<br />';
      }
      else
      {
        echo 'الهاتف غير صحيح<br />';
      }
    }
    else
    {
      echo 'البريد غير صحيح<br />';
    }

  }else
  {
    echo 'هناك حقل غير مكتمل<br />';
  }
}
else
{
  ?>
  <form method="POST" action="<?PHP $_SERVER['PHP_SELF'] ?>">
  <table border="0" width="100%" style="border-collapse: collapse">
  <tr>
  <th colspan="2">نموذج تسجيل</th>
  </tr>
  <tr>
  <th>الاسم الأول <font color="#FF0000">*</font></th>
  <td><input type="text" name="firstname" size="20"></td>
  </tr>
  <tr>
  <th>الاسم الثاني</th>
  <td><input type="text" name="secondname" size="20"></td>
  </tr>
  <tr>
  <th>اسم العائلة <font color="#FF0000">*</font></th>
  <td><input type="text" name="lastname" size="20"></td>
  </tr>
  <tr>
  <th>البريد الالكتروني <font color="#FF0000">*</font></th>
  <td><input type="text" name="email" size="20"></td>
  </tr>
  <tr>
  <th>الهاتف</th>
  <td><input type="text" name="phone" size="20"></td>
  </tr>
  <tr>
  <td colspan="2" align="center">
  <input type="submit" value="اعتماد" name="B1"><span lang="ar-om"> </span>
  <input type="reset" value="اعادة تعيين" name="B2"></td>
  </tr>
  </table>

  </form>
<?PHP
}
?>

</body>

</html>

  3 Responses to “التحقق من الحقول (البريد الالكتروني، رقم الهاتف)”

  1. شكرا لجهودكم

  2. الله يزيدك علم

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code lang=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)