هیچ محصولی در سبد خرید نیست.

زیبل

فصل ۱۰: کنترل‌های پیشرفته فرم و اعتبارسنجی

فصل ۱۰: کنترل‌های پیشرفته فرم و اعتبارسنجی

فصل ۱۰: کنترل‌های پیشرفته فرم و اعتبارسنجی

فصل ۱۰: کنترل‌های پیشرفته فرم و اعتبارسنجی – حرفه‌ای شو! 😎

سلام به قهرمانان دنیای وب! بعد از ساخت فرم‌های ساده، وقتشه که حرفه‌ای‌تر بشیم و با کنترل‌های پیشرفته‌تر و مهم‌تر از همه، با “اعتبارسنجی” (Validation) آشنا بشیم. اعتبارسنجی یعنی اطمینان از اینکه اطلاعاتی که کاربر وارد می‌کنه، درست، کامل و مطابق با انتظار ماست.

فکر کنید فرم شما مثل یه نگهبان باشه که اطلاعات رو چک می‌کنه و فقط اطلاعات درست رو رد می‌کنه. اینجاست که اعتبارسنجی وارد عمل می‌شه!

۱. کنترل‌های پیشرفته فرم: فراتر از متن و رمز عبور! 📈

تا اینجا با text، password، radio و checkbox آشنا شدیم. حالا چند تا از گزینه‌های جذاب دیگه رو ببینیم:

type=”email”: برای ایمیل معتبر! 📧

این نوع ورودی، یه اعتبارسنجی اولیه برای فرمت ایمیل انجام می‌ده. مرورگر چک می‌کنه که آیا ورودی کاربر شبیه یه آدرس ایمیل هست یا نه (مثلاً حاوی “@” و “.” باشه).


<label for="user-email">ایمیل:</label>
<input type="email" id="user-email" name="user_email" placeholder="example@domain.com" required>

type=”number”: فقط اعداد! 🔢

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


<label for="quantity">تعداد:</label>
<input type="number" id="quantity" name="quantity" min="1" max="10" value="1">
<!--
  - min: حداقل مقدار مجاز
  - max: حداکثر مقدار مجاز
  - value: مقدار پیش‌فرض
-->

type=”date”: انتخاب تاریخ! 📅

یه تقویم کوچیک در اختیار کاربر قرار می‌ده تا به راحتی تاریخ مورد نظرش رو انتخاب کنه.


<label for="event-date">تاریخ رویداد:</label>
<input type="date" id="event-date" name="event_date">

type=”url”: برای آدرس وب! 🌐

شبیه type=”email”، این نوع هم فرمت آدرس وب رو بررسی می‌کنه (مثلاً باید با http:// یا https:// شروع بشه).


<label for="website">وب‌سایت:</label>
<input type="url" id="website" name="website" placeholder="https://www.example.com">

select و option: لیست کشویی! 🔽

وقتی تعداد زیادی گزینه دارید و نمی‌خواید همه رو نمایش بدید، از select استفاده می‌کنیم که یه لیست کشویی ایجاد می‌کنه. داخل select، هر گزینه با تگ option تعریف می‌شه.


<label for="country">کشور:</label>
<select id="country" name="country">
  <option value="" disabled selected>-- لطفا انتخاب کنید --</option> <!-- گزینه پیش‌فرض غیرفعال -->
  <option value="ir">ایران</option>
  <option value="us">آمریکا</option>
  <option value="ca">کانادا</option>
  <option value="de">آلمان</option>
</select>

خصوصیت selected: گزینه‌ای رو که باید به صورت پیش‌فرض انتخاب شده باشه، مشخص می‌کنه.

خصوصیت disabled: گزینه‌ای رو غیرفعال می‌کنه.

۲. اعتبارسنجی (Validation): نگهبان اطلاعات! 🛡️

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

الف) اعتبارسنجی سمت مرورگر (HTML5 Built-in Validation):

همونطور که دیدیم، HTML5 خصوصیت‌های زیادی برای اعتبارسنجی داره:

  • required: فیلد نباید خالی باشه.
  • min, max: حداقل و حداکثر مقدار (برای اعداد و تاریخ).
  • minLength, maxLength: حداقل و حداکثر تعداد کاراکتر.
  • pattern: استفاده از عبارات باقاعده (Regular Expressions) برای تطبیق با الگوهای خاص.
  • type=”email”, type=”url”, type=”number”: انواع ورودی که خودشون فرمت خاصی رو بررسی می‌کنن.

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

ب) اعتبارسنجی سمت سرور (Server-side Validation):

این مهم‌ترین نوع اعتبارسنجی است. چون کد سمت سرور (مثلاً PHP, Python, Node.js) روی سرور اجرا می‌شه و کاربر بهش دسترسی نداره، امن‌تره و قابل دور زدن نیست. شما باید همیشه اطلاعات دریافتی از فرم رو در سمت سرور هم مجدداً بررسی کنید.

مثال (با منطق PHP):


