ساخت فرم چندمرحله‌ای

ساخت فرم چند مرحله‌ای با PHP: راهنمای جامع

ساخت فرم چند مرحله‌ای با PHP: راهنمای جامع

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

۱. طراحی ساختار فرم

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

  1. اطلاعات شخصی (نام، نام خانوادگی، تاریخ تولد)
  2. اطلاعات تماس (ایمیل، شماره تلفن)
  3. اطلاعات حساب کاربری (نام کاربری، رمز عبور)
  4. تایید اطلاعات

هر مرحله باید شامل فیلدهای ورودی مرتبط با اطلاعات مورد نیاز آن مرحله باشد. همچنین، باید دکمه‌هایی برای رفتن به مرحله بعدی و مرحله قبلی در نظر گرفته شود.

۲. مدیریت جلسات (Sessions)

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

برای شروع استفاده از جلسات، باید آن‌ها را در ابتدای اسکریپت PHP خود فعال کنید:


اکنون می‌توانید داده‌ها را در متغیر $_SESSION ذخیره کنید. به عنوان مثال، برای ذخیره نام کاربر در مرحله اول، می‌توانید از کد زیر استفاده کنید:


در مراحل بعدی، می‌توانید به این داده‌ها دسترسی داشته باشید و آن‌ها را در فیلدهای ورودی نمایش دهید.

۳. پیاده‌سازی مراحل فرم

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

مرحله ۱: اطلاعات شخصی

فایل step1.php:

<?php
session_start();

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $_SESSION['name'] = $_POST['name'];
  $_SESSION['family'] = $_POST['family'];
  $_SESSION['birthdate'] = $_POST['birthdate'];
  header("Location: step2.php");
  exit();
}
?>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
  <label for="name">نام:</label>
  <input type="text" id="name" name="name" required><br><br>

  <label for="family">نام خانوادگی:</label>
  <input type="text" id="family" name="family" required><br><br>

  <label for="birthdate">تاریخ تولد:</label>
  <input type="date" id="birthdate" name="birthdate" required><br><br>

  <input type="submit" value="مرحله بعد">
</form>

مرحله ۲: اطلاعات تماس

فایل step2.php:

<?php
session_start();

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $_SESSION['email'] = $_POST['email'];
  $_SESSION['phone'] = $_POST['phone'];
  header("Location: step3.php");
  exit();
}
?>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
  <label for="email">ایمیل:</label>
  <input type="email" id="email" name="email" required><br><br>

  <label for="phone">شماره تلفن:</label>
  <input type="text" id="phone" name="phone" required><br><br>

  <input type="submit" value="مرحله بعد">
</form>

مرحله ۳: اطلاعات حساب کاربری

فایل step3.php:

<?php
session_start();

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $_SESSION['username'] = $_POST['username'];
  $_SESSION['password'] = $_POST['password'];
  header("Location: step4.php");
  exit();
}
?>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
  <label for="username">نام کاربری:</label>
  <input type="text" id="username" name="username" required><br><br>

  <label for="password">رمز عبور:</label>
  <input type="password" id="password" name="password" required><br><br>

  <input type="submit" value="مرحله بعد">
</form>

مرحله ۴: تایید اطلاعات

فایل step4.php:

<?php
session_start();

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  // ذخیره اطلاعات در پایگاه داده
  $name = $_SESSION['name'];
  $family = $_SESSION['family'];
  $birthdate = $_SESSION['birthdate'];
  $email = $_SESSION['email'];
  $phone = $_SESSION['phone'];
  $username = $_SESSION['username'];
  $password = $_SESSION['password'];

  // کد ذخیره سازی در پایگاه داده در اینجا قرار می گیرد

  // پاک کردن اطلاعات از جلسه
  session_unset();
  session_destroy();

  echo "<p>ثبت نام با موفقیت انجام شد!</p>";
}
?>

<p>لطفاً اطلاعات زیر را بررسی کنید:</p>

<p>نام: <?php echo $_SESSION['name']; ?></p>
<p>نام خانوادگی: <?php echo $_SESSION['family']; ?></p>
<p>تاریخ تولد: <?php echo $_SESSION['birthdate']; ?></p>
<p>ایمیل: <?php echo $_SESSION['email']; ?></p>
<p>شماره تلفن: <?php echo $_SESSION['phone']; ?></p>
<p>نام کاربری: <?php echo $_SESSION['username']; ?></p>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
  <input type="submit" value="تایید و ثبت نهایی">
</form>

۴. اعتبارسنجی داده‌ها

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

می‌توانید از توابع PHP مانند filter_var() برای اعتبارسنجی داده‌ها استفاده کنید. به عنوان مثال، برای اعتبارسنجی آدرس ایمیل، می‌توانید از کد زیر استفاده کنید:


همچنین، می‌توانید از عبارات منظم (regular expressions) برای اعتبارسنجی داده‌ها استفاده کنید.

۵. ذخیره‌سازی اطلاعات

پس از اعتبارسنجی داده‌ها، می‌توانید آن‌ها را در پایگاه داده ذخیره کنید. برای این منظور، باید از یک سیستم مدیریت پایگاه داده (DBMS) مانند MySQL استفاده کنید.

می‌توانید از توابع PHP مانند mysqli_query() برای اتصال به پایگاه داده و اجرای دستورات SQL استفاده کنید.

۶. نکات تکمیلی

  • استفاده از CSS برای طراحی ظاهری فرم
  • استفاده از JavaScript برای بهبود تجربه کاربری (مانند نمایش پیام‌های خطا به صورت پویا)
  • پیاده‌سازی امنیت فرم (مانند جلوگیری از حملات XSS و SQL injection)
  • استفاده از یک فریم‌ورک PHP (مانند Laravel یا Symfony) برای ساده‌سازی فرآیند توسعه

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