# ساخت یک اپلیکیشن بانکی قسمت ۲: ساخت فرم ورود و ثبتنام ```mermaid journey title سفر توسعه فرم شما section پایه HTML عناصر فرم را درک کنید: 3: Student انواع ورودی را بیاموزید: 4: Student تسلط بر دسترسیپذیری: 4: Student section ادغام JavaScript مدیریت ارسال فرم: 4: Student اجرای ارتباط AJAX: 5: Student پردازش پاسخهای سرور: 5: Student section سیستمهای اعتبارسنجی ایجاد اعتبارسنجی چندلایه: 5: Student بهبود تجربه کاربری: 5: Student اطمینان از صحت دادهها: 5: Student ``` ## پرسشنامه پیشدرس [پرسشنامه پیشدرس](https://ff-quizzes.netlify.app/web/quiz/43) تا به حال فرم آنلاینی را پر کردهاید و فرمت ایمیل شما رد شده است؟ یا بعد از کلیک روی ارسال، تمام اطلاعات خود را از دست دادهاید؟ همه ما این تجربههای ناامیدکننده را داشتهایم. فرمها پل ارتباطی بین کاربران شما و عملکرد برنامهتان هستند. درست مثل پروتکلهای دقیق کنترلکنندگان ترافیک هوایی که هواپیماها را ایمن به مقصد هدایت میکنند، فرمهای خوب طراحیشده بازخورد واضح ارائه میدهند و از خطاهای هزینهساز جلوگیری میکنند. فرمهای ضعیف اما میتوانند کاربران را سریعتر از یک سوتفاهم در یک فرودگاه شلوغ، دور کنند. در این درس، اپلیکیشن بانکی ایستا خود را به یک برنامه تعاملی تبدیل خواهیم کرد. خواهید آموخت چگونه فرمهایی بسازید که ورودیهای کاربر را اعتبارسنجی کنند، با سرورها ارتباط برقرار کنند و بازخورد مفید ارائه دهند. این مثل ساخت رابط کنترلی است که کاربران را در استفاده از امکانات برنامهتان هدایت میکند. تا پایان، یک سیستم کامل ورود و ثبتنام با اعتبارسنجی خواهید داشت که کاربران را به سمت موفقیت و نه ناامیدی راهنمایی میکند. ```mermaid mindmap root((توسعه فرم)) HTML Foundation Semantic Elements Input Types Accessibility Label Association User Experience Validation Feedback Error Prevention Loading States Success Messaging JavaScript Integration Event Handling AJAX Communication Data Processing Error Management Validation Layers HTML5 Validation Client-side Logic Server-side Security Progressive Enhancement Modern Patterns Fetch API Async/Await Form Data API Promise Handling ``` ## پیشنیازها قبل از شروع ساخت فرمها، بیایید مطمئن شویم همه چیز را درست آماده کردهاید. این درس از همان جایی که درس قبل را تمام کردیم ادامه میدهد، پس اگر جلوتر رفتهاید، شاید بخواهید ابتدا اصول اولیه را آماده کنید. ### تنظیمات مورد نیاز | جزء | وضعیت | توضیحات | |-----------|--------|-------------| | [قالبهای HTML](../1-template-route/README.md) | ✅ الزامی | ساختار پایه اپلیکیشن بانکی شما | | [Node.js](https://nodejs.org) | ✅ الزامی | محیط اجرایی جاوااسکریپت برای سرور | | [سرور بانک API](../api/README.md) | ✅ الزامی | سرویس پشتی برای ذخیرهسازی دادهها | > 💡 **نکته توسعه**: شما دو سرور جداگانه را همزمان اجرا خواهید کرد – یکی برای اپلیکیشن فرانتاند بانکی و دیگری برای API بکاند. این تنظیم شبیه توسعه واقعی است که خدمات فرانتاند و بکاند به صورت مستقل کار میکنند. ### پیکربندی سرور **محیط توسعه شما شامل:** - **سرور فرانتاند**: اپلیکیشن بانکی شما را سرو میکند (معمولاً پورت `3000`) - **سرور API بکاند**: دادهها را ذخیره و بازیابی میکند (پورت `5000`) - **هر دو سرور** میتوانند همزمان بدون تداخل اجرا شوند **آزمون اتصال API:** ```bash curl http://localhost:5000/api # پاسخ مورد انتظار: "API بانک نسخه ۱.۰.۰" ``` **اگر پاسخ نسخه API را مشاهده کردید، آماده ادامه هستید!** --- ## درک فرمها و کنترلهای HTML فرمهای HTML راهی هستند که کاربران با برنامه وب شما ارتباط برقرار میکنند. آنها را مثل سامانه تلگرافی تصور کنید که در قرن ۱۹ مکانهای دور را به هم متصل میکرد – اینها پروتکل ارتباطی بین نیت کاربر و پاسخ برنامه هستند. وقتی با دقت طراحی شوند، خطاها را میگیرند، قالببندی ورودی را راهنمایی میکنند و پیشنهادهای کمککننده ارائه میدهند. فرمهای مدرن بهشدت پیشرفتهتر از ورودیهای متنی ساده هستند. HTML5 نوعهای ورودی تخصصی معرفی کرده که اعتبارسنجی ایمیل، قالببندی عددی و انتخاب تاریخ را به طور خودکار انجام میدهند. این پیشرفتها برای دسترسپذیری و تجربه کاربری موبایل مفید هستند. ### عناصر ضروری فرم **بلوکهای سازنده که هر فرم نیاز دارد:** ```html
``` **کد بالا چه میکند:** - **یک ظرف فرم** با شناسه یکتا ایجاد میکند - **متد HTTP** ارسال داده را مشخص میکند - **برچسبها** را برای دسترسپذیری به ورودیها مرتبط میکند - **دکمه ارسال** برای پردازش فرم تعریف میکند ### نوعها و ویژگیهای ورودی مدرن | نوع ورودی | هدف | نمونه استفاده | |------------|---------|---------------| | `text` | ورودی متن عادی | `` | | `email` | اعتبارسنجی ایمیل | `` | | `password` | ورود متن مخفی | `` | | `number` | ورودی عددی | `` | | `tel` | شماره تلفن | `` | > 💡 **مزیت HTML5 مدرن**: استفاده از نوع ورودی خاص، اعتبارسنجی خودکار، کیبوردهای مناسب موبایل و پشتیبانی بهتر از دسترسپذیری را بدون نیاز به جاوااسکریپت اضافه فراهم میکند! ### نوعهای دکمه و رفتار ```html ``` **هر دکمه چه کاری انجام میدهد:** - **دکمههای ارسال (submit)**: ارسال فرم و ارسال داده به نقطه انتهایی مشخصشده - **دکمههای بازنشانی (reset)**: بازگرداندن همه فیلدهای فرم به حالت ابتدایی - **دکمههای معمولی**: رفتار پیشفرضی ندارند، و به کد جاوااسکریپت سفارشی نیاز دارند > ⚠️ **نکته مهم**: عنصر `` خودبسته است و نیاز به تگ بسته ندارد. بهترین روش مدرن این است که `` را بدون اسلش بنویسید. ### ساخت فرم ورود شما حالا بیایید یک فرم ورود عملی بسازیم که بهترین شیوههای فرم HTML مدرن را نشان میدهد. با ساختار پایه شروع کنیم و به تدریج با ویژگیهای دسترسپذیری و اعتبارسنجی بهبود دهیم. ```html