آموزش رایگان 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/04/27 21:58

آموزش سیر تا پیاز تاریخ و زمان در PHP (استاندارد گوگل)

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

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

مطالعه بیشتر
آموزش HTML: اولین گام برای طراحی سایت و سئو حرفه‌ای
1402/05/18 00:00

آموزش HTML: اولین گام برای طراحی سایت و سئو حرفه‌ای

مطالعه بیشتر
کنترل زمان‌بندی و اندازه‌گیری دقیق انیمیشن‌ها در CSS: آموزش جامع و اصول استاندارد
1402/06/18 22:55

کنترل زمان‌بندی و اندازه‌گیری دقیق انیمیشن‌ها در CSS: آموزش جامع و اصول استاندارد

مطالعه بیشتر
راهنمای جامع پاک‌سازی داده‌های ورودی در PHP بر اساس استانداردهای گوگل
1405/04/27 22:21

راهنمای جامع پاک‌سازی داده‌های ورودی در PHP بر اساس استانداردهای گوگل

مطالعه بیشتر
استفاده از visibility و opacity در CSS برای مخفی‌سازی عناصر: راهنمای کامل و کاربردی
1403/08/11 20:31

استفاده از visibility و opacity در CSS برای مخفی‌سازی عناصر: راهنمای کامل و کاربردی

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

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

مطالعه بیشتر
Lifecycle Hooks در Vue.js | مدیریت چرخه حیات کامپوننت‌ها با مثال کاربردی
1404/09/29 20:53

Lifecycle Hooks در Vue.js | مدیریت چرخه حیات کامپوننت‌ها با مثال کاربردی

مطالعه بیشتر
آموزش ارث‌بری (Inheritance) در جاوا اسکریپت: نحوه استفاده از پروتوتایپ‌ها و کلاس‌ها
1403/07/28 21:20

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

مطالعه بیشتر
کار با تصاویر SVG در CSS: کنترل استایل و استفاده از گرافیک‌های مقیاس‌پذیر
1403/08/16 22:45

کار با تصاویر SVG در CSS: کنترل استایل و استفاده از گرافیک‌های مقیاس‌پذیر

مطالعه بیشتر
مدیریت خطاها در Async/Await و Promises در جاوا اسکریپت: راهنمای کامل با مثال‌های عملی
1403/07/30 20:59

مدیریت خطاها در Async/Await و Promises در جاوا اسکریپت: راهنمای کامل با مثال‌های عملی

مطالعه بیشتر
آموزش کار با Local Storage و Session Storage در جاوا اسکریپت: ذخیره‌سازی داده‌ها در مرورگر
1403/08/03 17:08

آموزش کار با Local Storage و Session Storage در جاوا اسکریپت: ذخیره‌سازی داده‌ها در مرورگر

مطالعه بیشتر

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