جستجو برای:
  • خانه
  • مقالات
    • مقالات مشاوره‌ای/توضیحی
    • پایتون
    • HTML5
    • CSS3
    • PHP & MySQL
    • پایگاه داده (database)
  • شروع برنامه نویسی از صفر تا کسب درآمد
  • درباره ما
  • تماس
    • تماس با ما
    • پیشنهاد آموزش
یادیفای
  • خانه
  • مقالات
    • مقالات مشاوره‌ای/توضیحی
    • پایتون
    • HTML5
    • CSS3
    • PHP & MySQL
    • پایگاه داده (database)
  • شروع برنامه نویسی از صفر تا کسب درآمد
  • درباره ما
  • تماس
    • تماس با ما
    • پیشنهاد آموزش
0

ورود و ثبت نام

چگونه وجود یا عدم وجود ایمیل کاربران در دیتابیس را چک کنیم؟

29 ژانویه 2019
ارسال شده توسط مهدی خسروی
PHP & MySQL ، بک اند (Back End) ، پایگاه داده (database)
664 بازدید

در گذشته یک سری آموزشی ۳ قسمت ساخت سیستم ثبت نام، ورود و پروفایل کاربری با PHP و MySQL ساختیم و برای بسیار از دوستان سوال پیش آمد که چطور میتوانیم کاری کنیم که اجازه‌ی ثبت نام به کاربران تکراری را ندهیم. در این فایل آموزشی میخواهیم بررسی کنیم که چطور میتوانیم کاری کنیم که قبل از ثبت نام کاربر، چک کنیم که آیا کاربری با آن ایمیل قبلا در سیستم ثبت نام کرد‌ه‌ است یا خیر. و اگر نکرده بود،‌ به او اجازه ثبت نام ندهیم. پس در این آموزش همراه من باشید.

دانلود این آموزش با حجم ۱۳ مگ


ایمیل/نام کاربری تکراری در دیتابیس

همانطور که گفتیم در سری آموزشی ۳ قسمتی ساخت سیستم ثبت نام، ورود و پروفایل و همینطور آموزش ساخت فروشگاه اینترنتی حرفه‌ا با PHP و MySQL،‌ این باگ در کدمان وجود داشت:

کاربرانی با ایمیل ها و یا نام های کاربری تکراری میتوانستند در سایت ما ثبت نام کنند. که انجام اینکار از لحاظ منطقی اصلا کار خوبی نبود و یک مشکل در کد ما به حساب می‌آمد.

به همین دلیل سعی کردیم که در این آموزش روش حل این مشکل را توضیح دهیم. برای اطلاعات بیشتر پیشنهاد میکنم که آموزش های دیتابیس چیست؟ و MySQL چیست؟ را نیز مطالعه کنید.

 

آشنایی با تابع ()mysqli_num_rows و کاربرد آن

این تابع برای ما میتواند تعداد سطرهایی که یک دستور sql درخواست میکند را برای ما نمایش دهد. برای مثال اگر ما کاربرانی با ایمیل های زیر در دیتابیس داشته باشیم:

  • mehdi@gmail.com
  • hassan@gmail.com
  • mehdi@gmail.com
  • ali@gmail.com

بخواهیم بدانیم که چند کاربر با ایمیل mehdi@gmail.com در سیستم ما ثبت نام کرده‌اند، میتوانیم از کد زیر استفاده کنیم:

$email = 'mehdi@gmail.com'
$check_email = mysqli_query($db, "SELECT * FROM users WHERE email='$email'");
echo mysqli_num_rows($check_email);

این تابع یک پارامتر میگیرد و پارامتر آن کوئری‌ای است که به دیتابیس زده‌ایم. مقدار نهایی که این کد چاپ میکند، عدد ۲ خواهد بود، زیرا ما ۲ کاربر با ایمیل mehdi@gmail.com داریم. پس با استفاده از تابع ()mysqli_num_rows میتوانیم تعداد سطرهایی که دستور sql ما برمیگداند را داشته باشیم. 

مقاله‌ی مرتبط: کامل‌ترین آموزش Sublime Text 3 (ویدئویی و کاملا رایگان)

حالا با استفاده از این تابع، میخواهیم این امکان را به سیستم ثبت نام خود اضافه کنیم.

 

