اعتبار سنجی بی مزه php. اعتبار سنجی و پاکسازی داده ها با استفاده از PHP. ثبت قانون اعتبارسنجی خودتان

هنگام ساخت برنامه های تحت وب، مهم است که امنیت را جدی بگیرید، به خصوص زمانی که باید با به دست آوردن داده از کاربران سر و کار داشته باشید.

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

وقتی صحبت از اعتبارسنجی داده های کاربر می شود، می توان آن را در سمت مشتری (در مرورگر وب) یا در سمت سرور انجام داد.

پیش از این، اعتبار سنجی سمت مشتری فقط با استفاده از جاوا اسکریپت انجام می شد. اما همه چیز تغییر کرده است (یا تقریباً تغییر کرده است)، زیرا با کمک HTML5، اعتبارسنجی را می توان در مرورگر انجام داد، بدون نیاز به نوشتن اسکریپت های اعتبارسنجی پیچیده در جاوا اسکریپت.

اعتبار سنجی فرم با استفاده از HTML5

HTML5 یک مکانیسم نسبتاً قوی بر اساس ویژگی های برچسب زیر ارائه می دهد: نوع، الگو، و نیاز. با این ویژگی‌های جدید، می‌توانید برخی از قابلیت‌های اعتبارسنجی داده‌ها را در مرورگر بارگذاری کنید.

بیایید به این ویژگی ها نگاه کنیم تا بفهمیم چگونه می توانند به اعتبارسنجی فرم کمک کنند.

نوع ویژگی

این ویژگی نشان می دهد که کدام فیلد ورودی برای پردازش داده نمایش داده شود، برای مثال فیلد آشنا مانند

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

سعی کنید با مقادیر فیلد ایمیل در نسخه نمایشی زیر بازی کنید.

انواع فیلدهای استاندارد دیگری نیز وجود دارد، مانند، و برای اعتبارسنجی اعداد، URL ها و شماره تلفن ها، به ترتیب.

توجه: به دلیل تفاوت در تعداد ارقام در شماره تلفن و تفاوت در قالب، فرمت شماره تلفن از کشوری به کشور دیگر متفاوت است. در نتیجه، مشخصات الگوریتمی برای بررسی شماره تلفن ها تعریف نمی کند، بنابراین در زمان نوشتن این ویژگی توسط مرورگرها پشتیبانی ضعیفی می شود.

خوشبختانه برای ما، اعتبار سنجی شماره تلفن را می توان با استفاده از ویژگی الگو انجام داد، که یک عبارت منظم را به عنوان آرگومان می گیرد، که در ادامه به بررسی آن خواهیم پرداخت.

ویژگی الگو

ویژگی الگو به احتمال زیاد باعث می شود که بسیاری از توسعه دهندگان فرانت اند از خوشحالی بپرند. این ویژگی یک عبارت منظم (مشابه فرمت عبارت منظم جاوا اسکریپت) را می پذیرد که برای بررسی صحت داده های وارد شده در فیلد استفاده می شود.

عبارات منظم زبانی است که برای تجزیه و دستکاری متن استفاده می شود. آنها اغلب برای عملیات پیچیده یافتن و جایگزینی و همچنین برای بررسی صحت داده های وارد شده استفاده می شوند.

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

عبارات منظم (RegEX) ابزاری قدرتمند، مختصر و منعطف برای تطبیق یک رشته متن، مانند کاراکترها، کلمات، یا الگوهای کاراکتر است.

با ارسال یک عبارت منظم به عنوان مقدار ویژگی الگو، می توانید تعیین کنید که چه مقادیری برای یک فیلد ورودی معین قابل قبول است و همچنین کاربر را در مورد خطاها مطلع کنید.

بیایید به چند نمونه از استفاده از عبارات منظم برای تأیید ارزش فیلدهای ورودی نگاه کنیم.

شماره تلفن ها

همانطور که قبلا ذکر شد، نوع فیلد tel به دلیل ناهماهنگی در فرمت شماره تلفن در کشورهای مختلف، به طور کامل توسط مرورگرها پشتیبانی نمی شود.

