نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • خطاها
  • یک اسکریپت ثبت نام ساده در php و mysql. ایجاد یک سیستم ساده ثبت نام کاربر در PHP و MySQL

یک اسکریپت ثبت نام ساده در php و mysql. ایجاد یک سیستم ساده ثبت نام کاربر در PHP و MySQL

سلام به همه. بنابراین ما چند عنصر را برای ایجاد اشکال یاد گرفتیم. وقت آن است که دانش خود را برای حل یک مشکل بزرگتر ترکیب کنیم. بیایید ساده ترین فرم را برای مجوز در سایت ایجاد کنیم. برای این کار به دو فیلد نیاز داریم که امضاها را ایجاد کرده و به آنها ضمیمه می کنیم.

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

نتیجه در مرورگر:

برای اینکه متن وارد شده در آن با ستاره جایگزین شود، همانطور که برای یک فیلد از این نوع مرسوم است، باید یک عمل ساده انجام دهید. یعنی برای جایگزینی مقدار ویژگی نوعبر کلمه عبور:

نتیجه:

دکمه ارسال فرم

بفرمایید. فرم ما تقریبا آماده است. اکنون برای تکمیل ساخت آن، باید دکمه ای ایجاد کنید که برای ارسال فرم از آن استفاده می شود. مشکل با استفاده از تگ حل می شود با نوع ارسال.

اگر دکمه باید نوعی کتیبه داشته باشد، می توان آن را با استفاده از ویژگی انجام داد ارزش. این به شما بستگی دارد که یک نام برای دکمه تعیین کنید یا نه؛ اگر این کار را انجام دهید، سرور این نام و همچنین مقدار دکمه را دریافت می کند.

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

در نتیجه کد فرم ما به صورت زیر خواهد بود:

نتیجه در مرورگر:

هرکسی که وب سایت ها را توسعه می دهد دیر یا زود با چنین وظیفه ای روبرو می شود مجوز کاربر و احراز هویت، دقیقاً با استفاده از یک زبان برنامه نویسی و بدون استفاده از استاندارد پروتکل http پیاده سازی شده است. امروز به نمونه ای از ایجاد یک مجوز ساده با استفاده از زبان برنامه نویسی PHP نگاه می کنیم و داده های کاربر را در پایگاه داده MySQL ذخیره می کنیم.

روش زیر ساده است یا به طور معمول پایه ای برای ایجاد یک مجوز معمولی است، اما می توانید به راحتی از آن استفاده کنید، زیرا بسیار خوب کار می کند و همچنین می توانید خودتان این روش را بهبود ببخشید و آن را در وب سایت خود پیاده کنید.

این روش بر اساس جلسات است، اما من در اینجا از کوکی ها نیز استفاده می کنم، به طوری که مرورگر کاربری را که آخرین بار احراز هویت کرده است را به خاطر می آورد، تا هر بار ورود به سیستم را وارد نکنید، البته می توانید رمز عبور را در کوکی ها ذخیره کنید، اما این ایمن نیست، حتی اگر رمزگذاری شده باشد. برای پایان دادن به جلسه کافی است مرورگر را ببندید و دوباره باز کنید.

ایجاد اشیاء در پایگاه داده

بیایید به سراغ تمرین برویم. ابتدا بیایید یک جدول برای ذخیره داده های کاربر در پایگاه داده MySQL ایجاد کنیم. من پیشنهاد می کنم از یک ساختار جدول ساده استفاده کنید ( البته میشه با یه چیزی تکمیلش کرد، دیتابیس من اسمش تست هست و جدول هم کاربران):

CREATE TABLE test.users(user_id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, user_login VARCHAR(30) NOT NULL, user_password VARCHAR(32) NOT NULL, PRIMARY KEY (user_id) CONTEGINE_INCRELUTARLY=ENGINET_gene ;

و بیایید بلافاصله یک ورودی به این جدول اضافه کنیم:

مقادیر را در test.users (user_login، user_password) وارد کنید ("mylogin"،"202cb962ac59075b964b07152d234b70")

در مجموع بدست آوردیم:

  • وارد شدن– mylogin
  • کلمه عبور -;

البته ما رمز عبور را به صورت هش ذخیره می کنیم، زیرا ذخیره رمز عبور در متن واضح، به بیان ساده، ایمن نیست. هش رمز بالا ما 123 است، بنابراین وقتی رمز عبور را وارد فرم می کنیم، دقیقاً 123 را وارد می کنیم و نه.

ایجاد فرم ثبت نام

برای اینکه کاربر بتواند خودش ثبت نام کند، فرمی ایجاد کنید که داده های آن به فایل پردازش ثبت نام ارسال می شود. در پایگاه داده ثبت شود. به عنوان مثال، در اینجا ساده ترین راه وجود دارد:

0) ($error = "در حال حاضر کاربری با این ورود وجود دارد"؛ ) // اگر نه، یک کاربر جدید اضافه کنید if(!isset($error)) ($login = mysql_real_escape_string(trim(htmlspecialchars($_POST[ "ورود به سیستم" ]))))؛ // حذف فاصله ها و هش رمز عبور $password = md5(trim($_POST["password"]))؛ mysql_query("INSERT INTO users SET user_login=".$login."" , user_password=" ".$password."""); echo "شما با موفقیت با ورود ثبت نام کردید - ".$login; exit(); ) وگرنه (// اگر چنین لاگینی وجود داشته باشد، در مورد آن صحبت می کنیم echo $error; ) ) //به طور پیش فرض داده ها به همان فایل چاپی ارسال می شوند<<< html