منطق انجام اینکار به چه صورت خواهد بود؟

ما هنگام ثبت نام، ایمیل کاربر را از او میگیریم و قبل از اینکه اطلاعات را به دیتابیس بفرستیم، چک میکنیم از این ایمیل چند عدد در دیتابیس وجود دارد. اگر از ایمیلی که کاربر وارد کرده بیشتر از ۰ (صفر) عدد کاربر در دیتابیس وجود داشت، یعنی قبلا کاربری با این ایمیل در سایت ثبت نام کرده است و شخص دیگری اجازه ثبت نام با همان ایمیل را ندارد.

اما اگر تعداد ۰ کاربر با آن ایمیل در سایت ثبت نام کرده بودند، یعنی هیچکس با این ایمیل ثبت نام نکرده و کاربر میتواند اقدام به ثبت نام در سایت کند.

 

ویرایش فایل do-register.php 

حالا میخواهیم فایل do-register.php که در این آموزش آن‌را ساخته‌ایم را ویرایش کنیم. به صورتی که کاربران تکراری اجازه ثبت نام در آن را نداشته باشند. برای اینکار کدهای زیر را در این فایل مینویسیم:

<?php 
require_once 'db.php';

$display_name =  $_POST["display-name"];
$email = $_POST['email'];
$password = md5($_POST['password']);
$password_conf = md5($_POST['password-conf']);

$check_email = mysqli_query($db, "SELECT * FROM users WHERE email='$email'");
if(mysqli_num_rows($check_email)>0){
	echo 'شما قبلا ثبت نام کرده‌اید. لطفا وارد شوید.';
} else {
	if($password != $password_conf){
		echo 'رمز شما و تکرار آن برابر نیستند.';
	}else{
		$register = mysqli_query($db, "INSERT INTO users (display_name, email, password) VALUES ('$display_name', '$email','$password')");
		if($register){
			header('Location: ../login.php');
		}else{
			echo 'error';
		}
	}
}
?>

در خط ۱۰ این کد ایمیل دریافتی کاربر را از او گرفته‌ایم و در دیتابیس چک کرده‌ایم که چند کاربر با این ایمیل در سیستم ما ثبت نام کرده‌اند. سپس در شرط if بررسی کرده‌ایم که اگر تعداد این ثبت نامی ها از صفر نفر بیشتر بود‌، یعنی یک کاربر با این ایمیل در سایت قبلا ثبت نام کرده است. بنابراین به او خطای «شما قبلا ثبت نام کرده‌اید. لطفا وارد شوید.» را نشان میدهیم.

در غیر این صورت، در قسمت else این شرط، عملیات اضافه کردن کاربر به دیتایس را اجرا میکنیم. و همانطور که میدانید قسمت else این شرط فقط زمانی اجرا میشود که تعداد کاربرانی که با ایمیل وارد شده کاربر در دیتابیس پیدا شدند، برابر با ۰ نفر باشند. و این به این معنی است که کاربری با این ایمیل در سایت ثبت نام نکرده است.

مقاله‌ی مرتبط: چطور یک فرم جستجو با PHP بسازیم؟ (راهنمای کامل ویدئویی)

 

برای مطالعه‌ی بیشتر

این هم این آموزش فوق العاده کاربردی که به پایان رسید. اگر میخواهید اطلاعات بیشتری کسب کنید به شما پیشنهاد میکنم که حتما سری مقالات ۳ قسمتی کاملا رایگان ساخت سیستم ثبت نام، ورود و پروفایل کاربری را PHP و MySQL حتما مشاهده کنید.

همینطور اگر میخواهید PHP و MySQL را بصورت پروژه محور یاد بگیرید، این لینک مخصوص شماست.

اشتراک گذاری:
برچسب ها: databasemysqlphp
درباره مهدی خسروی

۸ سال پیش که یادگیری برنامه نویسی رو آغاز کردم، با یک مشکل بزرگ مواجه شدم: کمبود منابع آموزشی حرفه‌ای و کاربردی به زبان فارسی. به همین دلیل، بعد از چندین سال فعالیت حرفه‌ای در زمینه‌ی برنامه نویسی، تصمیم گرفتم دانسته‌ها و تجربیات خودم را با شما عزیزان به اشتراک بگذارم. پیشنهاد میکنم به آدرس yadify.com/gifts حتما سر بزنید :)

