آموزش رایگان PHP

آموزش جامع ساخت فرم ثبت‌نام کاربران با PHP و MySQL طبق اصول امنیتی گوگل

1405/05/13 21:34 محراب حسن زاده
آموزش جامع ساخت فرم ثبت‌نام کاربران با PHP و MySQL طبق اصول امنیتی گوگل

مقدمه: چرا ساختار فرم ثبت‌نام اهمیت دارد؟

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

مرحله اول: ساخت فرم HTML استاندارد

گوگل بر روی دسترسی‌پذیری (Accessibility) و استفاده از اتریبیوت‌های استاندارد تاکید زیادی دارد. برای مثال، استفاده از autocomplete به مرورگرها کمک می‌کند تا فیلدها را برای کاربر به سرعت پر کنند.

< form action="register.php" method="POST" class="registration-form" >
    < div class="form-group" >
        < label for="username" >نام کاربری:< / label >
        < input type="text" id="username" name="username" required autocomplete="username" placeholder="نام کاربری خود را وارد کنید..." / >
    < / div >
    < div class="form-group" >
        < label for="email" >ایمیل:< / label >
        < input type="email" id="email" name="email" required autocomplete="email" placeholder="example@domain.com" / >
    < / div >
    < div class="form-group" >
        < label for="password" >رمز عبور:< / label >
        < input type="password" id="password" name="password" required autocomplete="new-password" placeholder="حداقل ۸ کاراکتر" / >
    < / div >
    < button type="submit" name="submit" >عضویت< / button >
< / form >

مرحله دوم: ایجاد پایگاه داده ایمن در MySQL

برای ذخیره اطلاعات کاربران، نیاز به یک جدول مناسب با ساختار بهینه داریم. نکته مهم این است که طول ستون مربوط به پسورد را حداقل ۲۵۵ کاراکتر در نظر بگیریم؛ زیرا پسوردهای هش‌شده طول زیادی خواهند داشت.

CREATE TABLE `users` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `username` VARCHAR(50) NOT NULL UNIQUE,
  `email` VARCHAR(100) NOT NULL UNIQUE,
  `password` VARCHAR(255) NOT NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

مرحله سوم: اتصال ایمن به دیتابیس با PDO در PHP

استفاده از PDO (PHP Data Objects) به جای توابع قدیمی MySQLi، بهترین روش استاندارد برای جلوگیری از حملات خطرناک SQL Injection است. با کمک Prepared Statements امنیت تراکنش‌های دیتابیس شما به حداکثر می‌رسد.


$host = 'localhost';
$db   = 'user_system';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            =--> PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];

try {
     $pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
     die("خطا در اتصال به پایگاه داده: " . $e->getMessage());
}

مرحله چهارم: پردازش اطلاعات و هش کردن رمز عبور

یکی از مهم‌ترین قوانین امنیتی گوگل، عدم ذخیره رمز عبور کاربران به صورت متن ساده (Plain Text) است. ما باید از تابع امن password_hash با الگوریتم قدرتمند Bcrypt استفاده کنیم.


require_once 'db.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = trim($_POST['username']);
    $email = trim($_POST['email']);
    $password = $_POST['password'];

    if (empty($username) || empty($email) || empty($password)) {
        die("لطفاً تمام فیلدها را پر کنید.");
    }

    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        die("فرمت آدرس ایمیل معتبر نیست.");
    }

    if (strlen($password) < 8) {
        die("رمز عبور باید حداقل ۸ کاراکتر باشد.");
    }

    // هش کردن ایمن رمز عبور
    $hashedPassword = password_hash($password, PASSWORD_BCRYPT);

    try {
        $stmt = $pdo--->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
        $stmt->execute([$username, $email, $hashedPassword]);
        echo "ثبت‌نام شما با موفقیت انجام شد!";
    } catch (\PDOException $e) {
        if ($e->errorInfo[1] == 1062) {
            echo "این نام کاربری یا ایمیل قبلاً ثبت شده است.";
        } else {
            echo "خطایی در هنگام ثبت اطلاعات رخ داد.";
        }
    }
}

