خب معمولا اطلاعاتی که توسط کاربر به پیج ها فرستاده میشه درقالب فرم هستند.این اطلاعات با دو متد میتونن فرستاده بشن یکی GET و دیگری POST.به مثال زیر دقت کنید:
<body> <form method="GET"> <label>name:</label> <input type="text" name="name"> <input type="submit" name="submit"> </form> </body>
میخوایم بگیم که کاربر نامشو وارد کرد همون نام رو نمایش بده.تا اینجا فرم ورود اطلاعاتمونو ساختیم.حالا میخوایم بگیم اطلاعات رو نمایش بده.اینجا فرق بین GET و POST رو متوجه میشیم.
<?php if (isset ($_GET ['sub'])) { echo $_GET ['name']; } ?>
خب همونطور که میبینید بعدار فشردن دکمه submit اطلاعات که همان نام هست نمایش داده میشود.کاری که توی get اتفاق میوفته اینه که اطلاعات رو توی url هم نمایش میده و یکم امنیتش میاد پایین چون اطلاعات رو نمایش میده.معمولا کاربر بیش از ۲۰۰۰ تا کاراکتر نمیتونه بفرسه.ولی یه خوبی که نسبت به post داره اینه که برای پیج هایی که میخوایم کاربر بتونه bookmark کنه معمولا از get استفاده میکنیم.ولی post این اطاعات رو توی url نمایش نمیده و امنیتشم به مراتب بالاتره..
حالا این اطلاعاتی که وارد میشن باید توی یه مرحله اعتبارسنجی بشن و اینکه مطمعن بشیم که اطلاعاتی که کاربر میفرسته درسته,سالمه,اشکال هایی که دارن برطرف بشه ,اگه ناقص هستن کامل بشن.php واسه این کار چندتا تابع داره که اینجا به چند مورد از آنها اشاره میکنیم:
تابع ()trim
یکی از این تابع ها ()trim هست.این تابع میاد space های بیش از یکی رو حذف میکنه.مثلا اگر بین کاراکتر هامون ۳تا space باشه ۲تا رو حذف میکنه و یکی رو میذاره.به عنوان مثال:
<?php if (isset ($_POST ['sub'])) { $name =$_POST ['name']; $name = trim ($name); echo $_POST ['name']; } ?>
در اینجا تابع ()trim میاد space های بیشتر از یکی بین داده های ورودی رو حذف میکنه.
تابع stripslashes:
این تابع کاراکتر های / را حذف میکند.
تابع htmlspacialchars:
این تابع کاراکترهای مربوط به تگ html را به کد اسکی تبدیل می کند تا مرورگر آنها را اجرا نکند به مثال زیر توجه کنید.
<?php function cleanData($data) { $data= trim ($data); $da= stripcslashes ($data); $da=htmlspecialchars ($data); return $data; } ?>
تابع Filter_var:
این تابع دو پارامتر ورودی دارد پارامتر اول نام متغیر یا مقداری است که قرار است اعتبار سنجی شود و پارامتر دوم نام یکی از فیلترهای از پیش تعریف شده در php می باشد.ساده ترین و امن ترین روش برای چک کردن فرمت صحیح آدرس ایمیل در پی اچ پی استفاده از تابع ()
filter_var
است. با استفاده از کد زیر بررسی کرده ایم که اگر ایمیل دارای فرمت صحیح نیست، پیام خطای مربوطه در متغیر خطا ذخیره شود :
filter_var(vaiable,filter);
<?php $email = test_input($_POST["email"]); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Invalid email format"; }?>
فیلترهای اعتبارسنجی تابع filter_var
بررسی ایمیل معتبر |
Filter_validate_email |
بررسی آدرس اینترنتی معتبر |
Filter_validate_url |
بررسی یک مقدار معتبر برای آی پی |
Filter_validate_ip |
در صورتی که ورودی های “1“,”yes”,”true”,”on” باشد true برمیگرداند. |
Filter_validate_Boolean |
بررسی اعداد اعشاری |
Filter_validate_Float |
بررسی اعداد صحیح |
Filter_validate_int |
بررسی مک آدرس |
Filter_validate_mac |
فیلترهایsanitize تابع filter_var
همه کاراکترها به جز حروف ها،ارقام و !#$٪و..راحذف میکند. |
Filter_Sanitize_email |
اگر در یک لینک حروف فارسی وجود داشته باشد آنها را ENCODE میکند. |
Filter_Sanitize_Encoded |
تمام حروف را حذف میکند از یک داده به جز اعداد و علامت های مثبت و منفی. |
Filter_Sanitize_number_int |
تمام حروف را حذف میکند از یک داده به جز اعداد و علامت های مثبت و منفی. |
Filter_Sanitize_number_float |
تگ های html و همچنین علامت های <>را حذف میکند و فقط یک رشته به ما میدهد. |
Filter_Sanitize_string |
یه نوع اعتبارسنجی دیگه داریم که ما میتونیم تعیین کنیم که کاربر چه حروفی رو میتونه وارد کنه و چه حروفی رو نمیتونه وارد کنه که در ادامه به آن میپردازیم:
عبارات با قاعده Regular Expresion:
در لغت به معنای عبارات با قاعده می باشد و به صورت مخفف به آن Regex گفته میشود.
عبارات با قاعده روش ها و قواعدی هستند که برای استخراج و برسی وجود قسمت یا توالی خاصی از یک مقدار متنی یا عددی به کار میروند.این عبارات بر اساس قوانین خاصی نوشته می شوند که به برسی آنها میپردازیم:
قواعد:
حداقل یک کاراکتر p |
P+ |
0 یا بیشتر کاراکتر p |
P* |
صفر یا یک کاراکتر p |
P? |
تعداد n کااکتر |
P{N} |
حداقل 2 و حداکثر3 کاراکتر p |
P{2,3} |
رشته ای که با کاراکتر p شروع میشود. |
^P |
رشته ای که با کاراکتر p پایان میابد. |
P$ |
هر کاراکتری |
. |
کاراکتر a یا b |
(a|b) |
هر کاراکتری به جز b ,a,c |
[^ABC] |
اعداد بین 0تا9 |
[0-9] |
حروف a تا z |
[a-z] |
حروف A تا Z (حروف بزرگ) |
[A-Z] |
مثال:
Aapmmm |
هر رشته ای که در داخل آن یک کاراکتر p و بعد از هر کاراکتری و مجددا کاراکتر p در آن باشد.
|
P.P |
!!ps |
رشته ای که دقیقا دو کاراکتر داشته باشد.
|
^.{2}$ |
Php |
هررشته ای که در آن p و به دنبال آن صفر یا بیشتر دنباله hp تکرار نشده باشد.
|
P(HP)* |
Ads Aas acs |
هر رشته ای که با a شروع شود بعد از آن یک کاراکتر از حروف a تا z بیاید و با کاراکتر s تمام شود.
|
^a[a-z]s$ |
برای استفاده از عبارات با قاعده درPHP از تابع PREG_MATCH استفاده میکنیم.کد زیر، یک روش ساده جهت چک کردن فرمت آدرس یا URL وارد شده توسط کاربر را نشان می دهد (الگو یا Regulare expression به کاررفته در این مثال، اجازه استفاده از اسلش / رابه کاربر می دهد). اگر آدرس صفحه یا URL وارد شده توسط کاربر، دارای فرمت صحیح نباشد، یک پیام خطا درمتغیر مربوطه ذخیره خواهد شد :
<?php $website = test_input($_POST["website"]); if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) { $websiteErr = "Invalid URL"; } ?>
فیلده های ضروری فرم در php
اعتبارسنجی درست اطلاعات وارد شده در فرم ها، بسیار مهم بوده و شما را از حمله هکرها و اسپمرها در امان نگه می دارد.فیلدهای ضروری REQUIRED FILDS، فیلدهایی هستند که حتما باید در یک فرم پر شوند.این فیلدها، همان فیلدهایی هستند که در هنگام پر کردن فرم ها در صفحات وب، در کنار آنها یک ستاره مشاهده می کنید.در جدول زیر فیلدهای ضروری ذکر شده است:
فیلد | قوانین |
---|---|
نام | الزامی است. فقط باید شامل حروف الفبا و خط فاصله باشد. |
ایمیل | الزامی است. باید شامل فرمت صحیح ایمیل باشد (همراه با علامت @ و .) |
وب سایت | اختیاری است. اگر پر شد، باید شامل فرمت صحیح URL باشد. |
توضیحات | اختیاری است. می تواند شامل چند خط متن باشد (textarea) |
جنسیت | الزامی است. یکی از دو مورد باید انتخاب شود. |
عدم رعایت هر کدام از موارد بالا در هنگام ورود اطلاعات، با پیغام خطا مواجه می شود.
این هم یک توضیح مختصر درمورد اعتبارسنجی فرم ها در php بود.امیدوارم مفید بوده باشد.
بدون دیدگاه