نوشته های بیشتر از مهدی خسروی

مطالب زیر را حتما مطالعه کنید

Full Stack چیست
Full Stack چیست و به چه کسی برنامه نویس فول استک میگویند؟
ساخت ربات تلگرام
ساخت ربات تلگرام با پایتون (+درآمد میلیاردی بات‌های ایرانی)
کسب درآمد با برنامه نویسی تلگرام
MVC چیست و چه کاربردی دارد؟ + مثال
لاراول یا کداگنایتر؟ کدوم رو برای یادگیری انتخاب کنیم؟
API چیست و چه کاربردی دارد؟ (راهنمای جامع ویدئویی)
قدیمی تر با تکنیک «همراه‌یابی» انگیزه خود را چند برابر کنید!
جدیدتر آموزش Import و Export در phpmyadmin

4 دیدگاه

به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

  • Alireza tahriri گفت:
    ۱۴ بهمن ۱۳۹۷ در ۰۲:۳۰

    عالی بود خیلی به این آموزش نیاز داشتم

    پاسخ
  • رضا گفت:
    ۲۳ فروردین ۱۳۹۹ در ۲۱:۱۷

    ممنون
    استفاده کردم

    پاسخ

دیدگاهتان را بنویسید لغو پاسخ

This site uses Akismet to reduce spam. Learn how your comment data is processed.

مطالب مرتبط

Full Stack چیست و به چه کسی برنامه نویس فول استک میگویند؟

ساخت ربات تلگرام با پایتون (+درآمد میلیاردی بات‌های ایرانی)

کسب درآمد با برنامه نویسی تلگرام

MVC چیست و چه کاربردی دارد؟ + مثال

لاراول یا کداگنایتر؟ کدوم رو برای یادگیری انتخاب کنیم؟

جستجو برای:
.: روی یادگیری‌تان سرمایه‌گذاری کنید :.
  • مكان گيرنده
    فول کورس مسترکلاس توسعه وب
  • مكان گيرنده
    دوره آموزش برنامه نویسی پی اچ پی
.: نظرات کاربران :.
  • اکانت دمو در دوره آموزش برنامه نویسی پی اچ پی
  • مهدی خسروی در طراحی وب چیست؟ همه چیز درباره‌ی طراحی وب سایت (Web Design)
  • فاطمه در طراحی وب چیست؟ همه چیز درباره‌ی طراحی وب سایت (Web Design)
  • دوست در Stack Overflow چیست؟ همه چیز درباره‌ی استک اورفلو
  • مهدی خسروی در با ۱۴ پیش نیاز برنامه نویسی آشنا شوید! (+فیلم)
  • مهدی خسروی در PHP چیست؟ همه چیز درباره‌ی PHP و کاربرد آن
.: تماس با ما :.

ما به داشتن دوستان خوبی مثل شما افتخار میکنیم و بسیار خوشحال میشویم که پاسخگوی سوال‌هایتان باشیم. برای تماس با ما میتوانید از راه‌های زیر استفاده کنید:

+ آیدی پشتیبانی تلگرامی: yadify_support@

داستان یادیفای

از سال 1393 که فریلنسری برنامه نویسی رو شروع کردم، همیشه دوست داشتم که چیزهایی که یاد میگیرم رو با بقیه به اشتراک بذارم. که هم خودم بهتر یاد بگیرم و هم بتونم به بقیه کمکی کرده باشم.
مخصوصا اون موقع که محتوای تخصصی برنامه نویسی به زبان فارسی خیلی کم بود.
با xanbil.com شروع کردم به تولید محتوا و بعد از 3 سال به yadify.com رسیدیم.
جایی که در کنار هم سعی میکنیم برنامه نویسی رو به عنوان یه تخصص درآمدزا و خفن باهم یاد بگیریم و پیشرفت کنیم ...

دسترسی سریع
  • مقالات آموزشی
  • نقشه مسیر برنامه نویسی
  • مسترکلاس توسعه وب
  • درباره یادیفای
  • تماس با ما
چنل یوتوب برنامه نویسی پیج اینستاگرام
ساخته شده با و در یادیفای - از 1395

ورود

رمز عبور را فراموش کرده اید؟

هنوز عضو نشده اید؟ عضویت در سایت