اعتبارسنجی فرم‌ها در PHP

php form validation
20 آبان 1403

زمانی که در حال طراحی یک سایت هستید، اعتبارسنجی فرم‌ها یکی از مواردی است که باید به دقت به آن توجه کنید. این فرایند به شما کمک می‌کند تا اطلاعات ورودی کاربر را بررسی کنید و از صحت و درستی آن‌ها مطمئن شوید. اعتبارسنجی فرم معمولاً شامل چک کردن فیلدها جهت اطمینان از اینکه کاربر همه اطلاعات مورد نیاز را وارد کرده و قالب‌های خاصی مانند ایمیل یا شماره تلفن را رعایت کرده است.

در PHP، اعتبارسنجی فرم می‌تواند به دو صورت انجام شود: اعتبارسنجی در سمت سرور و اعتبارسنجی در سمت کلاینت. اعتبارسنجی در سمت سرور با استفاده از زبان PHP انجام می‌شود و به دلیل بررسی اطلاعات در سرور، نسبت به اعتبارسنجی سمت کاربر که با زبان JavaScript انجام می‌شود، امن‌تر است.

از فرآیندهای معمول در اعتبارسنجی فرم‌ها می‌توان به عدم پذیرش فیلدهای خالی، اطمینان از تطابق داده‌های وارد شده با الگوهای مشخص، و بررسی طول فیلدها اشاره کرد. یکی از موارد بسیار متداول پردازش ایمیل کاربر است که باید از صحت ساختاری آن اطمینان حاصل شود چرا که می‌تواند برای ارسال اطلاعات و یا دسترسی‌های بیشتر مهم باشد.

الآن می‌خواهیم یک مثال ساده از یک فرم ثبت‌نام در PHP را نشان دهیم تا با نحوه اعتبارسنجی اطلاعات ورودی کاربران با استفاده از PHP بیشتر آشنا شویم. این مثال شامل فیلدهای نام، ایمیل و یک پیام خواهد بود که هر کدام از این فیلدها باید اعتبارسنجی شوند.

اعتبارسنجی فرم به کاربران کمک می‌کند تا بدون اشتباهات معمول در فرم‌ها، اطلاعات مورد نظر خود را سریع‌تر و مطمئن‌تر به ثبت برسانند و از طرف دیگر برنامه‌نویسان را نیز از بروز خطاها و حملات احتمالی محافظت می‌کند.


    <?php
    // define variables and set to empty values
    $name = $email = $message = "";
    $nameErr = $emailErr = $messageErr = "";

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        if (empty($_POST["name"])) {
            $nameErr = "Name is required";
        } else {
            $name = test_input($_POST["name"]);
        }
        
        if (empty($_POST["email"])) {
            $emailErr = "Email is required";
        } else {
            $email = test_input($_POST["email"]);
            if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                $emailErr = "Invalid email format";
            }
        }
        
        if (empty($_POST["message"])) {
            $messageErr = "Message is required";
        } else {
            $message = test_input($_POST["message"]);
        }
    }

    function test_input($data) {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }
    ?>
    

<?php: شروع اسکریپت PHP را نشان می‌دهد.
$name = $email = $message = "";: متغیرها را برای ذخیره اطلاعات ورودی و خطاها تعریف و خالی می‌کند.
if ($_SERVER["REQUEST_METHOD"] == "POST"): بررسی می‌کند که آیا فرم ارسال شده است یا نه.
empty($_POST["name"]): چک می‌کند که آیا فیلد نام خالی است یا خیر.
test_input(): تابعی برای پاکسازی داده‌های ورودی برای افزایش امنیت استفاده می‌شود.
filter_var($email, FILTER_VALIDATE_EMAIL): از فرمول PHP برای اعتبارسنجی ایمیل استفاده می‌کند.

سوالات متداول

؟

چرا باید فرم‌های PHP را اعتبارسنجی کنم؟

؟

تفاوت بین اعتبارسنجی سمت سرور و سمت کلاینت چیست؟

؟

آیا می‌توانم از کتابخانه‌های آماده برای اعتبارسنجی فرم استفاده کنم؟