آموزش کامل ساخت سیستم ثبت نام با PHP
یکی از بهترین و ساده ترین تمریناتی که برای کار با دیتابیس میتوانیم انجام دهیم، ساخت سیستم ثبت نام با PHP است. که در ادامه به آن سیستم ورود و پروفایل کاربری هم اضافه میشود. در این سری آموزشی ۳ قسمتی، یک سیستم ثبت نام، ورود و پروفایل کاربری را با PHP طراحی و برنامه نویسی میکنیم و در حین ساخت این پروژه، نکات بسیار زیادی را یاد خواهیم گرفت. پس با من در ادامهی این آموزش همراه باشید.
ساخت سیستم ثبت نام با PHP
دانلود این آموزش با کیفیت بالا و حجم ۶۳ مگ
فراهم سازی مقدمات
همانطور که میدانید بهترین روش برای یادگیری برنامه نویسی، انجام پروژه های عملی و واقعی است. یکی از پروژه هایی که همه برنامه نویسان مبتدی با انجام آن میتوانند نکات بسیار زیادی را یاد بگیرند، پروژهی ساخت سیستم ثبت نام با PHP است. که در ادامه این سیستم به یک سیستم ورود کاربران و پروفایل کاربری وصل میشود و به یک مجموعهی کامل تبدیل میگردد.
شما در حین انجام این پروژه و ساخت سیستم ثبت نام با PHP، نکات بسیار زیادی را یاد خواهید گرفت:
- چطور میتوانید به دیتابیس وصل شوید
- چطور اطلاعات را وارد دیتابیس کنید
- چطور با فرم ها در HTML و PHP کار کنید
- چطور اطلاعات ورودی کاربران در فرم ها را پردازش کنید و کارهای مورد نیازتان را روی آنها انجام دهید.
در این قسمت از آموزش میخواهیم ساخت سیستم ثبت نام با PHP را یاد بگیریم. اما این آموزش ۲ قسمت دیگر نیز دارد که در روزهای آینده روی سایت قرار میگیرد که در آن ابتدا یک سیستم ورود و سپس یک سیستم پروفایل را برای کاربران میسازیم. پس در این سری مقالات با من همراه باشید.
ساخت فایل های ابتدایی پروژه
خب میریم سراغ ساخت سیستم ثبت نام با PHP. برای انجام این پروژه، به چند فایل و فولدر نیاز داریم که در زیر آنها را میبینید. این فایل ها را باید در لوکال هاست خود بسازیم:
engine-
db.php-
do-register.php-
styles.css-
register.php-
در واقع یک فولدر میسازیم با نام engine که در آن ۲ فایل db.php و do-register.php وجود دارند. و در خارج از فولدر نیز ۲ فایل styles.css و register.php را میسازیم و در ادامه کدهای مربوط به هر فایل را در آن ها وارد میکنیم.
پیشنهاد اصلی من به شما این است که کدهای زیر را ببینید و خودتان آنها را بنویسید. کپی/پیست کردن کد ها به شما هیچ نکتهی جدیدی یاد نمیدهد. برای تبدیل شدن به یک برنامه نویس حرفهای، کپی/پیست کردن را رها کنید و خودتان کدهارا ببینید، یاد بگیرید و بنویسید.
خب اولین فایلی که نیاز داریم فایل register.php است که فایل حاوی فرم ما میباشد. کدهای زیر را در فایل register.php بنویسید:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>ثبت نام در سایت</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div id="users"> <form action="engine/do-resgister.php" method="post"> <input type="text" name="display-name" class="input" placeholder="نام شما ..."><br> <input type="text" name="email" class="input" placeholder="ایمیل شما ..."><br> <input type="password" name="password" class="input" placeholder="رمز شما ..."><br> <input type="password" name="password-conf" class="input" placeholder="تکرار رمز شما ..."><br> <input type="submit" name="do-register" value="ثبت نام"> </form> </div> </body> </html>
- در خط ۶ فایل css خودمان را وارد کردهایم.
- از خط ۱۰ تا ۱۸ همان فرمی را تعریف کردهایم که کاربران با استفاده از آن میخواهند در سیستم ما ثبت نام کنند.
- در خط ۱۱ مقدار اتریبیوت action را ادرس فایلی قرار میدهیم که میخواهیم اطلاعات فرم را به آن فایل ارسال کنیم. در اینجا ما اطلاعات فرم را به فایل do-register.php میفرستیم که در پوشهی engine قرار دارد. سپس در آن فایل اطلاعات ورودی کاربر را پردازش کرده و وارد دیتابیس میکنیم.
- در همان خط ۱۱ چون میخواهیم اطلاعات را به دیتابیس بفرستیم، مقدار method را برابر post قرار میدهیم. اگر دربارهی این موضوع چیزی نمیدانید، اموزش تفاوت GET و POST را مشاهده کنید.
خب برای اینکه فرم زیبایی داشته باشیم، نیاز به کمی کدهای CSS داریم که فرم ما را چشم نواز کنند. کدهای زیر را درون فایل styles.css بنویسید:
body{ direction: rtl; } #users{ background: #E9EAED; text-align: center; width:300px; margin: auto; padding:10px; border-radius: 5px; } #users .input{ padding: 8px; width: 280px; margin: 5px 0; font-family: tahoma }
حالا اگر فایل register.php را باز کنید، با فرمی به شکل زیر مواجه میشوید که آمادهی کار است:
ساخت دیتابیس واتصال به آن
در حال ساخت یک ساخت سیستم ثبت نام با PHP هستیم و این سیستم برای کار کردن نیاز به یک دیتابیس دارد. به این دلیل که ما اطلاعات ورودی کاربران، مثل نام، ایمیل و رمز ورودی کاربران را در یک پایگاه داده یا دیتابیس ذخیره میکنیم که بعدا بتوانیم به آن دسترسی داشته باشیم. به این صورت که در صفحهی ورود که در قسمت بعد آنرا میسازیم، ایمیل و رمز کاربر را میگیریم و در پایگاه داده چک میکنیم آیا کاربری با این مشخصات وجود دارد یا خیر. اگر وجود داشت، کاربر را به صفحهی پروفایل او هدایت میکنیم و اگر وجود نداشت، پیغامی مبنی بر عدم موفقیت در ورود را به کاربر نشان میدهیم.
برای مطالعهی بیشتر میتوانید دو مقالهی دیتابیس چیست و mysql چیست را مطالعه کنید.
خب برای داشتن یک پایگاه داده، وارد phpmyadmin میشویم و یک دیتابیس با نام دلخواه میسازیم. ما در اینجا اسم yadify_users را برای دیتابیس خود انتخاب میکنیم. سپس اقدام میکنیم و یک جدول (table) با نام users در آن ایجاد میکنیم که دارای ستونهای زیر است:
id-
display_name-
email-
password-
تا اینجا یک پایگاه داده با نام yadify_users داریم که در آن یک جدول با نام users ساختهایم که دارای ستون هایی با مشخصات زیر است:
حالا دیتابیس ما آماده است، زمان آن است که به آن وصل شویم. برای اینکار، کد زیر را در فایل db.php وارد میکنیم:
<?php $db = mysqli_connect('localhost','root','','yadify_users'); ?>
در کد بالا ما یک اتصال بسیار ساده به دیتابیس داشتهایم که برای اینکار از تابع mysqli_connet استفاده کردهایم:
- پارامتر اول این تابع را برابر localhost قرار میدهیم.
- پارامتر دوم، نام کاربری ما در phpmyadmin است که میتوانید از نام کاربری پیشفرض root استفاده کنید.
- پارامتر سوم، رمز ما برای نام کاربریمان است، که برای نام کاربری root رمز را باید خالی بگذارید.
- و پارامتر چهارم اسم دیتابیس ما میباشد که همانطور که گفتیم نام دیتابیس ما yadify_users میباشد.
حالا که فایل دیتابیس را داریم، هرجا که بخواهیم به دیتابیس وصل شویم و اطلاعات را وارد آن کنیم و یا از آن بخوانیم، کافی است که فایل db.php را require_once کنیم.
گرفتن اطلاعات ورودی کاربران و اضافه کردن آن به دیتابیس
در ادامهی ساخت سیستم ثبت نام با PHP فقط یک مرحلهی دیگر پیش رو داریم، که اطلاعاتی که کاربر در فرم register.php وارد کرده است را بگیریم و وارد دیتابیس کنیم که بعدا بتوانیم با آن اقدام به تکمیل سیستم ورود، ثبت نام و پروفایلمان کنیم.
همانطور که در خط ۱۱ فایل register.php نوشتیم، اطلاعات فرم را به فایل do-register.php که درون پوشهی engine قرار دارد ارسال میکنیم. حالا در این فایل باید اطلاعات کاربر را در متغیر ها ذخیره کنیم و نهایتا به پایگاه داده ارسال کنیم و در آن ذخیره کنیم.
کد زیر را در فایل do-register.php بنویسید تا در ادامه آنرا توضیح دهیم:
<?php require_once 'db.php'; $display_name = $_POST["display-name"]; $email = $_POST['email']; $password = $_POST['password']; $password_conf = $_POST['password-conf']; if($password != $password_conf){ echo 'رمز شما و تکرار آن برابر نیستند.'; }else{ $register = mysqli_query($db, "INSERT INTO users (display_name, email, password) VALUES ('$display_name', '$email','$password')"); if($register){ echo 'done'; }else{ echo 'error'; } } ?>
در خط ۲ این فایل، فایل db.php را require_once کردهایم تا بتوانیم از دیتابیس در این فایل استفاده کنیم.
از خط ۴ تا ۷، اطلاعات ورودی کاربران را در متغیر های مختلف ذخیره کردهایم. برای اینکار از عبارت POST_$ استفاده کردهایم و در ادامه، مقدار اتریبیوت name که در فایل reigster.php وارد کرده بودهایم را آوردهایم.
برای مثال اگر بخواهیم نامی که کاربر در فایل register.php وارد کرده است را در فایل do-register.php داشته باشیم، در فایل register.php در خط ۱۲، یک input میسازیم و مقدار name را برابر display-name قرار میدهیم. و در مرحلهی بعد میتوانیم مقداری که کاربر در این فیلد وارد کرده است را، با کد زیر در PHP داشته باشیم:
$display_name = $_POST["display-name"];
به این صورت اطلاعات ورودی کاربران را در ۴ متغیر مختلف ذخیره میکنیم.
در خط ۹ تا ۱۸ فایل do-register.php یک شرط if تعیین میکنیم که اگر رمز ورودی کاربر با تایید رمز او همخوانی نداشت و این دو رمز با هم مغایرت داشتند، یک پیام خطا با عنوان «رمز شما و تکرار آن برابر نیستند.» به کاربر نمایش میدهیم.
اگر رمز کاربر و تکرار آن کاملا با هم برابر بودند، قسمت else این شرط اجرا میشود که در آن یک query دیتابیس را اجرا کردهایم و اطلاعات را به دیتابیس اضافه کردهایم. و باز هم در خط های ۱۳ تا ۱۷ چک کردهایم که اگر کاربر با موفقیت به دیتابیس اضافه شد، به کاربر پیام done و در غیر این صورت به کاربر پیام error را نشان بدهد.
اتمام سیستم ثبت نام
تا اینجا یک سیستم ثبت نام بسیار ساده ساختهایم. در ۲ قسمت آموزش بعدی، این سیستم را کامل تر میکنیم و امکانات بیشتری به آن اضافه میکنیم. این سری ۳ قسمتی شامل آموزش های زیر میباشد:
-
- قسمت اول: آموزش کامل ساخت سیستم ثبت نام با PHP (همین آموزش)
- قسمت دوم: آموزش کامل ساخت سیستم ورود با PHP
- قسمت سوم: آموزش کامل ساخت پرفایل کاربری با PHP
منتظر قسمت های بعدی این سری آموزشی در روز های آینده باشید.
درباره مهدی خسروی
۸ سال پیش که یادگیری برنامه نویسی رو آغاز کردم، با یک مشکل بزرگ مواجه شدم: کمبود منابع آموزشی حرفهای و کاربردی به زبان فارسی. به همین دلیل، بعد از چندین سال فعالیت حرفهای در زمینهی برنامه نویسی، تصمیم گرفتم دانستهها و تجربیات خودم را با شما عزیزان به اشتراک بگذارم. پیشنهاد میکنم به آدرس yadify.com/gifts حتما سر بزنید :)
نوشته های بیشتر از مهدی خسرویمطالب زیر را حتما مطالعه کنید
19 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
دیدگاهتان را بنویسید لغو پاسخ
این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش میشوند.
سلام وقت بخیر
اطلاعات وارد شده توی دیتابیس بصورت بهم ریخته نشون میده
امکان داره راهنمایی کنید ؟
سلام امیر عزیز
برای حل مشکل حروف فارسی میتونید از این آموزش استفاده کنید. بصورت کامل توضیح داده شده.
سلام یه سوال داشتم این کدها رو تو چه مسیری . کدوم پوشه توی زمپ باید برای کد نویسی دخیره کنیم
سلام
لطفا این فیلم رو مشاهده کنید.
سلام خسته نباشید من با دریم ویویر کار می کنم و تا می خوام اطلاعات را از متد پست بگیرم این ارور می ده
Notice: Undefined index: نام in C:\wamp64\www\A\S Name.php on line 2
چرا؟ کمک کنید لطفا
سلام محمد عزیز
من سالهاست که با دریم ویور کار نکردم و در این مورد چیزی نمیدونم. عذرخواهی میکنم
با سلام. آموزش عالی و ساده ای بود برای کاربران مبتدی اما شما یک چیز رو جا انداختید.
شما باید هنگام ثبت نام چک کنید که آیا کاربر دیگری هم با این ایمیل ثبت نام کرده است یا خیر.
سلام مهدی عزیز
این مورد رو در این مقالهی سایت بصورت کامل توضیح دادیم و در موردش صحبت کردیم.
عالی و خلاصه، تو سایت دیگه که رفتم برای این آموزش سردر گم شدم و سایت شما بهترین سایتی بود که من پیدا کردم
بسیار نوشته مفید بود. با تشکر از شما
عالی بود دمت گرم واقعا لذت بردم .
خیلی ممنون. آموزش بسیار کامل بود، حدود ده ویدیو دیگه رو دیدم ولی فقط با آموزش شما یاد گرفتم.
شما میتونید این پروژه رو برای من انجام بدین؟
هزینه هم میدم +هاست+دامنه
سلام امیرحسین عزیز
متاسفانه در خصوص انجام پروژه من نمیتونم در خدمتتون باشم. کارهای سایت و ضبط آموزشها واقعا اونقدری وقت گیر هست که نمیشه به کارهای این چنینی رسید. میتونید از سایتهایی مثل ponisha.ir استفاده کنید.