به عنوان مثال، در برخی کشورها فرمت شماره تلفن xxxx-xxx-xxxx است و خود شماره تلفن چیزی شبیه به این خواهد بود: 0803-555-8205.

عبارت منظمی که این الگو با آن مطابقت دارد این است: ^\d(4)-\d(3)-\d(4)$. در کد این را می توان به صورت زیر نوشت:

شماره تلفن:

مقادیر الفبای عددی ویژگی مورد نیاز است

این یک ویژگی Boolean است که برای نشان دادن اینکه مقدار یک فیلد داده شده باید برای ارسال فرم پر شود استفاده می شود. هنگامی که این ویژگی را به یک فیلد اضافه می کنید، مرورگر از کاربر می خواهد که قبل از ارسال فرم، این فیلد را پر کند.

این ما را از اجرای اعتبار سنجی فیلد با استفاده از جاوا اسکریپت نجات می دهد، که می تواند مدتی در زمان توسعه دهندگان صرفه جویی کند.

به عنوان مثال: یا (برای سازگاری با XHTML)

تمام دموهایی که در بالا مشاهده کردید از ویژگی مورد نیاز استفاده می کنند، بنابراین می توانید با تلاش برای ارسال فرم بدون پر کردن هیچ فیلدی، آن را امتحان کنید.

نتیجه

پشتیبانی مرورگر برای اعتبارسنجی فرم بسیار خوب است و برای مرورگرهای قدیمی می توانید از polyfills استفاده کنید.

شایان ذکر است که تکیه بر اعتبارسنجی سمت مرورگر به تنهایی خطرناک است، زیرا این بررسی ها را می توان به راحتی توسط مهاجمان یا ربات ها دور زد.

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

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

درباره این اسکریپت اعتبار سنجی فرم عمومی PHP

این اسکریپت اعتبارسنجی فرم PHP عمومی، افزودن اعتبارسنجی به فرم شما را بسیار آسان می کند.

ما مجموعه‌ای از «توصیف‌گرهای اعتبارسنجی» را با هر عنصر در فرم ایجاد و مرتبط می‌کنیم. "توصیف کننده اعتبار سنجی" رشته ای است که نوع اعتبار سنجی را مشخص می کند. به عنوان مثال، "req" به معنای مورد نیاز، "alpha" به معنای مجاز کردن فقط حروف الفبا و غیره است.

هر فیلد در فرم می تواند صفر، یک یا چند اعتبار داشته باشد. به عنوان مثال، ورودی نباید خالی باشد، باید کمتر از 25 کاراکتر باشد، باید عددی و غیره باشد.

می توانید مجموعه ای از توصیفگرهای اعتبار سنجی را برای هر فیلد ورودی در فرم مرتبط کنید.

اسکریپت اعتبار سنجی فرم PHP را دانلود کنید

می توانید اسکریپت اعتبار سنجی فرم PHP را در زیر دانلود کنید:
فایل فشرده حاوی اسکریپت اعتبار سنجی فرم formvalidator.php، اسناد و نمونه های استفاده است.