وارد شدن
کلمه عبور
html ?>

به هر حال، با این روش بهتر است از حروف لاتین برای ورود استفاده کنید ( آن ها انگلیسی، اگر می خواهید ورود به سیستم روسی بنویسید، باید کمی کد را تنظیم کنید. شما می توانید نام فایل را هر چه می خواهید ( برای تست از reg.html استفاده کردم).

توجه داشته باشید! برای تست فقط از یک فایل استفاده می کنم که اسمش را گذاشتم mylogin.html (کد فایل زیر). شما می توانید آن را در فایل های خود استفاده کنید و آنها را هر طور که می خواهید صدا کنید، من خود فرآیند مجوز را در اینجا شرح می دهم، بنابراین می توانید آن را در همه جا اعمال کنید. به هر حال، در همه فایل ها باید از تابع session_start() استفاده کنید. تا بتوانید بررسی کنید که آیا کاربر مجاز است یا خیر. و یه چیز دیگه البته تنظیماتتون رو برای اتصال به دیتابیس یادداشت کنید.

ایجاد فرم مجوز

"."شما وارد شده اید
آن ها ما جلسه را بررسی کرده‌ایم و می‌توانیم دسترسی به داده‌های خاصی را باز کنیم"؛ ) else ($login = ""؛ //کوکی را بررسی کنید، شاید قبلاً از اینجا بازدید کرده باشد اگر (isset($_COOKIE["CookieMy"]))( $ ورود به سیستم = htmlspecialchars( $_COOKIE["CookieMy"]); ) //فرم چاپی ساده<<< html

وارد شدن
کلمه عبور
html )؟>

توجه داشته باشید! اگر ناگهان تجزیه کننده php شما از کار کردن امتناع کرد، یعنی. خود کد php روی صفحه نمایش شما نمایش داده می شود، پس شما به سادگی پردازش PHP را در فایل های html فعال ندارید. تنظیمات در فایل پیکربندی وب سرور httpd.conf (اگر apache) انجام می شود:

برنامه AddType/x-httpd-php .php .html

در IIS، در پنجره Add Module Mapping، *.php را با کاما از هم جدا کنید. اگر این کار را در خانه روی سرور وب خود انجام دهید، و اگر همه این کارها را در هاست انجام دهید، باید به آنها نامه بنویسید و از آنها بخواهید تغییرات لازم را انجام دهند؛ برخی از هاست ها قبلاً آنها را ایجاد کرده اند.

من کد را کامنت کردم، بنابراین فکر می کنم همه چیز باید واضح باشد. اجازه دهید یک بار دیگر به شما یادآوری کنم که در تمام فایل هایی که نمی خواهید محتوای آنها به کاربران غیرمجاز نمایش داده شود، باید session_start را بنویسید، و خب، احتمالاً فقط همین است. اگر سوالی دارید در نظرات بپرسید. موفق باشید!

چندی پیش یکی از بازدیدکنندگان من از من خواست که مقاله ای در مورد آن بنویسم نحوه ثبت نام و اجازه دادن به کاربران در سایت. در واقع، من در حال انجام درخواست او هستم و در این مقاله در مورد نحوه انجام این کار صحبت خواهم کرد.

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

اول از همه اگر بخواهید در وب سایت خود ثبت نام کنید، سپس باید بدانید که داده های کاربر در کجا ذخیره می شوند. قابل ذخیره در یک فایل متنی معمولی، در فایل XML، یا در پایگاه داده دو گزینه اول بسیار خطرناک هستند، بنابراین من استفاده از آنها را توصیه نمی کنم. و در اینجا گزینه سوم است - ذخیره اطلاعات کاربر در پایگاه داده- محبوب ترین، و این روش ذخیره سازی اطلاعات است که به شما توصیه می کنم از آن استفاده کنید.

ما در مورد محل ذخیره سازی تصمیم گرفته ایم. حالا بیایید مستقیماً به آن برویم الگوریتم مجوز:

  1. ایجاد فرم ثبت نام برای HTML.
  2. داده ها را از فرم موجود در اسکریپت کنترل کننده دریافت کنید.
  3. داده های دریافتی را بررسی کنید و در صورت نادرست بودن، دوباره به فرم ثبت نام هدایت شوید.
  4. اگر داده ها درست است، آن را در پایگاه داده بنویسید.

این کل فرآیند است ثبت نام کاربر در سایت. یعنی ثبت نام ذخیره اطلاعات کاربر در سایت است.

