۱۳۹۶ فروردین ۲۴, پنجشنبه

فصل 5-نکاتی درباره طراحی و برنامه نویسی فرم.

در طراحی فرم و فرم ایمیل چه نکاتی مهم است؟

در این بخش از کتابی که توسط آقای امیر احسان رضائی ترجمه شده نکاتی را می نویسم:

  1. با وجود استفاده از جاوااسکریپت برای بررسی سمت کاربر حتما باید در سمت سرور نیز فرم کنترل و بررسی شود.
  2. در تگهای فرم خاصیت name هر مقداری بگیرد آن مقدار بصورت ایندکس آرایه POST یا GET قابل دسترسی است.
  3. علاوه بر آرایه 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;
            }
        }
    }
    
    
  4. برای پاس دادن متغیر به عنصر فرم باید متغیر را  با استفاده ار تابع  htmlentities به خاصیت value عنصر بدهیم؛ تا اگر کاربر در فرم کاراکترهای خاصی نظیر کاراکتر کوتیشن " را وارد کرد آنها را به کاراکترهای معادل تبدیل کند تا اخلال در کد PHP رخ ندهد.
    
    <input name="email" id="email" type="text"
    <?php if ($missing || $errors) {
    echo 'value="' . htmlentities($email) . '"';
     } ?>>
    
    

  5. حذف خطرها: برای جلوگیری از ارسال اسپم از فرم تماس باید 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
ناشر: مهرگان قلم

هیچ نظری موجود نیست: