در طراحی فرم و فرم ایمیل چه نکاتی مهم است؟
در این بخش از کتابی که توسط آقای امیر احسان رضائی ترجمه شده نکاتی را می نویسم:
- با وجود استفاده از جاوااسکریپت برای بررسی سمت کاربر حتما باید در سمت سرور نیز فرم کنترل و بررسی شود.
- در تگهای فرم خاصیت name هر مقداری بگیرد آن مقدار بصورت ایندکس آرایه POST یا GET قابل دسترسی است.
- علاوه بر آرایه required از آرایه expected استفاده میشود تا مانع حمله تزریق در آرایه POST شوند. یعنی باید تمام عناصر فرم را در آرایه expected قرار دهیم.
$errors = []; $missing = []; // check if the form has been submitted if (isset($_POST['send'])) { // email processing script $to = 'david@example.com'; $subject = 'Feedback from Japan Journey'; // list expected fields $expected = ['name', 'email', 'comments', 'subscribe', 'interests', 'howhear', 'characteristics', 'terms']; $required = ['name', 'comments', 'email', 'subscribe', 'interests', 'howhear', 'characteristics', 'terms'];
if (!$suspect) { foreach ($_POST as $key => $value) { // assign to temporary variable and strip whitespace if not an array $temp = is_array($value) ? $value : trim($value); // if empty and required, add to $missing array if (empty($temp) && in_array($key, $required)) { $missing[] = $key; ${$key} = ''; } elseif (in_array($key, $expected)) { // otherwise, assign to a variable of the same name as $key ${$key} = $temp; } } }
- برای پاس دادن متغیر به عنصر فرم باید متغیر را با استفاده ار تابع htmlentities به خاصیت value عنصر بدهیم؛ تا اگر کاربر در فرم کاراکترهای خاصی نظیر کاراکتر کوتیشن " را وارد کرد آنها را به کاراکترهای معادل تبدیل کند تا اخلال در کد PHP رخ ندهد.
<input name="email" id="email" type="text" <?php if ($missing || $errors) { echo 'value="' . htmlentities($email) . '"'; } ?>>
- حذف خطرها: برای جلوگیری از ارسال اسپم از فرم تماس باید content-type و Cc و Bcc توسط الگوی جستجو یا عبارت منظم Regular Expression سنجش شود.الگوی جستجو درون یک جفت اسلش قرار می گیرد و i بعد از اسلش آخر باعث میشود الگو به بزرگی و کوچکی حروف حساس نباشد.
$pattern = '/Content-Type:|Bcc:|Cc:/i';
تابع بررسی عبارتهای مشکوک:
// assume nothing is suspect $suspect = false; // create a pattern to locate suspect phrases $pattern = '/Content-Type:|Bcc:|Cc:/i'; // function to check for suspect phrases function isSuspect($val, $pattern, &$suspect) { // if the variable is an array, loop through each element // and pass it recursively back to the same function if (is_array($val)) { foreach ($val as $item) { isSuspect($item, $pattern, $suspect); } } else { // if one of the suspect phrases is found, set Boolean to true if (preg_match($pattern, $val)) { $suspect = true; } } } // check the $_POST array and any subarrays for suspect content isSuspect($_POST, $pattern, $suspect);
این پست تکمیل خواهد شد
منبع:
کتاب: آموزش کاربردی php 5.6
نویسنده: David Powers
مترجم: امیر احسان رضائی
شابک: 9786006236773
ناشر: مهرگان قلم
هیچ نظری موجود نیست:
ارسال یک نظر