با استفاده از اسکریپت اعتبار سنجی فرم PHP
  • فرمvalidator.php را در اسکریپت پردازش فرم خود قرار دهید
  • require_once "formvalidator.php"
  • یک شی FormValidator ایجاد کنید و توصیفگرهای اعتبارسنجی فرم را اضافه کنید.
  • $validator = new FormValidator(); $validator->addValidation("Name","req","لطفا نام را پر کنید"); $validator->addValidation("ایمیل"،"ایمیل"، "ورودی ایمیل باید یک مقدار ایمیل معتبر باشد"); $validator->addValidation("ایمیل"،"req"،"لطفا ایمیل را پر کنید");

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

  • با فراخوانی تابع ValidateForm() فرم را اعتبارسنجی کنید
  • if(!$validator->ValidateForm()) ( echo "خطاهای اعتبارسنجی:"؛ $error_hash = $validator->GetErrors(); foreach($error_hash as $inpname => $inp_err) (echo "

    $inpname: $inp_err

    \n"؛ ) ) مثال

    مثال زیر این ایده را واضح تر می کند

    نام: ایمیل:

    افزودن اعتبار سنجی سفارشی

    اگر می خواهید یک اعتبارسنجی سفارشی اضافه کنید که توسط توصیفگرهای اعتبار سنجی ارائه نشده است، می توانید این کار را انجام دهید. در اینجا مراحل انجام می شود:

  • یک کلاس برای اعتبارسنجی سفارشی ایجاد کنید و تابع DoValidate() را لغو کنید
  • کلاس MyValidator CustomValidator را گسترش می دهد ( تابع DoValidate(&$formars,&$error_hash) ( if(stristr($formars["Comments"],"http://")) ($error_hash["Comments"]="هیچ URL مجاز نیست در نظرات"؛ بازگشت نادرست؛ ) بازگشت درست؛ ))

  • شی اعتبارسنجی سفارشی را اضافه کنید
  • $validator = new FormValidator(); $validator->addValidation("Name","req","لطفا نام را پر کنید"); $validator->addValidation("ایمیل"،"ایمیل"، "ورودی ایمیل باید یک مقدار ایمیل معتبر باشد"); $validator->addValidation("ایمیل"،"req"،"لطفا ایمیل را پر کنید"); $custom_validator = جدید MyValidator(); $validator->AddCustomValidator($custom_validator);

    تابع اعتبار سنجی سفارشی پس از اعتبارسنجی های دیگر به طور خودکار فراخوانی می شود.

    جدول توصیفگرهای اعتبارسنجی

    در اینجا لیستی از تمام توصیفگرهای اعتبار سنجی آمده است:

    توصیف کننده اعتبارسنجیاستفاده
    قیاسفیلد نباید خالی باشد
    مکسلن=؟؟؟طول داده های وارد شده را به حداکثر بررسی می کند. به عنوان مثال، اگر حداکثر اندازه مجاز 25 است، توصیف کننده اعتبار سنجی را "maxlen=25" قرار دهید.
    مینلن=؟؟؟طول رشته وارد شده را به حداقل مورد نیاز بررسی می کند. مثال "minlen=5"
    سال تحصیلیاگر داده‌ها شامل نویسه‌های دیگری غیر از حروف الفبا یا عددی هستند، بررسی کنید
    alnum_sفقط حروف الفبا، عددی و فاصله را مجاز می کند
    تعدادداده های عددی را بررسی کنید
    آلفاداده های حروف الفبا را بررسی کنید.
    alpha_sداده های حروف الفبا را بررسی کنید و فاصله ها را مجاز کنید.
    پست الکترونیکفیلد یک فیلد ایمیل است و اعتبار داده ها را تأیید کنید.
    lt=؟؟؟
    کمتر از=؟؟؟
    بررسی کنید که داده ها کمتر از مقدار ارسال شده باشد. فقط برای فیلدهای عددی معتبر است.
    به عنوان مثال: اگر مقدار باید کمتر از 1000 باشد، شرح اعتبار را به عنوان "lt=1000" ارائه دهید.
    gt=؟؟؟
    بزرگتر=؟؟؟
    بررسی کنید که داده ها بیشتر از مقدار ارسال شده باشد. فقط برای فیلدهای عددی معتبر است.
    به عنوان مثال: اگر مقدار باید بزرگتر از 10 باشد، شرح اعتبار سنجی را به صورت "gt=10" ارائه دهید.
    regexp=؟؟؟با یک عبارت منظم بررسی کنید که مقدار باید با عبارت منظم مطابقت داشته باشد.
    به عنوان مثال: "regexp=^(1.20)$" حداکثر 20 نویسه الفبا را مجاز می کند.
    dontselect=??این توصیفگر اعتبارسنجی برای اقلام ورودی انتخابی (فهرست) است به طور معمول، جعبه های فهرست انتخابی دارای یک آیتم با عبارت «انتخاب یکی» هستند. کاربر باید گزینه ای غیر از این گزینه را انتخاب کند. اگر مقدار این گزینه "Select One" باشد، توضیحات اعتبار باید "dontselect=Select One" باشد.
    dontselectchkاین توصیف کننده اعتبار برای چک باکس ها است. کاربر نباید کادر مشخص شده را انتخاب کند. مقدار تیک باکس را به جای ??
    مثلا dontselectchk=on
    shouldselchkاین توصیف کننده اعتبار برای چک باکس ها است. کاربر باید چک باکس داده شده را انتخاب کند. مقدار تیک باکس را به جای ??
    مثلا shouldselchk=on
    dontselectradioاین توصیف کننده اعتبار برای دکمه های رادیویی است. کاربر نباید دکمه رادیویی داده شده را انتخاب کند. مقدار دکمه رادیویی را به جای ??
    مثلا dontselectradio=NO
    انتخاب رادیواین توصیف کننده اعتبار برای دکمه های رادیویی است. کاربر باید دکمه رادیویی داده شده را انتخاب کند. مقدار دکمه رادیویی را به جای ??
    مثلا selectradio=yes
    سلمین=؟؟حداقل n تعداد چک باکس را از یک گروه چک انتخاب کنید.
    به عنوان مثال: selmin=3
    تنهاگروه رادیویی را اجباری می کند. کاربر باید حداقل یک مورد را از گروه رادیویی انتخاب کند.
    eqelmnt=؟؟؟دو عنصر را در فرم مقایسه کنید و مطمئن شوید که مقادیر یکسان هستند، به عنوان مثال، "رمز عبور" و "تأیید رمز عبور". عوض کن ؟؟؟ با نام عنصر ورودی دیگر.
    به عنوان مثال: eqelmnt=confirm_pwd

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

    ثانیاً، داده های تأیید نشده، در صورت نادرست بودن، می توانند باعث عملکرد ناپایدار اسکریپت، سیستم یا کل سرور شود. بنابراین، همه داده ها نیاز به بررسی و بررسی مجدد دارند؛ شاید کسی بگوید که نیازی به پارانویای بیش از حد نیست، اما من معتقدم که در این مورد به سادگی نمی توان زیاده روی کرد.

    به هیچ بهانه ای و تحت هیچ شرایطی به داده های دریافتی از کاربران اعتماد نکنید. این اتفاق می افتد که ما برای نوشتن کدی که یک بار دیگر داده های دریافتی را بررسی می کند بسیار تنبل هستیم یا امیدواریم که روش های تأیید موجود کافی باشد و در نتیجه به خودمان امتیاز می دهیم.

    کمی انحراف از موضوع:
    کار بر روی پروژه ها، توسعه و برنامه نویسی وب سایت ها، اسکریپت ها و سیستم های دیگر تقریباً تمام وقت آزاد من را می گیرد (علاوه بر زمان کار)، به عبارت دیگر، من این کار را برای حداکثر ساعات ممکن در روز انجام می دهم. هر از گاهی نیاز به آزمایش چیزی وجود دارد، برای سرگرمی یا فقط کنجکاوی. در نتیجه، سایت‌هایی که با عجله و با استفاده از موتورهای خانگی یا CMS نسخه‌های باستانی ساخته شده‌اند، به موش‌های آزمایشگاهی مشابه تبدیل می‌شوند. البته، همه موارد فوق از کدهای اشتباه نوشته شده، عدم کنترل داده ها رنج می برند و به سادگی مملو از باگ های مختلف هستند. در واقع، در بیشتر موارد، در یک ساعت آزمایش خود در چنین سایت‌هایی، چندین آسیب‌پذیری جدی را پیدا می‌کنم، و بیشتر آنها در تأیید ناکافی داده‌های دریافتی است. اخیراً، اغلب در اسکریپت هایی که داده های POST دریافت شده از JavaScript + Ajax را پردازش می کنند، یافت می شود.

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

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

    من فکر می کنم اهمیت اعتبار برای همه روشن است. برای مدت طولانی، هر بار یک کد یکسان را می نوشتم، سپس از توابع تأیید اطلاعات خودم استفاده می کردم، که بسیاری از آنها بسیار ابتدایی بودند و معمولاً در بخش های مختلف فایل ها (شامل) پراکنده بودند. به زودی شروع به آشنایی با فریمورک های PHP Zend, CI, Kohana کردم که هر کدام کلاس خود را برای اعتبارسنجی داده هایی که برای پروژه هایم قرض گرفته بودم پیاده سازی کردند. در نهایت تصمیم گرفتم یکی از کلاس های CI را مطابق با نیازهای خود تنظیم کنم، اما معلوم شد که نویسنده یکی از وبلاگ های برنامه نویسی قبلاً به این موضوع توجه کرده است. در مرحله بعد، من کارهای او را به اشتراک می گذارم، یعنی کتابخانه CodeIgniter اصلاح شده.

    بیایید به کد زیر نگاه کنیم:

    مشاهده کد PHP

    require_once "validator.class.php" ; $validator = new Validator() ; $validator -> set_rules ("name" , "نام شما" , array ("required" => , "alpha" => ) ); $validator -> set_rules ("email" , "ایمیل شما" , array ("required" => "Field %s مورد نیاز است" , "valid_email" => ) ) ; if ($validator -> run () ) ( echo "Validation موفقیت آمیز بود" ؛ ) else (echo $validator -> get_string_errors () ;)

    همانطور که از مثال می بینید، در خط اول فایل کلاس را قرار می دهیم validator.calss.phpبه فیلمنامه ما بعد، یک نمونه از کلاس ایجاد می کنیم و شی را در یک متغیر ذخیره می کنیم اعتبارسنجی $.
    سپس با استفاده از روش $validator->set_rules($field، $label، $rules)فیلدها را برای اعتبار سنجی تنظیم کنید.

    این روش 3 پارامتر دارد:

  • فیلد $- نام فیلد اعتبارسنجی (مقدار ویژگی نام در تگ)
  • $label- نام فیلد اعتبارسنجی، در پیام های خطا درج خواهد شد
  • قوانین $- آرایه ای از قوانین اعتبارسنجی، که در آن قانون اعتبارسنجی به عنوان کلید، و پیام خطای این قانون به عنوان مقدار استفاده می شود.
  • پس از تنظیم تمام فیلدهای اعتبارسنجی، اعتبارسنجی را با استفاده از روش راه اندازی می کنیم $validator->run(). اگر اعتبارسنجی موفقیت آمیز بود، این روش مقدار را برمی گرداند درست است، واقعی، در غیر این صورت در صورت وجود هرگونه خطایی، برمی گردد نادرست.

    سه روش برای دریافت پیام های خطا وجود دارد:

  • get_string_errors()- تمام پیام های خطا را به صورت رشته ای برمی گرداند
  • get_array_errors()— همه پیام ها را به صورت آرایه ای برمی گرداند، جایی که نام فیلد به عنوان کلید و شرح خطا برای این فیلد به عنوان مقدار استفاده می شود.
  • form_error ($field)- یک پیام خطا برای فیلد ارسال شده به عنوان پارامتر فیلد $ برمی گرداند
  • به طور پیش فرض، پیام های خطا در یک برچسب پیچیده می شوند . برای تنظیم طرح خود، از روش استفاده کنید set_error_delimiters ($پیشوند، $پسوند). به عنوان مثال مانند این:

    اکنون پیام های خطا به صورت ظاهر می شوند بخشبا کلاس "خطا"

    همانطور که می بینید، همه چیز بسیار ساده است.

    مشاهده کد PHP

    $validator -> set_error_delimiters ( " " , " " );

    برای تنظیم قوانین اعتبارسنجی، می توانید از روش استفاده کنید set_rules ($fields)ارسال یک آرایه انجمنی چند بعدی بیایید به یک مثال نگاه کنیم:

    مشاهده کد PHP

    $rules = array ( array ( "field" => "name", "label" => "نام شما" , "rules" => array ( "required" => "Field %s مورد نیاز است" , "alpha" = > "فیلد %s باید فقط شامل حروف باشد" ) , array ( "field" => "email" , "label" => "ایمیل شما" , "rules" => array ( "required" => "Field %s is is الزامی است" , "valid_email" => "فیلد %s باید حاوی آدرس ایمیل معتبر باشد" ) ) ) ; $validator -> set_rules ($rules ) ;

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

    بنابراین، این کلاس از چه قوانین اعتبارسنجی پشتیبانی می کند؟

    من رایج ترین قوانین اعتبارسنجی را که همه با آن مواجه می شوند به این کلاس آوردم. در اینجا لیست کاملی از این قوانین آمده است:

    ضروریاگر فیلد خالی باشد FALSE را برمی‌گرداند
    عدد صحیحاگر مقدار یک عدد صحیح نباشد FALSE را برمی‌گرداند
    شناوراگر مقدار یک مقدار عددی نباشد، FALSE را برمی‌گرداند
    valid_urlاگر مقدار یک URL معتبر نباشد، FALSE را برمی‌گرداند
    ایمیل معتبراگر مقدار یک آدرس ایمیل معتبر نباشد، FALSE را برمی‌گرداند
    valid_ipاگر آدرس IP معتبر نباشد، FALSE را برمی‌گرداند
    مسابقاتاگر عنصر با مقدار عنصر فیلد دیگر مطابقت نداشته باشد، FALSE را برمی گرداند
    آلفااگر عنصر بیش از حروف باشد، FALSE را برمی‌گرداند
    valid_captchaاگر مقدار فیلد جلسه با مقدار فیلد فرم برابر نباشد، FALSE را برمی‌گرداند
    تاریخ معتبراگر عنصر دارای تاریخ نامعتبر باشد، FALSE را برمی‌گرداند

    اکثر این قوانین از فیلترهایی استفاده می کنند که در PHP 5 در دسترس قرار گرفتند.

    در صورت تمایل، همیشه می توانید مجموعه قوانین اعتبار سنجی را با افزودن توابع لازم به کلاس Validator گسترش دهید.

    برای بدست آوردن مقدار داده POST پردازش شده، از روش زیر استفاده کنید:

    مشاهده کد PHP

    به طور معمول، این روش برای پاک کردن فرم پس از پردازش موفقیت آمیز فرم نامیده می شود.

    عصر همگی بخیر (بیشتر شبیه شب - یادداشت سردبیر). امروز ما آن را کمی بهبود خواهیم داد. ابتدا بیایید یاد بگیریم که چگونه اعتبار سنجی فرم را در PHP انجام دهیم و برخی دستکاری های امنیتی را انجام دهیم.

    بنابراین، به کد زیر نگاه کنید و به تغییرات زیر و دلایل زیر برای تغییرات توجه کنید. تمام خطوط جدید را با رنگ هایلایت کردم.

    نام فیلدهای فرم تغییر کرده است. ممکن است بپرسید - لعنتی چرا به این نیاز داریم؟ ساده است، من به شما پاسخ خواهم داد. تا آنجا که من می دانم، برخی از ربات های اسپم سایت هایی را جستجو می کنند که به دنبال فرم ها هستند و آنها را بر اساس نام این فیلدها پر می کنند. در تئوری، اگر آنها یک مسابقه پیدا نکردند، به خانه می روند، چیزی که ما می خواهیم. البته، من فکر نمی‌کنم میزان این محافظت زیاد باشد، اما به ما آسیبی نمی‌زند، و اگر ایمیل‌های هرزنامه ۱ حرف کاهش پیدا کند، خوب خواهد بود =).

    بررسی اینکه آیا آدرس ایمیل به درستی وارد شده است یا خیر. خط 17 از عملگر elseif استفاده می کند که اگر جواب مثبت به ما برگرداند بررسی می شود، یعنی گفته باشد آدرس ایمیل اصلا وجود ندارد، یعنی وارد نشده است. در اینجا از تابع preg_match استفاده می کنیم که به ما امکان می دهد آدرس وارد شده را با آن مقایسه کنیم عبارت منظم. شاید بعداً به طور خلاصه در مورد عبارات منظم بنویسم، اما در حال حاضر ارزش آن را دارد که بدانیم یک عبارت منظم نوعی الگو ایجاد می کند که رشته ما در برابر آن بررسی می شود. و اگر در مورد ما، آدرس وارد شده با عبارت مطابقت نداشته باشد، دوباره یک خطا نمایش داده می شود. به عنوان مثال، در اینجا چند عبارت منظم دیگر وجود دارد:
    |^[-а-яе\s\.,;:\?!]+$|i- این عبارت منظم به شما امکان می دهد فقط از الفبای روسی و برخی از کاراکترها مانند فاصله، نقطه، کاما و غیره استفاده کنید.
    #http://[-a-z0-9_.]+[-a-z0-9_:@&?=+،.!/~*’%$]*\.(html?|php)#i– و این عبارت به شما امکان می دهد املای صحیح یک آدرس را در اینترنت بررسی کنید.

    در مرحله بعد، از عملگر else استفاده می کنیم، جایی که تمام کد ما برای ارسال نامه قبلاً منتقل شده است. می‌توانید قوانین تأیید را خودتان به هر میزانی ایجاد کنید، فقط اگر قوانین جدیدی را اضافه کنید، مانند بررسی یک آدرس ایمیل، و خوشحال خواهید شد.




    فرد تماس:



    تماس با ایمیل:



    پیام:






    به این ترتیب می‌توانید فرم‌های PHP خود را بدون متوسل شدن به هیچ چیز اضافی تأیید کنید. دفعه بعد در پستی با موضوع فرم ها فکر کنم اعتبار سنجی فرم ها در جی کوئری در نظر گرفته شود. در ضمن منتظر نظرات و خواسته های شما هستم. شب همگی بخیر و صبح بخیر =).

    این و فصل های بعدی نحوه استفاده از PHP برای اعتبارسنجی داده های فرم را نشان می دهد.

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

    هنگام پردازش فرم های PHP به امنیت فکر کنید!

    این صفحات نحوه پردازش فرم های PHP را با در نظر گرفتن امنیت نشان می دهند. اعتبارسنجی صحیح داده های فرم برای محافظت از فرم شما در برابر هکرها و هرزنامه ها مهم است!

    فرم HTML که در این فصل ها روی آن کار خواهیم کرد، شامل فیلدهای ورودی مختلف است: فیلدهای متنی ضروری و اختیاری، دکمه های رادیویی و یک دکمه ارسال:

    قوانین اعتبار سنجی فرم فوق به شرح زیر است:

    قوانین اعتبار سنجی فیلد
    نام ضروری. + فقط باید شامل حروف و فضای خالی باشد
    پست الکترونیک ضروری. + باید دارای یک آدرس ایمیل معتبر (با @ و .) باشد.
    سایت اینترنتی اختیاری. در صورت وجود، باید دارای یک URL معتبر باشد
    اظهار نظر اختیاری. فیلد ورودی چند خطی (textarea)
    جنسیت ضروری. باید یکی را انتخاب کرد

    ابتدا به کد HTML ساده برای فرم نگاه می کنیم:

    فیلدهای متنی

    فیلدهای نام، ایمیل و وب سایت عناصر ورودی متن هستند و فیلد نظر یک ناحیه متنی است. کد HTML به شکل زیر است:

    نام:
    پست الکترونیک:
    سایت اینترنتی:
    اظهار نظر:

    دکمه های رادیویی

    فیلدهای جنسیت دکمه های رادیویی هستند و کد HTML به شکل زیر است:

    جنسیت:
    زن
    نر
    دیگر

    عنصر فرم

    کد HTML فرم به صورت زیر است: