PHP Validation | filter_var | preg_match
|What is Validation in PHP ?
आज हम समझेंगे PHP Validation के बारे में और जानेंगे की कितने प्रकार से हम Validation को Classify कर सकते हैं , सबसे पहले हम Validation का शाब्दिक अर्थ समझते हैं .
- Valid यानि की मान्य या वैध यानि की जो भी Value हैं वह मान्य हैं या नहीं।
- Validation यानि की मान्यता या पुष्टि करना। जैसे की कोई भी Value मान्य हैं या नहीं उसकी पुष्टि करना ही Validation हैं , यदि हम सरल शब्दों में कहे तो जो भी Input हम User से लेते हैं उन्हें Check करना की वह सही हैं या नहीं इस कार्य को ही validation कहा जाता हैं।
इस Article में हमने इतने Topic Cover किये हैं।
- Required and Optional
- Common Validation For All Type
- String Validation
- Email Validation
- URL Validation
- Number
- Range Check
- Match Pattern (preg_match)
- PAN Number Validation
- GSTIN Validation
- Example All in One
- Name (Required)
- Email (Email Validation)
- URL (URL Validation)
- Age (Required +Number Range )
- PAN (Pattern Match)
- GSTIN (Pattern Match)
Required and Optional
- Required : कोई भी Filed या Input पर हम सबसे पहले देखते हैं की यह Required हैं या नहीं यदि Required हैं यानि की इस input में value देने के बाद ही हम आगे के कोई Process करेंगे
- Optional : यदि यह Filed optional हैं तो हम input को Accept कर लेंगे चाहे वैल्यू हो या न हो।
Validation Based on Data Type
1. String
यदि कोई वैल्यू हैं तो हम उस पर निम्न Validation लगा सकते हैं।
- Max Length : String की Length को एक Check लगा सकते हैं की Length Specified Width से ज्यादा नहीं होना चाहिए
- Min Length : कम से कम इतने Character तो Enter हो ही , इस तरह का भी Check लगा सकते हैं।
- Only String : यदि हम किसी का Name Input ले रहे हैं तो उसमे हम Check लगा सकते हैं की केवल Character और Space ही Enter हो।
- Remove Spaces : यदि किसी ने String के पहले और बाद में कोई Space दी हो तो हम उसे Remove कर सकते हैं।
- Check Symbol : यदि इस Email या Website का नाम इस Field में ले रहे हैं तो हमें उसमे कुछ Symbol जैसे @, Dot (.) आदि Check करना होते हैं।
- Check Pattern : यदि हमें कोई ऐसा चेक लगाना हैं की पहले कुछ Character Upper Case में हो फिर Number हो या कुछ भी इस तरह से तो वह भी चेक लगा सकते हैं।
2. Number
- Min Value : जो भी Number Enter किया हैं उसकी Minimum Value कितनी होना चाहिए
- Max Value : जो भी Number Enter किया हैं उसकी Maximum Value कितनी होना चाहिए
- Only Number : केवल Number ही Accept होना चाहिए।
Video के माध्यम से देखने के लिए यहा पर Click करे
3. Common For All
जैसा की हमने देखा अलग अलग डाटा Type के अनुसार हमें Check या Validation लगाने होते हैं। परन्तु कुछ Check ऐसे हैं जो हमने सभी में लगा देना चाहिए
- Remove Spaces : जो भी Value आ रही हैं उस पर Trim लगा देना चाहिए ताकि before और after जिसे leading और trailing space कहा जाता हैं , वह Remove हो जाये। इसलिए लिए हमें trim() का उपयोग करना चाहिए।
- Remove Special Character : URL से डाटा आने के कारण कभी कही Special Character भी आ जाते हैं उनको रोकने के लिए htmlspecialchars() का उपयोग करना होता हैं। जैसे की &, “, ‘, <. > आदि की जगह पर वह दूसरे करैक्टर दे देता हैं।
- Remove Back Slash : जब हमें String में Inverted या Single Quote का उपयोग करना होता हैं तो हम पहले इनके पहले \ (Back Slash) का उपयोग करते हैं। उसको Remove करने के लिए हमें stripslashes() function का उपयोग करना चाहिए।
Validation कहाँ – कहाँ पर लगा सकते हैं ?
अभी तक आपने समझ लिया की हमें कितने Validation लगाने होते हैं चाहे वह Data Type के अनुसार हो या अन्य। अब हम समझते हैं की हम Validation कहाँ कहाँ पर लगा सकते हैं।
1. Validation Using HTML Tag and Attribute
बहुत से Validation ऐसे होते हैं जिन्हे हम html tag input Type और उसके Attribute से ही उपयोग में ले सकते हैं।
Input type | Attribute | Remark |
text | maxlength | इस Attribute से जो limit आप सेट करेंगे उससे अधिक length उसी समय ही Enter नहीं होगी। |
number | min, max | इस Attribute से वह दिए गए नंबर से न कम और न ज्यादा Accept करेगा। |
Example के लिए यहाँ पर हमने दो ही दिए हैं ऐसे बहुत से हैं अभी हम PHP Validation के बारे में समझ रहे हैं तो हम यह validation भी PHP से ही लगाएंगे।
2. Validation Using JavaScript (js)
यदि Validation का कार्य HTML और JavaScript की मदद से किया जाये तो Validation Client Side पर ही Check हो जाते हैं लेकिन यदि आप PHP में भी Validation लगाएंगे तो बहुत अच्छा हैं क्युकी यदि किसी ने किसी भी प्रकार से Validation को bypass करने की कोशिश की तो PHP में एक बार फिर से Checking हो जाएगी। इस विषय में अलग से एक ब्लॉग लिख कर आप लोगो को समझाऊंगा अभी केवल इसे हम Introduction लेवल पर ही रखते है।
3. Validation Using PHP
यहाँ पर हम जितने भी तरह के Validation हैं वह PHP में ही लगाएंगे। इसके लिए Step by Step Validation Apply करेंगे। चलिए समझते हैं।
- Step 1: Common Validation
- Step 2 : Required Check
- Step 3: Data Type Wise Validation
हम अभी PHP के Validation के बारे में समझ रहे हैं इसलिए सभी प्रकार के Validation हम PHP में ही लगाएंगे।
Common Validation Example
मुख्यतः हम तीन Validation जो की हमें सभी Value पर कर देना चाहिए इसके लिए हम एक Function बना लेंगे और जितने भी Value आएगी उनको उस Function से Validate करते जायेगें।
जो तीन Function हैं उसे trim(), htmlspecialchars(), stripslashes() आइये एक Example से समझते हैं।
function CommonValidation($value)
{
$value = trim($value);
$value = htmlspecialchars($value);
$value = stripslashes($value);
return $value;
}
इस तरह से PHP Function बनाने के बाद आप इसे इस तरह से इम्प्लीमेंट करेंगे
$f_nm = "";
if (isset($_POST['f_nm']))
{
$f_nm = $_POST['f_nm'];
}
$f_nm = CommonValidation($f_nm);
//
ऐसा करने से Space, back slash और special character को remove कर आपको एक Filtered Value दे देगा।
यहाँ पर हमें के बार फुल Code समझे लेते हैं।
<?php
$f_nm = "";
if (isset($_POST['f_nm']))
{
$f_nm = $_POST['f_nm'];
echo $f_nm .'<BR>'; // Before Validation
$f_nm = CommonValidation($f_nm);
echo $f_nm; // After Validation
}
function CommonValidation($value)
{
$value = trim($value);
$value = htmlspecialchars($value);
$value = stripslashes($value);
return $value;
}
?>
<FORM method="POST" action="MyValidation.php" >
Enter Name
<input type="text" name="f_nm" value="" /><br>
<input type="submit" id="btn_ok" value="Submit"><br>
</FORM>
PHP Required
जैसा की हमने समझा था की यदि किस Value को Required कर दिया जाये तो उसके Enter न होने पर Form Submit तो होगा लेकिन आगि की Process नहीं करेगा , आइये अब समझते हैं की इस तरह के Code को किस तरह से Implement किया जाता हैं।
- 1 . सबसे पहले हम Required Check लगाएंगे
- 2 . यदि Value Blank हुई तो हम एक Message भी User को देंगे
- 3 . साथ ही उस Message का Color Red कर देंगे ताकि User को ठीक से दिखाई दे। Color करने के कार्य के लिए हम CSS का उपयोग करेने और के Class बना कर जहा ही Required के Message दिखाना हैं वह पर उस Class का उपयोग कर लेंगे।
Required के लिए भी हम एक PHP Function बना सकते हैं।
function CheckRequired($value, $RequiredMsg)
{
if (empty($value))
{
return $RequiredMsg;
}
return "";
}
यहाँ हमने चेक किया हैं की यदि $value वाले Variable में Value Blank आयी हो तो हमें जो भी Message दिया जाये वह Print करना हैं और कुछ न कुछ वैल्यू हो तो फिर यह Function Blank Value ही Return करेगा।
Program Logic
$f_nm = "";
$f_nm_reqmsg = "";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (isset($_POST['f_nm']))
{
$f_nm = $_POST['f_nm'];
$f_nm = CommonValidation($f_nm);
}
$f_nm_reqmsg = CheckRequired($f_nm, "Please Enter Name");
}
$f_nm_reqmsg = “” : यह एक String Variable Declare किया हैं और इसमें Blank Value भी Initialize कर दी है।
if ($_SERVER[“REQUEST_METHOD”] == “POST”) : इससे यह पता लगेगा की Request POST Method से Send की गई हैं।
$f_nm_reqmsg = CheckRequired($f_nm, “Please Enter Name”); : यह हमें जो Function बनाया था उसे Call किया हैं यदि वैल्यू Blank हुई तो $f_nm_reqmsg में “Please Enter Name” वाला मैसेज आएगा और यदि value में कुछ भी हुआ तो इसमें Blank ही रहेगा।
CSS
Red Colour में दिखने के लिए हमें CSS का भी उपयोग करना होगा।
<style>
.RequiredMsg
{
color:red;
}
</style>
HTML Changes
Enter Name
<input type="text" name="f_nm" value="" /><span class="RequiredMsg">*<?=$f_nm_reqmsg;?></span><br>
Span : यहाँ पर हमने span का उपयोग कर * को Print किया हैं ताकि जिस भी Input पर आप Required Print करना चाहे User को Red मार्क से दिखाई दे।
class =”RequiredMsg” : इस क्लास पर हमने एक CSS लिख कर उसे Set किया हैं ताकि Colour को Red कर सके बाद में आप इस पर CSS से animation आदि भी दे सकते हैं।
<?=$f_nm_reqmsg;?> : यह PHP short echo tag हैं इसकी सहायता से हम जो भी Required का Message देंगे वह span में प्रिंट हो जाएगा। other wise इसमें blank Value ही रहेगी।
इतना सभी करने के बाद आपका फॉर्म कुछ इस तरह से डिस्प्ले होने लगेगा।
<?php
$f_nm = "";
$f_nm_reqmsg = "";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (isset($_POST['f_nm']))
{
$f_nm = $_POST['f_nm'];
$f_nm = CommonValidation($f_nm);
}
$f_nm_reqmsg = CheckRequired($f_nm, "Please Enter Name");
}
function CommonValidation($value)
{
$value = trim($value);
$value = htmlspecialchars($value);
$value = stripslashes($value);
return $value;
}
function CheckRequired($value, $RequiredMsg)
{
if (empty($value))
{
return $RequiredMsg;
}
return "";
}
?>
<style>
.RequiredMsg
{
color:red;
}
</style>
<FORM method="POST" action="GetDuplicate.php" >
Enter Name
<input type="text" name="f_nm" value="" />
<span class="RequiredMsg">*<?=$f_nm_reqmsg;?></span><br>
<input type="submit" id="btn_ok" value="Submit"><br>
</FORM>
Data Type Wise Validation
- String
- Email Validation
- URL Validation
- Number
- Range
Customize Validation
PHP Email Validation
यदि हमे ईमेल Validation करना हो तो हम इस प्रकार से लिखेंगे ।
function CheckEmail($value, $EmailMsg)
{
if (!filter_var($value, FILTER_VALIDATE_EMAIL))
{
return $EmailMsg;
}
return "";
}
PHP URL Validation
यदि हमे URL Validation करना हो तो हम इस प्रकार से लिखेंगे ।
function CheckURL($value, $URLMsg)
{
if (!filter_var($value, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED))
{
return $URLMsg;
}
return "";
}
PHP Number Range Validation
यदि हमे नंबर को Minimum और Maximum Value के बीच ही Accept करना हो तो हम इस प्रकार से लिखेंगे ।
function CheckRange($value, $min, $max, $Msg)
{
if !($value >= $min and $value <= $max)
{
return $Msg;
}
return "";
}
Customize Validation (preg_match) : Perform a Regular Expression Matches
जब हमें कोई ऐसा Validation लगाना हैं जो specific pattern follow करता जैसे की PAN में होता हैं GSTIN में भी character number का pattern होता यहीं उनको Valid करने के लिए हम preg_match से customize Validation बना सकते हैं। आइये समझते हैं।
preg_match समझने से पहले हमें कुछ Symbol समझना होंगे फिर हम उन्हें preg_match function में दे कर validation करेंगे।
- / : Regulars Expression को Start और End करने के लिए।
- \ : Escape करैक्टर के पहले उपयोग में लिया जाता हैं। यदि हमें कही पर Dot . लिखना हुए तो हम Dot पहले \. लगाएंगे।
- . : Single Character के लिए
- * : एक से अधिक करैक्टर के लिए
- ^ : किसी भी स्ट्रिंग के शुरू में सर्च करने के लिए
- $ : अंत में स्ट्रिंग में सर्च करने के लिए
- a-z : Lower Case के लिए।
- A-Z : Upper Case के लिए।
- 0-9 : Number 0 से 9 के लिए।
- [ ] : एक से अधिक Patter को Group करने के लिए
- {min, max} : कम से कम कितने और ज्यादा से ज्यादा कितने Character Allowed करने के लिए।
चलिए यहाँ तक तो हमने Read कर लिया परन्तु यह अभी समझ नहीं आएगा में आपको अब कुछ Example बताता हु।
PHP PAN Number Validation
वैसे PAN में N से number ही होता है।
यदि आप जानते हो तो PAN एक पैटर्न हैं जिसमे में कुल 10 Character होते हैं ,
- शुरू के 5 Character होते हैं जिसमे केवल A से Z और यदि Lower case में लिखे तो a -z तक आते हैं।
- उसके बाद 4 Number होते हैं यानि की 0 से 9
- अंत का एक फिर से Character होता हैं। यानि की A to Z या a to z
अब हम इसमें preg_match से किस तरह लिखेंगे समझते हैं।
- शुरू के 5 character चाहिए इसलिए शुरू के लिए ^ लगाएंगे ,
- उसके बाद character के लिए [A-Za-z] लगाएंगे और
- 5 Character चाहिए इसलिए {5} लगाएंगे यानि की शुरू के 5 Character के लिए ^[A-Za-z]{5} इस प्रकार लिखेंगे।
- अब Number लिखना हैं इसलिए [0-9]
- 4 नंबर चाहिए इसलिए {4}
- finally 4 number के लिए [0-9]{4} इस तरह लिखेंगे
- अंत में character चाहिए इसलिए फिर से [A-Za-z] लिखेंगे
- एक ही character चाहिए इसलिए {1} लिखेंगे
- अंत में चाहिए इसलिए $ लगा देंगे
- Finally अंत के एक Character के लिए [A-Za-z]{1} $ यह लिखना होगा।
अब इस सभी को एक साथ लिखेंगे ^[A-Za-z]{5}[0-9]{4}[A-Za-z]{1}$ यह हमारी String बन गई इसके द्वारा हम PAN को चेक कर सकते हैं। स्ट्रिंग में लिखने के शुरुआत में / और अंत में भी / लगा देते हैं।
function CheckPAN($value, $Msg)
{
if (!preg_match("/^[a-zA-Z]{5}[0-9]{4}[a-zA-Z]{1}$/", $value))
{
return $Msg;
}
return "";
}
GSTIN Validation in PHP
GSTIN में कुल 15 Digit होते हैं। जो इस प्रकार हैं।
- शुरू के 2 Digit number होते है यह State Code होता हैं।
- उसके बाद 10 Digit का PAN
- उसके बाद 1 Digit Number
- उसके बाद 1 Digit character
- और अंत में 1 Digit number या Character में से कुछ भी हो सकता हैं।
चलिए preg_match बनाना शुरू करते हैं।
- ^[0-9]{2} : शुरू के लिए ^ और Number के लिए [0-9] और 2 Digit के लिए {2}
- [a-zA-Z]{5}[0-9]{4}[a-zA-Z]{1} : जो हमने अभी पैन के लिए लिखा उसमे से ^ और $ हटाकर अस ऐसा का ऐसा लिख देंगे।
- [0-9]{1} : एक Number के लिए
- [a-zA-Z]{1} : एक Character के लिए
- [a-zA-Z0-9]{1}$ : एक Character या Number के लिए, अंत में हैं इसलिए $ .
अब इन सभी को एक कर देते हैं तो ^[0-9]{2}[a-zA-Z]{5}[0-9]{4}[a-zA-Z]{1}[0-9]{1}[a-zA-Z]{1}[a-zA-Z0-9]{1}$ इस प्रकार से बनेगा। आइये इसका भी एक फंक्शन बना कर चेक कर लेते है।
function CheckGSTIN($value, $Msg)
{
if (!preg_match("/^[0-9]{2}[a-zA-Z]{5}[0-9]{4}[a-zA-Z]{1}[0-9]{1}[a-zA-Z]{1}[a-zA-Z0-9]{1}$/", $value))
{
return $Msg;
}
return "";
}
PHP Validation Example for All in One
अब हम एक Single Example में सभी को समझ लेते हैं। उपरोक्त सभी फंक्शन को आप एक साथ रख दे और इस तरह से उन्हें Call कर सकते हैं।
<?php
$f_nm = $f_nm_msg = "";
$email = $email_msg = "";
$url = $url_msg = "";
$age = $age_msg = "";
$pan = $pan_msg = "";
$gstin = $gstin_msg = "";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (isset($_POST['f_nm']))
{
$f_nm = $_POST['f_nm'];
$f_nm = CommonValidation($f_nm);
$f_nm_msg = CheckRequired($f_nm, "Please Enter Name");
}
if (isset($_POST['email']))
{
$email = $_POST['email'];
$email = CommonValidation($email);
if ($email!="")
{
$email_msg = CheckEmail($email, "Enter Valid E-mail");
}
}
if (isset($_POST['url']))
{
$url = $_POST['url'];
$url = CommonValidation($url);
if ($url!="")
{
$url_msg = CheckURL($url, "Enter Valid URL");
}
}
if (isset($_POST['age']))
{
$age = $_POST['age'];
$age = CommonValidation($age);
$age_msg = CheckRequired($age, "Please Enter Age");
if ($age_msg == "")
{
$age_msg = CheckRange($age, 5, 25, "Enter Age Between 18 to 25");
}
}
if (isset($_POST['pan']))
{
$pan = $_POST['pan'];
$pan = CommonValidation($pan);
if ($pan!="")
{
$pan_msg = CheckPAN($pan, "Enter Valid PAN");
}
}
if (isset($_POST['gstin']))
{
$gstin = $_POST['gstin'];
$gstin = CommonValidation($gstin);
if ($gstin!="")
{
$gstin_msg = CheckPAN($gstin, "Enter Valid GSTIN");
}
}
}
function CommonValidation($value)
{
$value = trim($value);
$value = htmlspecialchars($value);
$value = stripslashes($value);
return $value;
}
function CheckRequired($value, $RequiredMsg)
{
if (empty($value))
{
return $RequiredMsg;
}
return "";
}
function CheckEmail($value, $EmailMsg)
{
if (!filter_var($value, FILTER_VALIDATE_EMAIL))
{
return $EmailMsg;
}
return "";
}
function CheckURL($value, $URLMsg)
{
if (!filter_var($value, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED))
{
return $URLMsg;
}
return "";
}
function CheckRange($value, $min, $max, $Msg)
{
if ($value >= $min and $value <= $max)
{
return $Msg;
}
return "";
}
function CheckPAN($value, $Msg)
{
if (!preg_match("/^[a-zA-Z]{5}[0-9]{4}[a-zA-Z]{1}$/", $value))
{
return $Msg;
}
return "";
}
function CheckGSTIN($value, $Msg)
{
if (!preg_match("/^[0-9]{2}[a-zA-Z]{5}[0-9]{4}[a-zA-Z]{1}[0-9]{1}[a-zA-Z]{1}[a-zA-Z0-9]{1}$/", $value))
{
return $Msg;
}
return "";
}
?>
<style>
.ValidationMsg
{
color:red;
}
</style>
<FORM method="POST" action="Validation.php" >
<table>
<tr>
<td>Name</td>
<td><input type="text" name="f_nm" value="<?=$f_nm;?>" /></td>
<td class="ValidationMsg">*<?=$f_nm_msg;?></td>
</tr>
<tr>
<td>Email</td>
<td><input type="text" name="email" value="<?=$email;?>" style="width:200px;"/></td>
<td class="ValidationMsg"><?=$email_msg;?></td>
</tr>
<tr>
<td>URL</td>
<td><input type="text" name="url" value="<?=$url;?>" style="width:200px;"/></td>
<td class="ValidationMsg"><?=$url_msg;?></td>
</tr>
<tr>
<td>Age</td>
<td><input type="number" name="age" value="<?=$age;?>" style="width:50px;"/></td>
<td class="ValidationMsg">*<?=$age_msg;?></td>
</tr>
<tr>
<td>PAN</td>
<td><input type="text" name="pan" value="<?=$pan;?>" style="width:140px;"/></td>
<td class="ValidationMsg"><?=$pan_msg;?></td>
</tr>
<tr>
<td>GSTIN</td>
<td><input type="text" name="gstin" value="<?=$gstin;?>" style="width:140px;"/></td>
<td class="ValidationMsg"><?=$gstin_msg;?></td>
</tr>
<tr>
<td></td>
<td><input type="submit" id="btn_ok" value="Submit"></td>
</tr>
</table>
</FORM>
आशा हैं मुझे की आपको PHP Validation बहुत अच्छे से समझ में आ गया होगा, फिर भी यदि आपके मन में कोई Doubt हो तो आप कमेंट कर सकते हैं।