<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  // نام کاربر را بررسی می‌کنیم
  if (empty($_POST["contact_name"])) {
    $name_err = "نام الزامی است!";
    // اینجا پیام خطا را به کاربر نمایش می‌دهیم
  } else {
    $name = test_input($_POST["contact_name"]);
    // اینجا نام معتبر را استفاده می‌کنیم
  }

  // ایمیل کاربر را بررسی می‌کنیم
  if (empty($_POST["contact_email"])) {
    $email_err = "ایمیل الزامی است!";
  } else {
    $email = test_input($_POST["contact_email"]);
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $email_err = "فرمت ایمیل نامعتبر است!";
    }
  }
  // ... بررسی سایر فیلدها
}

function test_input($data) {
  $data = trim($data); // حذف فاصله‌های اضافی اول و آخر
  $data = stripslashes($data); // حذف بک‌اسلش‌ها
  $data = htmlspecialchars($data); // تبدیل کاراکترهای خاص به معادل HTML
  return $data;
}
?>

نکته: تابع test_input یه تابع کمکی ساده برای پاکسازی اولیه داده‌هاست. در برنامه‌های واقعی، کتابخانه‌ها و توابع پیچیده‌تری برای این کار استفاده می‌شه.

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

با تسلط بر این کنترل‌های پیشرفته و تکنیک‌های اعتبارسنجی، می‌تونید فرم‌هایی بسازید که هم زیبا، هم کاربردی و هم امن باشن. این مرحله، گامی مهم در تبدیل شدن شما به یک توسعه‌دهنده وب حرفه‌ایه! 🌟

مقالات مرتبط

پروژه نهایی: ترکیب تگ‌ها برای ساخت یک صفحه وب کامل

پروژه نهایی: ساخت یک صفحه وب کامل با تمام آموخته‌ها! 🥳 به آخرین بخش از سفر هیجان‌انگیز یادگیری HTML خوش اومدید! در این مرحله، قراره تمام تگ‌ها و مفاهیمی که تا اینجا یاد گرفتیم رو با هم ترکیب کنیم و...

معرفی مختصر استایل‌های درون خطی (Style Attribute)

استایل‌های درون خطی (Inline Styles): استایل‌دهی مستقیم! ✨ سلام دوستان عزیز! تا اینجا با روش‌های مختلفی برای استایل‌دهی به صفحات وب آشنا شدیم، مثل استایل‌های درون خطی (که امروز قراره بهش بپردازیم)، استایل‌های داخل تگ <style> و استایل‌های خارجی (فایل...

تگ‌های مخصوص کد و نقل قول

تگ‌های کد، نقل قول و اختصار: نشانه گذاری دقیق متن! 📝 سلام به همه! توی دنیای وب، گاهی اوقات لازمه که یه متن رو به عنوان یه کد نشون بدیم، یه نقل قول رو مشخص کنیم، یا یه اختصار رو...

تگ‌های جزئیات و خلاصه

تگ‌های جزئیات و خلاصه (<details> و <summary>): کنترل نمایش محتوا! 🧐 سلام دوستان! امروز می‌خوایم با دو تا تگ خیلی جالب و کاربردی آشنا بشیم: <details> و <summary>. این تگ‌ها به ما کمک می‌کنن تا بخشی از محتوای صفحه رو...

آخرین مقالات

کدهای تمیز: با متغیرها، CSS را هوشمند کنید! 💡

متغیرهای CSS (Custom Properties): کد تمیزتر، مدیریت راحت‌تر! 🎨 سلام به همگی! توی پروژه‌های CSS، خیلی وقتا پیش میاد که یه رنگ، یه فونت، یا یه فاصله رو بارها و بارها توی جاهای مختلف استفاده می‌کنیم. مثلاً رنگ اصلی سایت‌مون...

ساخت انیمیشن‌های حرفه‌ای با @keyframes (گام به گام)

CSS Animations: خلق انیمیشن‌های پیچیده با @keyframes! 🎬 سلام به همگی! تا الان با Transitionها آشنا شدیم که تغییرات بین دو حالت رو نرم می‌کنن. اما اگه بخوایم انیمیشن‌های پیچیده‌تر، چند مرحله‌ای، یا حتی انیمیشن‌هایی که مدام تکرار می‌شن رو...

دگرگونی سایت با CSS: چرخش، تغییر اندازه و جابجایی

CSS Transforms: جابجایی، چرخش، تغییر اندازه و کج کردن عناصر! 🤸‍♀️ سلام دوستان! تا اینجا با انیمیشن‌های نرم و پیوسته (Transitions) آشنا شدیم. اما گاهی وقت‌ها نیاز داریم که عناصر HTML رو جابجا کنیم، بچرخونیم، اندازه‌شون رو عوض کنیم یا...

انتقال‌های نرم: عناصر خود را متحرک کنید!

CSS Transitions: جادوی حرکت نرم و روان! ✨ سلام به همه! تا حالا شده یه سایت رو ببینید که با هاور کردن روی یه دکمه، رنگش نرم و قشنگ عوض می‌شه؟ یا با تغییر اندازه یه عنصر، انیمیشن ظریفی رو...