آموزش رایگان 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 "خطایی در هنگام ثبت اطلاعات رخ داد.";
        }
    }
}

نتیجه‌گیری

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


پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش کامل و امن آپلود فایل در PHP (مطابق استاندارد گوگل)
1405/05/01 20:17

آموزش کامل و امن آپلود فایل در PHP (مطابق استاندارد گوگل)

مطالعه بیشتر
آموزش دسترسی به المان‌های HTML با استفاده از جاوا اسکریپت: راهنمای کامل با مثال‌ها
1403/08/02 20:50

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

مطالعه بیشتر
آموزش ساختار استاندارد و بهینه پروژه PHP به سبک گوگل
1405/05/04 23:25

آموزش ساختار استاندارد و بهینه پروژه PHP به سبک گوگل

مطالعه بیشتر
آموزش Directive‌ های Vue.js | استفاده از v-model، v-bind و v-show با مثال
1404/09/23 21:10

آموزش Directive‌ های Vue.js | استفاده از v-model، v-bind و v-show با مثال

مطالعه بیشتر
استفاده از font face در CSS برای اضافه کردن فونت‌های سفارشی: راهنمای کامل
1403/08/16 21:48

استفاده از font face در CSS برای اضافه کردن فونت‌های سفارشی: راهنمای کامل

مطالعه بیشتر
آموزش کامل متغیرهای $_GET، $_POST و $_REQUEST در PHP به زبان ساده
1405/05/01 20:01

آموزش کامل متغیرهای $_GET، $_POST و $_REQUEST در PHP به زبان ساده

مطالعه بیشتر
آموزش کامل کار با تابع password_verify در PHP (امنیت رمز عبور)
1405/05/14 22:09

آموزش کامل کار با تابع password_verify در PHP (امنیت رمز عبور)

مطالعه بیشتر
تفاوت Data و Computed Properties در Vue.js | آموزش کاربردی و مثال‌محور
1404/09/21 23:58

تفاوت Data و Computed Properties در Vue.js | آموزش کاربردی و مثال‌محور

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

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

مطالعه بیشتر
آموزش جامع عملگرهای مقایسه‌ای در PHP؛ بررسی تفاوت == و ===
1405/04/03 23:47

آموزش جامع عملگرهای مقایسه‌ای در PHP؛ بررسی تفاوت == و ===

مطالعه بیشتر
آموزش ایجاد، دسترسی و اصلاح آرایه‌ها در جاوا اسکریپت: راهنمای کامل
1403/07/04 17:11

آموزش ایجاد، دسترسی و اصلاح آرایه‌ها در جاوا اسکریپت: راهنمای کامل

مطالعه بیشتر
استفاده از clip-path در CSS برای برش‌های زیبا و جذاب: راهنمای کامل
1403/08/16 22:58

استفاده از clip-path در CSS برای برش‌های زیبا و جذاب: راهنمای کامل

مطالعه بیشتر

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