در مورد كنترل داده ها دو اصلاح مطرح ميباشد، مطابق زير
فيلترينگ هايphp براي اعتبارسنجي وپاك سازي اطلاعات ورودي خارجي مورد استفاده قرار ميگيرند. پسوند فيلترينگphp توابع زياد داشته كه براي كنترل ورودي كاربر مورد نياز ميباشند .آنها بگونه اي طراحي شده، كه اعتبارسنجي وپاك سازي داده را آسان وسيريعتر ميكند.
ازتابعfilter_list( ) ميتوان استفاده نمود وليست موارد پسوند فيلترينگ php را استخراج نمود.
مثال ـ استخراج موارد پسوند فيلترينگphp
<!DOCTYPE html> <html> <head> <style>table, th, td { border: 1px solid black; border-collapse: collapse; } th, td { padding: 5px; } </style></head> <body> <table> <tr> <td>Filter Name</td> <td>Filter ID</td> </tr> <?php foreach (filter_list() as $id =>$filter) { echo "<tr><td>" . $filter . "</td><td>" . filter_id($filter) . "</td></tr>"; } ?> </table> </body> </html>
بسياري از برنامه هاي كاربردي وب اطلاعات ورودي خارجي دريافت ميكنند، اين اطلاعات ميتوان در موارد زير باشد.
1ـ ورودي كاربر ازفرم
2ـ كوكي ها
3ـ داده هاي سرور وب
4ـ متغير هاي سرور
5ـ نتايج درخواست ها از بانك هاي اطلاعاتي
هميشه بايداطلاعات خارجي در گير را اعتبار سنجي كنيد .تائيد وارسال داده هاي كنترل نشده، شما را درگير موارد امنيتي كرده و صفحه وب شما قطع ميشود.
بوسيله فيلترينگPHP با اطمينان ميتوانيد در برنامه كاربردي خود اطلاعات صحيح دريافت وارسال ارسال نمائيد.
تابعfilter_var( ) هر دو كنترل پاكسازي واعتبار سنجي داده ها را ميتواند انحام دهد.
تابع فوق يك متغير را با نوع فيلتر مشخص غربالگري ميكند .تابع داراي دو پارامتر مطابق زير ميباشد.
1ـ متغيري كد بايد كنترل شود.
2ـ نوع كنترلي كه بايد انجام شود.
مثال ـ در مثال زير از تابعfilter_var( )براي حذف تمام تگ هايHTML از رشته استفاده ميشود.
<!DOCTYPE html> <html> <body> <?php $str = "<h1>Hello World!</h1>"; $newstr = filter_var($str, FILTER_SANITIZE_STRING); echo $newstr; ?> </body> </html>
در اين مثال ثابتFILTER_SANITIZE_STRING نمايان پاكسازي رشته ميباشد .و اسكريپت زير اين كار را انجام ميدهد.
<?php $str = "<h1>Hello World!</h1>"; $newstr = filter_var($str, FILTER_SANITIZE_STRING); echo $newstr; ?>
در مثال زيرتابعfilter_var( ) براي كنترل صحيح بودن متغيري استفاده گرديده در
صورتيكه صحيح باشد، پيغام
<?php $int = 100; if (!filter_var($int, FILTER_VALIDATE_INT) === false) { echo("Integer is valid"); } else { echo("Integer is not valid"); } ?>
مثال ـ اسكريپت كامل كنترل داده صحيح
<!DOCTYPE html> <html> <body> <?php $int = 100; if (!filter_var($int, FILTER_VALIDATE_INT) === false) { echo("Integer is valid"); } else { echo("Integer is not valid"); } ?> </body> </html>
در مثال بالا اگر متغير$iint=0; ميبود، پيغام
<?php $int = 0; if (filter_var($int, FILTER_VALIDATE_INT) === 0 || !filter_var($int, FILTER_VALIDATE_INT) === false) { echo("Integer is valid"); } else { echo("Integer is not valid"); } ?>
همين اصلاح را در مثال اجرائي قبلي امتحان كنيد.
در مثال زير تابعfilter_var( ) براي كنترل متغير$ip كه يك آدرس قابل قبول است ،استفاده شده است.
كنترلمثال -IP Address
<?php $ip = "127.0.0.1"; if (!filter_var($ip, FILTER_VALIDATE_IP) === false) { echo("$ip is a valid IP address"); } else { echo("$ip is not a valid IP address"); } ?>
مثال ـ در مثال زيرتابfilter_var( ) در مرحله اول متغير$email را پاكسازي ميكند، يعني حذف كراكترهاي غير قابل قبول ازآن وسپس با آن، قابل قبول بودن ايميل بررسي ميشود
<!DOCTYPE html> <html> <body> <?php $email = "john.doe@example.com"; // Remove all illegal characters from email $email = filter_var($email, FILTER_SANITIZE_EMAIL); // Validate e-mail if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) { echo("$email is a valid email address"); } else { echo("$email is not a valid email address"); } ?> </body> </html>
مثال ـ در مثال زير متعير$url با تابعfilter_var( ) در مرحله اول پاكسازي شده و حاصل آن با تابع قابل قبول بودنURL آن كنترل ميشود.
<?php $url = "https://www.w3schools.com"; // Remove all illegal characters from a url $url = filter_var($url, FILTER_SANITIZE_URL); // Validate url if (!filter_var($url, FILTER_VALIDATE_URL) === false) { echo("$url is a valid URL"); } else { echo("$url is not a valid URL"); } ?>