السلام عليكم ورحمة الله وبركاته ..
عنوان الدرس : الفلترة .
درجة الدرس : مبتدئ-متوسط .
اللغة :PHP5
ماهي الفلترة ولماذا ؟
الفلترة : هي تقنية تم احداثها في php5 لتساعد مطورين اللغة على تنقيح والتحقق من القيم المدخلة الخارجية وهي تنقسم إلى :
1-القيم القادمة من استعلامات قواعد البيانات .
2-Cookies .
3- مدخلات النماذج .
4- القيم القادمة من السيرفر .
ونطلق على تقنية التنقيح والتحقق .
Validating And Sanitizing .
ماهي فائدة هذه العملية ؟
بالقبل كنا للتحقق من من الأيميل المدخل ايميل حقيقي وليس سبام أو لا يحتوي على @ ,كنا نستخدم في PHP4 :
ereg مع التعبيرات المنطقية regular excepretion.
وفي php5 يوجد بديلتها preg_match . وندخل في تعقيدات قد تكون صعبة على المبتدأ في تعلم اللغة . قد يحتاجها في أماكن أخرى .. ولكن ليس اليوم .
الأن هناك البديل لها .. لن أطيل الحديث .
مجموعة المناهج المستخدمة Functions:
1- للتحقق من قيمة متغير .
filter_var();
2- للتحقق من مجموعة متغيرات سويا .
filter_var_array();
3-للتحقق إذا كانت المتغير يحوي بداخله قيمة أم فارغ
filter_has_var
4- للتحقق من القيم المدخلة عن طريق POST ,GET :عن طريق الخيار INPUT GET ,INPUT POST. المثال في أخر الدرس سيوضح ذلك .
filter_input()
الأن سأبدأ بخيارات التنقيح :
FILTER_SANITIZE_EMAIL : هذه تحذف Special characters من الإيميل .
FILTER_SANITIZE_URL: أيضا تنقيح الرابط وحذف مايسبب المشاكل ..
FILTER_SANITIZE_NUMBER_INT: حذف كل المحارف من الرقم والتحقق هل هو انتجر .أم لاء .ولايحذف +- .
FILTER_SANITIZE_NUMBER_FLOAT : ويتحقق هل الرقم يحوي فواصل .. ويحذف جميع المحارف .. يمثلا لو تم ادخال 123.23asd
FILTER_SANITIZE_MAGIC_QUOTES: يطبق التابع addslashes ..
FILTER_SANITIZE_STRING: تقوم بعملية التجريد من الأوسمة strip_tags.
الأن خيارات التحقق :
FILTER_VALIDATE_IP :التحقق من ان القيمة هي اي بي حقيقة .. طيب سؤال هل IPv4.0 أم IPv6.0 ؟ الشيء أنها للإثنين .
FILTER_VALIDATE_URL : التحقق من المدخل أنه رابط لموقع أم غير ذلك .
FILTER_VALIDATE_REGEXP: وهي مشابه للدالةpreg_match.وهي للتحقق من مدخلات string .
FILTER_VALIDATE_EMAIL: للتحقق من أن المدخل ايميل .
FILTER_VALIDATE_INT : التحقق من القيمة الرقمية .
FILTER_VALIDATE_FLOAT: التحقق من القيم العشرية .
الأن لنأخذ مثالا أنه لدينا نموذج لإدخال بيانات كالتالي : لن أستخدم HTML5 في المثال .
<form action="check.php" method="get"> <input type="text" name="email" /> <input type="text" name="int" /> <input type="submit" name="submit"> </form>
check.php هذا الكود للتحقق .
if(isset($_GET['submit'])){
if(!filter_has_var(INPUT_GET, "email"))
{
echo("Input type does not exist");
}
else
{
if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))
{
echo "E-Mail is not valid";
}
else
{
echo "E-Mail is valid";
}
}
if(!filter_has_var(INPUT_GET, "int"))
{
echo("Input type does not exist");
}
else
{
if (!filter_input(INPUT_GET, "int", FILTER_VALIDATE_INT))
{
echo "The inserted is not a Integer";
}
else
{
echo "is integer";
}
}
}