نکته بعدی این است مجوز کاربر در سایت، با این حال، قبل از رفتن به آن، من در مورد یک نکته مهم در فرم ثبت نام به شما می گویم - رمز عبور. من قویاً توصیه می کنم که رمزهای عبور را در متن واضح ذخیره نکنید (به عنوان مثال، " 123456 مطمئن شوید که حداقل با استفاده از تابع، آنها را رمزگذاری کنید md5(). و رمز عبور رمزگذاری شده را در پایگاه داده ذخیره کنید.

اکنون مجوز. اولین چیزی که باید بدانید این است که اطلاعات مجوز باید در جایی ذخیره شود. ساده ترین گزینه ذخیره اطلاعات در یک جلسه (یا در کوکی). و حالا الگوریتم:

  1. ایجاد یک فرم مجوز کاربر در HTML، جایی که کاربر باید لاگین و رمز عبور خود را وارد کند.
  2. در اسکریپت کنترلر، داده های کاربر را بپذیرید. اگر به من گوش دادید و رمزهای عبور رمزگذاری شده را در یک پایگاه داده ذخیره کردید، ابتدا رمز عبور حاصل را رمزگذاری کنید. اگر رمزهای عبور واضح در پایگاه داده وجود دارد، دیگر نیازی به رمزگذاری آنها نیست.
  3. صحت داده های وارد شده را بررسی کنید و اگر لاگین و رمز عبور با کاربر موجود در پایگاه داده مطابقت دارد، آن را در آن بنویسید. کوکییا اطلاعات جلسه با ورود به سیستم و رمز عبور رمزگذاری شده (یا رمز عبور باز اگر آن را رمزگذاری نکرده باشید).
  4. اگر ورود به سیستم و/یا رمز عبور اشتباه وارد شده است، سپس به فرم مجوز هدایت شوید.

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

و یک چیز آخر نحوه ساخت دکمه خارج شویدبسیار ساده است. وقتی این دکمه را فشار می دهید، کوکی، یا جلسه بنابراین، کاربر به طور خودکار از سایت خارج می شود.

همانطور که می بینید، همه چیز ابتدایی است، اما هنگام اجرای این الگوریتم قطعاً سوالات زیادی خواهید داشت. به عنوان مثال، هنگام ثبت نام کاربری که لاگینش از قبل در پایگاه داده است، چه باید کرد. اجرای انواع چک ورودی، اجرای چک وجود پست الکترونیکو غیره - اگر برای اولین بار این کار را انجام می دهید همه اینها بسیار دشوار است. با این حال، آب میوه را دادم. اگر در حین اجرا سوالی دارید، در انجمن یا در نظرات بپرسید.

اگر می‌خواهید یکی از بخش‌های وب‌سایت خود را برای یک حلقه محدود اما نامشخص از افراد در دسترس قرار دهید، ساده‌ترین راه برای انجام این کار ثبت نام و مجوز دادن به کاربران است. راه های زیادی برای مجوز دادن به کاربران وجود دارد. می توانید هم از ابزارهای وب سرور و هم از ابزارهای زبان برنامه نویسی استفاده کنید. ما در مورد مورد استفاده از جلسات PHP صحبت خواهیم کرد.

ابتدا، بیایید تمام مراحلی را که در آینده انجام خواهیم داد، بحث کنیم. ما حتی به چه چیزی نیاز داریم؟ ما به یک اسکریپت نیاز داریم که کاربر را ثبت کند، کاربر را مجوز دهد، پس از مجوز، کاربر را به جایی هدایت کند. همچنین باید صفحه ای ایجاد کنیم که از دسترسی کاربران غیرمجاز محافظت شود. برای ثبت نام و مجوز، ما نیاز به ایجاد فرم های HTML داریم. ما اطلاعات مربوط به کاربران ثبت نام شده را در یک پایگاه داده ذخیره خواهیم کرد. این بدان معنی است که ما هنوز به یک اسکریپت برای اتصال به DBMS نیاز داریم. تمام کار ما توسط توابعی که خودمان می نویسیم انجام خواهد شد. ما این توابع را در یک فایل جداگانه ذخیره خواهیم کرد.

بنابراین، ما به فایل های زیر نیاز داریم:

  • اتصال به DBMS؛
  • توابع سفارشی؛
  • مجوز؛
  • ثبت؛
  • صفحه محافظت شده
  • اسکریپت خاموش کردن کاربر.
  • اسکریپتی که وضعیت مجوز کاربر را بررسی می کند.
  • شیوه نامه برای ساده ترین طراحی صفحات ما.

اگر جدول مربوطه در پایگاه داده نداشته باشید، همه اینها بی معنی خواهد بود. ابزار مدیریت DBMS خود را راه اندازی کنید (PhpMyAdmin یا خط فرمان، هر کدام راحت تر است) و پرس و جو زیر را در آن اجرا کنید:

ایجاد جدول «کاربران» («id» int(11) NOT NULL AUTO_INCREMENT، «login» char(16) NOT NULL، «password» char(40) NOT NULL، «reg_date» مهر زمانی NOT NULL DEFAULT CURRENT_TIMEYSTAMP، PRI id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

من فایل های اسکریپت خود را اینگونه نام می برم (همه آنها در یک فهرست قرار می گیرند):

  • database.php;
  • functions.php;
  • login.php;
  • register.php;
  • index.php;
  • logout.php;
  • checkAuth.php;
  • style.css.

هدف هر یک از آنها، مطمئنم، برای شما روشن است. بیایید با اسکریپت اتصال به DBMS شروع کنیم. شما قبلا آن را دیده اید. فقط کد این اسکریپت را در فایلی به نام database.php ذخیره کنید. توابع سفارشی را در فایل functions.php اعلام خواهیم کرد. این همه چگونه کار خواهد کرد؟ یک کاربر غیرمجاز سعی می کند به یک سند محافظت شده index.php دسترسی پیدا کند، سیستم بررسی می کند که آیا کاربر مجاز است یا خیر، اگر کاربر مجاز نباشد، به صفحه مجوز هدایت می شود. در صفحه ورود، کاربر باید یک فرم مجوز را ببیند. بیایید آن را انجام دهیم.

مجوز کاربر

ثبت نام.

حالا باید به فرم ما شکلی داده شود. در عین حال قوانینی را برای عناصر دیگر تعریف خواهیم کرد. با نگاهی به آینده، مطالب شیوه نامه را به طور کامل ارائه خواهم کرد.

/* فایل style.css */ .row ( margin-bottom:10px; عرض:220px;) برچسب ردیف (نمایش:block; font-weight:bold; ) .row input.text (اندازه قلم:1.2em; padding:2px 5px; ) .to_reg ( font-size:0.9em; ) .instruction (font-size:0.8em; color:#aaaaaa; margin-left:2px; cursor:default; ) .error ( color:red; حاشیه چپ: 3 پیکسل؛ )

اگر همه چیز به درستی انجام شد، باید موارد زیر را در مرورگر خود داشته باشید:

البته ما هنوز یک کاربر ثبت نام نکرده ایم و برای ورود باید ثبت نام کنید. بیایید یک فرم ثبت نام درست کنیم.

ثبت نام کاربر

" />

احتمالاً متوجه شده اید که متغیرهای PHP در کدهای HTML وجود دارد. آنها محتویات ویژگی های فیلدهای متنی فرم ها، محتویات ظروف طراحی شده برای نمایش خطاها هستند. اما ما این متغیرها را مقداردهی اولیه نکرده ایم. بیا این کار را انجا دهیم.

ثبت نام کاربر

" />
نام کاربری فقط می تواند شامل کاراکترهای لاتین، اعداد و نمادهای "_"، "-"، "." باشد. نام کاربری نباید کمتر از 4 کاراکتر و بیش از 16 کاراکتر باشد
در رمز عبور خود، فقط می توانید از کاراکترهای لاتین، اعداد و نمادهای "_"، "!"، "(، ")" استفاده کنید. رمز عبور نباید کمتر از 6 کاراکتر و بیش از 16 کاراکتر باشد
رمز عبور قبلاً وارد شده را تکرار کنید

هیچ پارامتری در ویژگی action تگ form مشخص نشده است. در این صورت، هنگام ارسال داده های فرم، در همان اسکریپتی که از آن ارسال شده، پردازش می شود. این بدان معناست که باید کدی بنویسیم که داده های فرم را پردازش کند. اما اجازه دهید ابتدا الگوریتم پردازش آنها را مورد بحث قرار دهیم.

برای خالی نبودن فیلدهای لاگین و رمز عبور نیاز داریم. سپس باید ورود به سیستم را برای مطابقت با الزامات بررسی کنید. رمز عبور همچنین باید شرایط توصیف شده را داشته باشد و رمز عبور مجدداً مشخص شده باید با آن مطابقت داشته باشد و علاوه بر این، آنها باید یکسان باشند. اگر هر یک از این شرایط برآورده نشد، پردازش داده های فرم باید متوقف شود، یک هشدار مناسب باید در آرایه پیام خطا نوشته شود و باید به کاربر نمایش داده شود. برای راحتی کاربر، لاگینی را که وارد کرده است (اگر مشخص کرده باشد) با نوشتن مقدار آن در آرایه فیلد $ ذخیره می کنیم.

اگر همه چیز درست است، در پنجره مرورگر خود، هنگامی که به سند register.php دسترسی پیدا می کنید، باید چیزی شبیه به این را ببینید:

حال فرض کنید کاربر روی دکمه ثبت نام کلیک کرده و فیلدهای فرم را پر نکرده است. طبق الگوریتم ما، لاگین و رمز عبور نمی توانند خالی باشند. در صورت عدم رعایت این شرط امکان ثبت نام وجود ندارد. ما در نظر داریم که پردازش داده های فرم در سناریوی فعلی اتفاق می افتد. این بدان معناست که باید کد آن را با افزودن چک های مناسب تغییر دهیم. بیایید بلافاصله بررسی های زیر را مورد بحث قرار دهیم. اگر هم یک لاگین و هم رمز عبور وارد کرده اید، باید مطابقت آنها را با الزامات مشخص شده بررسی کنید. برای تایید لاگین و رمز عبور، توابع سفارشی را در فایل functions.php ایجاد می کنیم.

/** * functions.php * فایل با توابع سفارشی */ // فایل را با پارامترهای اتصال به DBMS require_once("database.php"); // بررسی تابع نام کاربری checkLogin($str) ( // مقدار اولیه یک متغیر با پیام خطای احتمالی $error = ""؛ // اگر خط ورود وجود ندارد، یک پیام خطا برگردانید if(!$str) ($error = "شما نام کاربری وارد نکرده اید"؛ بازگشت $error؛ ) /** * نام کاربری را با استفاده از عبارات منظم بررسی کنید * ورود به سیستم نباید کمتر از 4 باشد، نه بیشتر از 16 کاراکتر * باید دارای حروف الفبای لاتین باشد، اعداد، * ممکن است شامل کاراکترهای "_"، "-"، "." */ $pattern = "/^[-_.a-z\d](4,16)$/i"؛ $result = preg_match ($pattern, $str). ) // اگر همه چیز خوب است، مقدار true return true را برگردانید؛ ) // بررسی تابع گذرواژه کاربر checkPassword($str) ( // یک متغیر را با پیام خطای احتمالی $error = "" مقداردهی کنید؛ // اگر وجود دارد بدون خط ورود، پیغام خطا برگردانید if(!$ str) ( $error = "شما رمز عبور وارد نکردید"; بازگشت $error; ) /** * رمز عبور کاربر را با استفاده از عبارات منظم بررسی کنید * رمز عبور نباید کوتاهتر از 6، حداکثر 16 کاراکتر باشد * باید دارای حروف لاتین، اعداد باشد * ممکن است حاوی کاراکترهای "_"، "!"، باشد، " (" ")" */ $pattern = "/^[_!)(.a-z\d](6,16)$/i"؛ $result = preg_match($pattern, $str)؛ // اگر چک نشد، پیغام خطا برگردانید if(!$result) ($error = "کاراکترهای نامعتبر در رمز عبور کاربر یا رمز عبور خیلی کوتاه است (طولانی)"؛ بازگشت $error; ) // اگر همه چیز خوب است، برگردانید مقدار true بازگشت true؛ )

اکنون باید فایل register.php را تغییر دهیم تا توابعی که اعلام کردیم فعال شوند. یک شرط به اسکریپت اضافه می کنیم که بررسی می کند آیا دکمه ثبت فشرده شده است یا خیر. در این شرایط، بررسی ورود و رمز عبور راه اندازی می شود. اگر هر یک از بررسی ها ناموفق بود، دوباره فرم را نمایش می دهیم و پیغام خطا را نمایش می دهیم. اگر خطایی وجود نداشته باشد، کاربر را ثبت می کنیم، دیگر فرم ثبت نام را نمایش نمی دهیم، کاربر را از ثبت موفقیت آمیز مطلع می کنیم و با استفاده از تابع header() او را به فرم مجوز هدایت می کنیم.

شما با موفقیت در سامانه ثبت نام کرده اید. اکنون به صفحه ورود هدایت خواهید شد. اگر این اتفاق نیفتاد، با استفاده از لینک مستقیم به آن بروید.

"; header("Refresh: 5; URL = login.php"); ) // در غیر این صورت، کاربر را در مورد خطای else ($errors["full_error"] = $reg; ) ) ) اطلاع دهید ?> ثبت نام کاربر
" />
نام کاربری فقط می تواند شامل کاراکترهای لاتین، اعداد و نمادهای "_"، "-"، "." باشد. نام کاربری نباید کمتر از 4 کاراکتر و بیش از 16 کاراکتر باشد
در رمز عبور خود، فقط می توانید از کاراکترهای لاتین، اعداد و نمادهای "_"، "!"، "(، ")" استفاده کنید. رمز عبور نباید کمتر از 6 کاراکتر و بیش از 16 کاراکتر باشد
رمز عبور قبلاً وارد شده را تکرار کنید

باید متوجه عملکرد جدید دیگری در اسکریپت شده باشید - register() . اما ما هنوز آن را اعلام نکرده ایم. بیا این کار را انجا دهیم.

// تابع ثبت نام کاربر register($login, $password) ( // راه اندازی یک متغیر با پیام خطای احتمالی $error = ""؛ // اگر خط ورود وجود ندارد، یک پیام خطا برگردانید if(!$login) ( $ error = "هیچ ورود به سیستم مشخص نشده است"؛ بازگشت $error؛ ) elseif(!$password) ($error = "هیچ رمز عبور مشخص نشده است"؛ return $error; ) // بررسی کنید که آیا کاربر قبلا ثبت نام کرده است یا خیر // به DBMS connect() ; // یک query string بنویسید $sql = "انتخاب `id` FROM `users` WHERE `login`="" . $login . """؛ // یک پرس و جو در پایگاه داده ایجاد کنید $query = mysql_query ($sql) یا die( ""); // تعداد کاربران با این ورود را بررسی می کنیم، اگر حداقل یک کاربر وجود داشته باشد، // یک پیام خطا برمی گردانیم if(mysql_num_rows($query) > 0) ($error = "کاربر با ورود مشخص شده قبلا ثبت شده است"؛ خطای $ را برگردانید؛ ) // اگر چنین کاربری وجود ندارد، او را ثبت کنید // یک query string بنویسید $sql = "INSERT INTO `users` (`id`,` login`,`password`) VALUES (NULL، "" . $login . " ","" . رمز عبور $. "")"؛ // یک پرس و جو در پایگاه داده ایجاد کنید $query = mysql_query($sql) یا die("

امکان افزودن کاربر وجود ندارد: " . mysql_error() . ". خطایی در خط " . __LINE__ " رخ داد

")؛ // فراموش نکنید که ارتباط خود را از DBMS قطع کنید mysql_close(); // مقدار true را برگردانید، که نشان دهنده بازگشت موفقیت آمیز ثبت نام کاربر به true است؛ )

اگر همه چیز خوب باشد، کاربر شما ثبت خواهد شد. می توانید فرم را تست کنید. سعی کنید کاربرانی را با همان لاگین ثبت کنید. پس از ثبت نام موفق، کاربر به فرم مجوز هدایت می شود. قبلاً ما به سادگی نشانه گذاری را برای نمایش این فرم ایجاد کردیم. از آنجایی که هیچ پارامتری در ویژگی action آن مشخص نشده است، داده های ارسال شده توسط فرم در همان اسکریپت پردازش می شوند. یعنی باید کدی برای پردازش بنویسیم و به سند login.php اضافه کنیم.

مجوز کاربر

;">

اگر در سامانه ثبت نام نکرده اید، ثبت نام کنید.

احتمالاً متوجه شده اید که در اسکریپت مجوز، ما اکنون تابع ناآشنا دیگری داریم - authorization(). این تابع باید ابتدا با بررسی اینکه آیا یک کاربر ثبت نام شده با همان لاگین و رمز عبور در پایگاه داده وجود دارد یا خیر، به کاربر اجازه دهد. اگر چنین کاربری پیدا نشود، مجوز لغو می شود و یک پیام خرابی نمایش داده می شود. اگر بررسی موفقیت آمیز باشد، تابع authorization() جلسه ای را راه اندازی می کند و مقادیر ورود و رمز عبور کاربر را در آن می نویسد، به اسکریپت اطلاع می دهد که مجوز موفقیت آمیز بوده است و اسکریپت کاربر را به صفحه منبع محافظت شده هدایت می کند.

/** * تابع مجوز کاربر. * مجوز کاربر * با استفاده از جلسات PHP انجام خواهد شد. */ مجوز تابع ($login, $password) ( // مقدار اولیه یک متغیر با پیام خطای احتمالی $error = ""؛ // اگر خط ورود وجود ندارد، یک پیام خطا برگردانید if(!$login) ($error = " ورود مشخص نشده است"; return $error; ) elseif(!$password) ($error = "رمز عبور مشخص نشده است"; return $error; ) // بررسی کنید که آیا کاربر قبلاً ثبت نام کرده است یا خیر // اتصال به DBMS connect( )؛ // باید بررسی کنیم که آیا چنین کاربری در بین کاربران ثبت شده است یا نه // یک query string بنویسید $sql = "SELECT `id` FROM `users` WHERE `login`="".$login."" AND ` password`="".$password ."""; // پرس و جو را اجرا کنید $query = mysql_query($sql) or die("

قادر به اجرای پرس و جو نیست: " . mysql_error() . ". خطایی در خط " . __LINE__ " رخ داد

")؛ // اگر کاربری با چنین داده ای وجود ندارد، یک پیام خطا برگردانید if(mysql_num_rows($query) == 0) ($error = "کاربر با داده های مشخص شده ثبت نشده است"؛ بازگشت $error؛ ) // اگر کاربر وجود دارد، session_start();// را شروع کنید و لاگین و رمز عبور کاربر را در آن بنویسید // برای این کار از آرایه superglobal $_SESSION $_SESSION["login"] = $login; $_SESSION[ "password"] = $password؛ / / فراموش نکنید که اتصال به پایگاه داده را ببندید mysql_close()؛ // برای نشان دادن مجوز موفقیت آمیز کاربر، بازگشت true را به درستی برگردانید.

هنگامی که کاربر در یک صفحه محافظت شده قرار می گیرد، باید صحت داده های مجوز او را بررسی کنید. برای این کار به یک تابع سفارشی دیگر نیاز داریم. بیایید آن را checkAuth() بنامیم. وظیفه آن تأیید اطلاعات مجوز کاربر با اطلاعات ذخیره شده در پایگاه داده ما خواهد بود. اگر داده ها مطابقت نداشته باشند، کاربر به صفحه ورود هدایت می شود.

تابع checkAuth($login, $password) ( // اگر لاگین یا گذرواژه ای وجود ندارد، false if(!$login || !$password) return false؛ // بررسی کنید که آیا چنین کاربری ثبت شده است یا خیر // به DBMS connect(); // نوشتن یک query string $sql = "انتخاب `id` FROM `users` WHERE `login`="".$login."" AND `password`="".$password.""" ؛ // پرس و جو را اجرا کنید $ query = mysql_query ($sql) یا die("

قادر به اجرای پرس و جو نیست: " . mysql_error() . ". خطایی در خط " . __LINE__ " رخ داد

")؛ // اگر کاربری با چنین داده ای وجود ندارد، false را برگردانید؛ if(mysql_num_rows($query) == 0) ( return false; ) // فراموش نکنید که اتصال به پایگاه داده را ببندید mysql_close(); // در غیر این صورت بازگشت true true را برگردانید؛ )

اکنون که کاربر به صفحه محافظت شده رسیده است، باید تابع را فراخوانی کنیم تا داده های مجوز را بررسی کنیم. ما اسکریپت تماس و تأیید را در یک فایل checkAuth.php جداگانه قرار می دهیم و آن را به صفحاتی که برای دسترسی عموم بسته می شود وصل می کنیم.

/** * اسکریپتی برای بررسی مجوز کاربر */ // جلسه ای را شروع کنید که از آن لاگین و رمز عبور // کاربران مجاز را استخراج کنیم session_start(); // یک فایل را با توابع سفارشی وصل کنید require_once("functions.php"); /** * برای تعیین اینکه آیا کاربر مجاز است یا خیر، باید * بررسی کنیم که آیا رکوردهایی برای ورود * و رمز عبور او در پایگاه داده وجود دارد یا خیر. برای این کار از تابع سفارشی * برای بررسی صحت اطلاعات کاربر وارد شده استفاده می کنیم. * اگر این تابع false را برگرداند، هیچ مجوزی وجود ندارد. * اگر مجوز وجود نداشته باشد، ما به سادگی * کاربر را به صفحه مجوز هدایت می کنیم. */ // اگر جلسه حاوی داده های ورود و رمز عبور است، // آنها را بررسی کنید if(isset($_SESSION["login"]) && $_SESSION["login"] && isset($_SESSION["password" ]) && $_SESSION["گذرواژه"]) ( // اگر بررسی داده های موجود با شکست مواجه شد if(!checkAuth($_SESSION["login"], $_SESSION["password"])) (// هدایت کاربر به سرصفحه صفحه ورود( "location: login.php")؛ // اجرای خروج اسکریپت را متوقف کنید؛ ) ) // اگر اطلاعاتی در مورد ورود یا رمز عبور کاربر وجود نداشته باشد، // فرض می کنیم مجوزی وجود ندارد، کاربر را تغییر مسیر می دهیم // به صفحه مجوز other ( header("location: login.php"); // توقف اجرای خروجی اسکریپت؛ )

حالا بیایید کد صفحه امن خود را ایجاد کنیم. بسیار ساده خواهد بود.

مجوز کاربر و ثبت نام

مجوز موفقیت آمیز

شما به یک صفحه امن دسترسی پیدا کرده اید. می توانید از سیستم خارج شوید.

همانطور که می بینید، در یک سند محافظت شده ما فقط یک فایل را شامل می شود - checkAuth.php. همه فایل های دیگر در اسکریپت های دیگر متصل می شوند. بنابراین، کد ما دست و پا گیر به نظر نمی رسد. ما ثبت نام و مجوز کاربران را سازماندهی کردیم. اکنون باید به کاربران اجازه خروج از سیستم را بدهید. برای این کار یک اسکریپت در فایل logout.php ایجاد می کنیم.

/** * اسکریپت خروج کاربر. از آنجایی که کاربران * از طریق جلسات وارد می شوند، لاگین و رمز عبور آنها * در آرایه superglobal $_SESSION ذخیره می شود. برای * خروج از سیستم، به سادگی مقادیر * آرایه $_SESSION["login"] و $_SESSION["password"] را از بین ببرید، پس از آن ما * کاربر را به صفحه ورود هدایت می کنیم */ // Be حتماً جلسه session_start(); unset($_SESSION["login"]); unset($_SESSION["رمز عبور"]); header("مکان: login.php");

اسکریپت ثبت نام، مجوز و تأیید کاربر آماده است. شما می توانید آن را برای خودتان استفاده کنید، آن را تکمیل کنید، آن را متناسب با نیاز خود تغییر دهید. اگر سوالی دارید می توانید در نظرات بپرسید. شما می توانید تمام فایل های مورد بحث را در اینجا دانلود کنید و در یک آرشیو بسته بندی شده اند.

P.S. می دانم که بهتر است کد شی گرا بنویسید، می دانم که ارزش انتقال و ذخیره رمز عبور در متن واضح را ندارد، اطلاعات وارد شده به پایگاه داده باید از قبل بررسی شود. میدانم. من در این مورد اینجا صحبت نمی کنم.

سلام! اکنون سعی می کنیم با استفاده از PHP + MySQL ساده ترین ثبت نام را در سایت پیاده سازی کنیم. برای این کار باید آپاچی روی کامپیوتر شما نصب باشد. اصل کار اسکریپت ما در زیر نشان داده شده است.

1. بیایید با ایجاد جدول کاربران در پایگاه داده شروع کنیم. این شامل اطلاعات کاربر (ورودی و رمز عبور) خواهد بود. بیایید به phpmyadmin برویم (اگر در حال ایجاد یک پایگاه داده در رایانه شخصی خود هستید http://localhost/phpmyadmin/). یک جدول ایجاد کنید کاربران، دارای 3 فیلد خواهد بود.

من آن را در پایگاه داده mysql ایجاد می کنم، شما می توانید آن را در پایگاه داده دیگری ایجاد کنید. سپس مقادیر را مانند شکل تنظیم کنید:

2. اتصال به این جدول الزامی است.بیایید یک فایل ایجاد کنیم bd.php. محتوای آن:

$db = mysql_connect("سرور MySQL شما"،"ورود به این سرور"،"رمز عبور برای این سرور");
mysql_select_db ("نام پایگاه داده ای که به آن متصل می شویم"، $db);
?>

در مورد من به این صورت است:

$db = mysql_connect("localhost", "user","1234");
mysql_select_db("mysql",$db);
?>

صرفه جویی bd.php.
عالی! ما یک جدول در پایگاه داده و یک اتصال به آن داریم. اکنون می توانید شروع به ایجاد صفحه ای کنید که کاربران داده های خود را در آن جا بگذارند.

3. یک فایل reg.php با محتویات ایجاد کنید (همه نظرات داخل):



ثبت


ثبت
















4. یک فایل ایجاد کنید، که داده ها را وارد پایگاه داده و ذخیره کاربر می کند. save_user.php(نظرات در داخل):



{
}
//اگر لاگین و رمز عبور وارد شده باشد، آن‌ها را پردازش می‌کنیم تا برچسب‌ها و اسکریپت‌ها کار نکنند، شما هرگز نمی‌دانید افراد چه چیزی را وارد می‌کنند.


//حذف فضاهای اضافی
$login = trim($login);
$password = trim($password);
// به پایگاه داده متصل شوید
// وجود کاربری با همان ورود را بررسی کنید
$result = mysql_query("SELECT ID FROM users WHERE login="$login"",$db);
if (!empty($myrow["id"])) (
exit("با عرض پوزش، لاگینی که وارد کردید قبلا ثبت شده است. لطفا ورود دیگری را وارد کنید.");
}
// اگر اینطور نیست، داده ها را ذخیره کنید
$result2 = mysql_query("INSERT INTO users (login,password) VALUES("$login","$password")");
// بررسی کنید که آیا خطا وجود دارد
اگر ($result2=="TRUE")
{
echo "شما با موفقیت ثبت نام کردید! اکنون می توانید وارد سایت شوید. صفحه اصلی";
}
دیگر(
echo "خطا! شما ثبت نام نکرده اید.";
}
?>

5. اکنون کاربران ما می توانند ثبت نام کنند!در مرحله بعد، باید یک "در" برای کاربرانی که قبلا ثبت نام کرده اند ایجاد کنید تا وارد سایت شوند. index.php(نظرات در داخل) :

// کل رویه در جلسات کار می کند. جایی است که اطلاعات کاربر در زمانی که او در سایت است ذخیره می شود. راه اندازی آنها در همان ابتدای صفحه بسیار مهم است!!!
session_start();
?>


صفحه نخست


صفحه نخست











ثبت نام



// بررسی کنید که آیا متغیرهای login و user id خالی هستند یا خیر
اگر (خالی ($_SESSION["login"]) یا خالی ($_SESSION["id"]))
{
// اگر خالی باشد، پیوند را نمایش نمی دهیم
echo "شما به عنوان مهمان وارد شده اید
این لینک فقط برای کاربران ثبت نام شده در دسترس است";
}
دیگر
{

در پرونده index.phpما لینکی را نمایش خواهیم داد که فقط برای کاربران ثبت نام شده باز خواهد بود. این تمام نکته اسکریپت است - محدود کردن دسترسی به هر داده.

6. یک فایل با تایید ورود و رمز عبور وارد شده باقی می ماند. testreg.php (نظرات در داخل):

session_start();// کل رویه روی جلسات کار می کند. جایی است که اطلاعات کاربر در زمانی که او در سایت است ذخیره می شود. راه اندازی آنها در همان ابتدای صفحه بسیار مهم است!!!
if (isset($_POST["login"])) ($login = $_POST["login"]; if ($login == "") ( unset($login);) ) //ورود وارد شده توسط کاربر را وارد متغیر $login کنید، اگر خالی است، متغیر را از بین ببرید
if (isset($_POST["password"])) ($password=$_POST["password"]; if ($password =="") ( unset($password);) )
// پسورد وارد شده توسط کاربر را در متغیر $password قرار دهید، اگر خالی است، متغیر را از بین ببرید.
اگر (خالی($login) یا خالی($password)) //اگر کاربر لاگین یا رمز عبور وارد نکرده باشد، خطا صادر می کنیم و اسکریپت را متوقف می کنیم.
{
exit ("شما همه اطلاعات را وارد نکرده اید، به عقب برگردید و تمام فیلدها را پر کنید!");
}
//اگر لاگین و رمز عبور وارد شده باشد، آن‌ها را پردازش می‌کنیم تا برچسب‌ها و اسکریپت‌ها کار نکنند، شما هرگز نمی‌دانید افراد چه چیزی را وارد می‌کنند.
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
//حذف فضاهای اضافی
$login = trim($login);
$password = trim($password);
// به پایگاه داده متصل شوید
include("bd.php");// فایل bd.php باید در همان پوشه ای باشد که همه پوشه های دیگر وجود دارد، اگر اینطور نیست، فقط مسیر را تغییر دهید.

$result = mysql_query("SELECT * FROM users WHERE login="$login"",$db); //بازیابی از پایگاه داده تمام داده های مربوط به کاربر با ورود وارد شده
$myrow = mysql_fetch_array($result);
if (خالی ($myrow["password"]))
{
//اگر کاربری با لاگین وارد شده وجود نداشته باشد
}
دیگر(
//اگر وجود دارد، پسوردها را بررسی کنید
if ($myrow["password"]==$password) (
//اگر پسوردها مطابقت داشته باشند، یک جلسه برای کاربر راه اندازی می کنیم! می توانید به او تبریک بگویید، او وارد شد!
$_SESSION["login"]=$myrow["login"];
$_SESSION["id"]=$myrow["id"];//این داده اغلب استفاده می شود، بنابراین کاربر وارد شده آن را با خود حمل می کند.
echo "شما با موفقیت وارد سایت شدید! صفحه اصلی"؛
}
دیگر(
//اگر پسوردها مطابقت ندارند

خروج ("با عرض پوزش، ورود یا رمز عبوری که وارد کردید نادرست است.")
}
}
?>

باشه الان همه چی تموم شد! درس ممکن است خسته کننده باشد، اما بسیار مفید است. فقط ایده ثبت نام در اینجا نشان داده شده است، سپس می توانید آن را بهبود بخشید: افزودن حفاظت، طراحی، فیلدهای داده، بارگیری آواتارها، خروج از حساب (برای انجام این کار، به سادگی متغیرهای جلسه را با عملکرد حذف کنید. تنظیم نشده) و غیره. موفق باشید!

من همه چیز را بررسی کردم، درست کار می کند!

بهترین مقالات در این زمینه