نتیجه‌گیری

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


پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

استفاده از calc در CSS: محاسبات پویا برای طراحی‌های منعطف
1403/08/12 19:43

استفاده از calc در CSS: محاسبات پویا برای طراحی‌های منعطف

مطالعه بیشتر
واحدهای CSS مدرن: آموزش استفاده از vw، vh، vmin و vmax برای طراحی واکنش‌گرا
1403/08/11 20:43

واحدهای CSS مدرن: آموزش استفاده از vw، vh، vmin و vmax برای طراحی واکنش‌گرا

مطالعه بیشتر
آموزش ایجاد و حذف المان‌های DOM به صورت داینامیک با جاوا اسکریپت: راهنمای جامع و کاربردی
1403/08/02 21:21

آموزش ایجاد و حذف المان‌های DOM به صورت داینامیک با جاوا اسکریپت: راهنمای جامع و کاربردی

مطالعه بیشتر
آموزش جامع و اصولی جستجو در دیتابیس با PHP و MySQL (مطابق استانداردهای گوگل)
1405/05/13 21:26

آموزش جامع و اصولی جستجو در دیتابیس با PHP و MySQL (مطابق استانداردهای گوگل)

مطالعه بیشتر
آموزش استفاده از تگ‌های تصویری در HTML: نمایش و مدیریت تصاویر در صفحات وب
1402/05/29 20:53

آموزش استفاده از تگ‌های تصویری در HTML: نمایش و مدیریت تصاویر در صفحات وب

مطالعه بیشتر
آموزش انیمیشن‌های پیشرفته با keyframes در CSS: طراحی حرکات پویا و چند مرحله‌ای
1402/06/18 22:48

آموزش انیمیشن‌های پیشرفته با keyframes در CSS: طراحی حرکات پویا و چند مرحله‌ای

مطالعه بیشتر
آموزش گام به گام ساخت سیستم لاگین و لاگ‌اوت در PHP به صورت ایمن
1405/05/14 22:13

آموزش گام به گام ساخت سیستم لاگین و لاگ‌اوت در PHP به صورت ایمن

مطالعه بیشتر
جمع‌بندی، مرور مطالب و پروژه نهایی: ایجاد یک اپلیکیشن وب کامل با جاوا اسکریپت - راهنمای گام به گام
1403/08/05 21:21

جمع‌بندی، مرور مطالب و پروژه نهایی: ایجاد یک اپلیکیشن وب کامل با جاوا اسکریپت - راهنمای گام به گام

مطالعه بیشتر
آموزش جامع انواع داده‌ها در PHP (بخش اول: String, Integer, Float, Boolean)
1405/03/24 01:01

آموزش جامع انواع داده‌ها در PHP (بخش اول: String, Integer, Float, Boolean)

مطالعه بیشتر
آموزش ارتباط با سرور و ارسال درخواست‌های HTTP با Fetch API در جاوا اسکریپت: راهنمای جامع با مثال‌ها
1403/08/01 19:55

آموزش ارتباط با سرور و ارسال درخواست‌های HTTP با Fetch API در جاوا اسکریپت: راهنمای جامع با مثال‌ها

مطالعه بیشتر
آموزش Prepared Statement در PHP: امن‌سازی دیتابیس در برابر SQL Injection
1405/05/13 21:17

آموزش Prepared Statement در PHP: امن‌سازی دیتابیس در برابر SQL Injection

مطالعه بیشتر
آموزش کامل کار با آرایه‌ها و اشیاء در جاوا اسکریپت: ایجاد، دستکاری و پیمایش
1403/06/02 21:08

آموزش کامل کار با آرایه‌ها و اشیاء در جاوا اسکریپت: ایجاد، دستکاری و پیمایش

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد