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

شاید دوست داشته باشید بیشتر ببینید روش مدرنایجاد چنین فرمی من هنوز برنامه هایی برای ارائه کامل مدرن و به روز آن دارم، اما می توانید آن فرم را ببینید بازخوردرا می توان با استفاده از ترفندهای شی گرا در 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 کاراکتر باشد
رمز عبور قبلاً وارد شده را تکرار کنید

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

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

اگر همه چیز درست است، در پنجره مرورگر خود، با مراجعه به سند 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) ; // اگر چک ناموفق بود، یک پیغام خطا برگردانید if(!$result) ($error = "کاراکترهای نامعتبر در نام کاربری یا نام کاربری خیلی کوتاه است (طولانی)"؛ بازگشت $error; ) // اگر همه چیز خوب است، بازگشت true 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 = "ورود مشخص نشده است"؛ return $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 = "The کاربر با ورود مشخص شده قبلاً ثبت شده است"؛ خطای $ را برگرداند؛ ) // اگر چنین کاربری وجود ندارد، آن را ثبت کنید // query string را بنویسید $sql = "INSERT INTO `users` (`id`,`login`, "رمز عبور") VALUES (NULL، "" . $login . " """ . رمز عبور $. "")"؛ // یک پرس و جو در پایگاه داده ایجاد کنید $query = mysql_query($sql) یا die("

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

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

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

مجوز کاربر

;">

در صورت عدم ثبت نام در سامانه لطفا ثبت نام نمایید.

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

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

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

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

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

تابع checkAuth($login, $password) ( // اگر لاگین یا رمز عبور وجود ندارد، false if(!$login || !$password) return false؛ // بررسی کنید که آیا چنین کاربری ثبت شده است // به DBMS متصل شوید connect(); // رشته پرس و جو را بنویسید $sql = "انتخاب `id` FROM `users` WHERE `login`="".$login."" AND `password`="".$password."""; // پرس و جو را اجرا کنید $ query = mysql_query($sql) or 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["رمز عبور"])) (// هدایت کاربر به سرصفحه صفحه ورود ("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، یک راه حل جامع برای بهبود عملکرد پروژه های تحت کنترل CMS 1C-Bitrix و ابزار اشکال زدایی اسکریپت PHP.

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

اصل عملیات


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

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

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

توانایی ها

  • اجرای وب سرور آپاچی با ماژول های اضافی که در حساب های میزبانی مشترک معمولی موجود نیستند.
  • راه اندازی مجدد وب سرور شخصی از کنترل پنل.
  • استفاده از شتاب دهنده های PHP که سرعت کار CMS های مختلف را به میزان قابل توجهی افزایش می دهد: Zend OPCache، APC، xCache و eAccelerator.
  • مدیریت پسوند PHP: Zend Optimizer، ionCube Loader، xDebug.
  • بهینه سازی پروژه های تحت کنترل CMS 1C-Bitrix با راه اندازی یک محیط PHP که الزامات CMS را برآورده می کند.
  • عملکرد بهتر از یک وب سرور عمومی با داشتن فرآیندهای درخواستی که همیشه در حال اجرا هستند.

توصیه می‌کنیم هنگام میزبانی پروژه‌های جدی با ترافیک متوسط ​​و بالا یا پروژه‌هایی که نیاز به تنظیمات محیطی غیراستاندارد و قابلیت‌های پیشرفته مدیریت سایت دارند، از سرویس «سرور وب شخصی» استفاده کنید.

کنترل نسخه وب سرور

PHP

PHP (پیش پردازشگر فرامتن)- معروف ترین و گسترده ترین زبان برنامه نویسی وب. نسخه PHP از طریق مدیریت وب سرور شخصی تنظیم شده است (از 5.2 تا 7.1 موجود است). نسخه پیشنهادی PHP که الزامات اکثر CMS ها و برنامه های افزودنی را برآورده می کند PHP 5.6 است. لیست نسخه های فعلی به موقع به روز می شود.

uWSGI (پایتون)

WSGI (رابط دروازه وب سرور)یک استاندارد محبوب برای رابط بین یک برنامه پایتون در حال اجرا در سمت سرور و خود وب سرور آپاچی است. برای پروژه های نوشته شده در پایتون مورد نیاز است.

Node.js

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

استفاده از شتاب دهنده های PHP

شتاب دهنده های PHP افزونه هایی هستند که کد اسکریپت PHP کامپایل شده را در حافظه ذخیره می کنند تا دفعه بعد که فراخوانی می شود سریع اجرا شوند. آنها به شما امکان می دهند تا سرعت اجرای اسکریپت های PHP را به میزان قابل توجهی افزایش دهید و منابع وب سرور مورد نیاز برای این کار را کاهش دهید (طبق برخی برآوردها - 5-20 برابر).

در روش معمولی PHP، هر اسکریپت باید قبل از اجرا در کد ماشین کامپایل شود و تنها پس از آن اجرا شود. هر بار که به اسکریپت دسترسی پیدا می شود، کامپایل انجام می شود، یعنی هر بار که صفحه نمایش داده می شود، کامپایل اسکریپت دوباره شروع می شود. کامپایل کردن اسکریپت به زمان و منابع CPU نیاز دارد. شتاب دهنده های PHP نسخه کامپایل شده اسکریپت را در RAM ذخیره می کنند. بنابراین، در فراخوانی های بعدی به اسکریپت، کامپایل مورد نیاز نیست و PHP بلافاصله شروع به اجرای کد ماشین می کند. ذخیره سازی منابع CPU را ذخیره می کند و زمان رندر صفحه را کاهش می دهد.

علاوه بر عملکرد اصلی - ذخیره اسکریپت - شتاب دهنده ها همچنین اسکریپت هایی را با قابلیت ذخیره متغیرهای دلخواه در RAM برای دسترسی سریع بعدی ارائه می دهند. مکانیسم های کش صفحه در بسیاری از سیستم های مدیریت محتوا (CMS) بر اساس این ویژگی است که به طور قابل توجهی سرعت کار آنها را افزایش می دهد.

هنگام استفاده از یک وب سرور شخصی، چهار شتاب دهنده در دسترس هستند که ذخیره اسکریپت های PHP را فراهم می کنند.

Zend OPCache

Zend OPCache- با استفاده از تکنیک کش کردن اسکریپت های کامپایل شده (opcode) در RAM و اعمال بهینه سازی های اضافی، سرعت کار سایت ها را در زبان PHP افزایش می دهد. آزمایش استفاده از این شتاب دهنده بهترین نتایج را برای اکثر CMS ها در ارتباط با PHP 5.6 نشان داد.

APC

APC (کش PHP جایگزین)- نرم افزار منبع باز برای کش کردن نتایج اسکریپت های PHP. توصیه می شود از کش APC برای بهبود عملکرد سایت های ایجاد شده در CMS های محبوب مانند جوملا، وردپرس، دروپال، UMI.CMS استفاده کنید. PHP 5.6 و 7.0 از ماژول های شتاب دهنده APCu و APCu-bc پشتیبانی می کند.

شتاب دهنده الکترونیکی

شتاب دهنده الکترونیکی- عملکردهای یک شتاب دهنده، بهینه ساز و بازکننده بسته بندی را انجام می دهد و دارای توابع ذخیره سازی پویا محتوای داخلی است. با توجه به نتایج آزمایش انجام شده با نمایندگان سازندگان CMS، eAccelerator برای استفاده با CMS "1C-Bitrix: Site Management" و HostCMS محبوب توصیه می شود.

xCache

xCache- موثر برای پروژه های با بار بالا. شتاب دهنده xCache فقط در صورت استفاده از CMS که سازندگان آن را توصیه می کنند در دسترس است.

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

ماژول ها و افزونه های PHP

ZendOptimizer

Zend Optimizer- یک برنامه از Zend Technologies Ltd. افزونه Zend Optimizer یک ماژول سمت سرور است که برای اجرای اسکریپت های کدگذاری شده با Zend Encoder و Zend SafeGuard Suite استفاده می شود و سرعت آنها را به میزان قابل توجهی افزایش می دهد. فقط برای PHP 5.2 موجود است.

ionCube Loader

ionCube Loader- نرم افزار مورد نیاز برای رمزگشایی کد منبع کدگذاری شده با استفاده از فناوری ionCube Encoder. در مجموع، مجموعه ابزارهای ionCube (Encoder و Loader) به شما امکان می دهد کد منبع PHP را کدگذاری کنید، مبهم کنید و مجوز دهید.

xDebug

xdebug- نرم افزار منبع باز مورد نیاز توسعه دهندگان با تجربه برای اشکال زدایی اسکریپت های سایت. گنجاندن ابزار پرمصرف xDebug امکان ورود به سیستم را پیاده سازی می کند، که در آن تمام اقدامات ثبت می شود، از دسترسی به سایت از مرورگر تا دریافت صفحه نهایی: اجرای اسکریپت های داخلی، تولید پرس و جوهای SQL، دسترسی به سایت تا سوم منابع حزبی و غیره

بهینه سازی برای "1C-Bitrix"

سیستم مدیریت محتوای محبوب "1C-Bitrix" تعدادی سیستم مورد نیاز برای سایت میزبان دارد، از جمله تنظیم رشته های چند بایتی، که در نسخه های مدرن PHP باید فقط از طریق فایل php.ini تغییر داده شود. هم توسعه دهندگان باتجربه و هم کاربران تازه کار می توانند مکانیسم اضافه بار تابع mbstring.func_overload و رمزگذاری کاراکتر mbstring.internal_encoding پشتیبانی شده را با انتخاب نسخه مورد نیاز در لیست 1C-Bitrix Optimization پیکربندی کنند.

در نتیجه آزمایش عملکرد سایتی که توسط 1C-Bitrix مدیریت می شود، بهترین نتایج در هنگام استفاده از کش توصیه شده با استفاده از شتاب دهنده ZendOPCache در ارتباط با PHP 5.6 به دست آمد.

برای اعمال تنظیمات، باید تنظیمات مورد نظر را اعمال کنید و وب سرور شخصی را مجددا راه اندازی کنید.

بازخوردها (0)

به روز شده در: 2018-03-12

نوشته شده در: 2016-12-21

با گذشت زمان PHP ویژگی‌هایی را اضافه می‌کند که توسعه برنامه‌های کاربردی امن را ارتقا می‌دهند، همچنین ویژگی‌هایی منسوخ یا حذف شده که نوشتن کد ناامن را آسان می‌کنند.

این آموزش را بخوانید تا بیاموزید چگونه یک سیستم ورود و ثبت نام مدرن ایجاد کنید که از ویژگی‌های متمرکز بر امنیت PHP بهره می‌برد و از jQuery برای ارسال درخواست‌های AJAX و بوت استرپ برای ارائه یک رابط کاربری سریع و زیبا استفاده می‌کند که می‌تواند بدون توجه به استفاده از چارچوب‌های دیگر یا فریمورک‌های دیگر کار کند. نه



اگر سوال یا نظری دارید می توانید پیامی را به عنوان نظر به این مقاله یا در آن ارسال کنید.

تغییر گزارش

27/03/2017: اطلاعات دانلود و نصب بیشتری با استفاده از ابزار آهنگساز اضافه شد.

01-01-2017: مقاله را به روز کرد تا نشان دهد که این اقدامات همچنان در سال 2017 ایمن هستند




برای ارسال نظر باید یک کاربر ثبت نام شده باشید یا وارد شوید

بلافاصله با حساب کاربری خود وارد شوید:

روز بخیر دوستان! بیایید نگاهی به ثبت نام کاربر در PHP بیندازیم. ابتدا اجازه دهید شرایط ثبت نام کاربر خود را تعریف کنیم:

  • رمز عبور با استفاده از یک الگوریتم رمزگذاری می شود MD5
  • رمز عبور "نمک" خواهد بود
  • ورود چک مشغول است
  • فعال سازی کاربر با نامه
  • ضبط و ذخیره سازی داده ها در DBMS MySQL

برای نوشتن این اسکریپت باید بدانیم ثبت نام کاربر چیست. ثبت نام کاربر به دست آوردن داده های واقعی کاربر، پردازش و ذخیره داده ها است.

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

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

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

از آنجایی که ما تمام داده ها را در آن ذخیره خواهیم کرد DBMS MySQL، سپس بیایید یک جدول کوچک ایجاد کنیم که در آن داده های ثبت نام را ذخیره می کنیم.

ابتدا باید یک جدول در پایگاه داده ایجاد کنید. بیایید میز را صدا کنیم bez_regجایی که bezپیشوند جدول است و regنام جدول

ساختار جدول: bez_reg

--- ساختار جدول `bez_reg` -- ایجاد جدول در صورت عدم وجود `bez_reg` (`id` int(11) NOT NULL AUTO_INCREMENT، `login` varchar(200) NOT NULL، `pass` varchar(32) NOT NULL , `salt` varchar(32) NOT NULL, `active_hex` varchar(32) NOT NULL, `status` int(1) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

حالا بیایید اسکریپت های اصلی را برای کار بیشتر ایجاد کنیم.

فایل INDEX.PHP

فایل CONFIG.PHP

"); ?>

فایل 404.HTML

خطای 404

خطای 404

خطای 404 در صفحه وجود داشت

برگشت

فایل BD.PHP

فایل INDEX.HTML

ثبت نام کاربر PHP MySQL با ایمیل فعال سازی

فایل FUNCT.PHP

"."\n"; if(is_array($data)) ( foreach($data به عنوان $val) $err .= "

  • ".$val."
  • "."\n"; ) else $err .= "
  • ".$data."
  • "."\n"; $err .= ""."\n"; بازگشت $err; ) /** بسته بندی جستجوی ساده MySQL * @param string $sql */ تابع mysqlQuery($sql) ($res = mysql_query($sql)؛ /* نتیجه را بررسی کنید این نشان می‌دهد درخواست واقعی به MySQL ارسال شد و همچنین خطا.*/ if(!$res) ($message = "Bad Query: " . mysql_error() . "\n"; $message .= "Entire Query : " . $ sql; die($message); ) return $res; ) /**مولد نمک ساده * @param string $sql */ تابع salt() ($salt = substr(md5(uniqid()), - 8); return نمک دلار؛ )

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

    فایل REG.PHP

    شما با موفقیت ثبت نام کردید! لطفا اکانت خود را فعال کنید!!"; //فعال کردن حساب if(isset($_GET["key"])) (//کلید را بررسی کنید $sql = "SELECT * FROM `". BEZ_DBPREFIX ."reg` WHERE `active_hex` = "". escape_str ($_GET["کلید"]) """; $res = mysqlQuery($sql); if(mysql_num_rows($res) == 0) $err = "کلید فعال سازی نامعتبر است!"؛ //بررسی خطاها و به کاربر نمایش دهید if(count($err) > 0) echo showErrorMessage($err)؛ else (//دریافت آدرس کاربر $row = mysql_fetch_assoc($res); $email = $row["login"]; //کاربر حساب را فعال کنید $sql = "UPDATE `".BEZ_DBPREFIX ."reg` SET `status` = 1 WHERE `login` = "".$email ."""؛ $res = mysqlQuery($sql)؛ / /ارسال ایمیل فعال سازی $title = "(!LANG:حساب شما در http://website با موفقیت فعال شد"; $message = "Поздравляю Вас, Ваш аккаунт на http://сайт успешно активирован"; sendMessageMail($email, BEZ_MAIL_AUTOR, $title, $message); /*Перенаправляем пользователя на нужную нам страницу*/ header("Location:". BEZ_HOST ."less/reg/?mode=reg&active=ok"); exit; } } /*Если нажата кнопка на регистрацию, начинаем проверку*/ if(isset($_POST["submit"])) { //Утюжим пришедшие данные if(empty($_POST["email"])) $err = "Поле Email не может быть пустым!"; else { if(!preg_match("/^!} [ایمیل محافظت شده](+\.)+(2,6)$/i", $_POST["email"])) $err = "ایمیل اشتباه وارد شده است"."\n"؛ ) if(empty($_POST[ "pass" ])) $err = "فیلد رمز عبور نمی تواند خالی باشد"؛ if(empty($_POST["pass2"])) $err = "فیلد تایید رمز عبور نمی تواند خالی باشد"؛ //بررسی خطاها و نمایش به کاربر اگر (count($err) > 0) echo showErrorMessage($err); else ( /*به بررسی داده های وارد شده ادامه دهید گذرواژه های منطبق را بررسی کنید*/ if($_POST["pass"] != $_POST["pass2" ] ) $err = "گذرواژه ها مطابقت ندارند"؛ //بررسی خطاها و نمایش آن به کاربر if(count($err) > 0) echo showErrorMessage($err)؛ else ( /*بررسی کنید آیا چنین کاربری در پایگاه داده* / $sql = "انتخاب `login` FROM `".BEZ_DBPREFIX ."reg` WHERE `login` = "".escape_str($_POST["email"]) """؛ $res = mysqlQuery($ sql)؛ if(mysql_num_rows($res) > 0) $err = "با عرض پوزش ورود: ". $_POST["ایمیل"] ."مشغول است!"//بررسی خطاها و نمایش آن به کاربر if(count($err) > 0) echo showErrorMessage($err)؛ در غیر این صورت (//HASH نمک را دریافت کنید $salt = salt(); // رمز عبور را نمک بزنید $pass = md5(md5($_POST["pass"]).$salt)؛ /*اگر همه چیز خوب پیش رفت، داده ها را در پایگاه داده بنویسید*/ $sql = "INSERT INTO `". BEZ_DBPREFIX ."reg ` VALUES(""""" .escape_str($_POST["ایمیل"])."، "". $pass ."، "". $salt ."، "". md5($salt) . ""، 0)"؛ $ res = mysqlQuery($sql)؛ //ارسال ایمیل فعال سازی $url = BEZ_HOST ."less/reg/?mode=reg&key=". md5($salt); $title = "(! LANG:ثبت نام در http:///website"; $message = "Для активации Вашего акаунта пройдите по ссылке ". $url .""; sendMessageMail($_POST["email"], BEZ_MAIL_AUTOR, $title, $message); //Сбрасываем параметры header("Location:". BEZ_HOST ."less/reg/?mode=reg&status=ok"); exit; } } } } ?>!}

    REG_FORM.HTML FILE

    ثبت نام کاربر PHP MySQL با ایمیل فعال سازی

    پست الکترونیک *:
    کلمه عبور *:
    تایید رمز عبور *:

    فیلدهایی با نماد *ضروری

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

    فایل AUTH.PHP

    0) echo showErrorMessage($err); else (/*یک عبارت واکشی پایگاه داده برای احراز هویت کاربر ایجاد کنید*/ $sql = "SELECT * FROM `". BEZ_DBPREFIX ."reg` WHERE `login` = "". escape_str($_POST["email"]) ." "AND `وضعیت` = 1"؛ $res = mysqlQuery($sql)؛ //اگر ورود به سیستم مطابقت دارد، رمز عبور را بررسی کنید if(mysql_num_rows($res) > 0) (//دریافت داده از جدول $row = mysql_fetch_assoc($res )؛ if(md5(md5($_POST["pass"]).$row["salt"]) == $row["pass"]) ($_SESSION["user"] = true؛ // بازنشانی پارامترها header("Location:". BEZ_HOST ."less/reg/?mode=auth"); exit; ) else echo showErrorMessage ("رمز عبور اشتباه!")؛ ) else echo showErrorMessage ("ورود به سیستم" ". $_POST["ایمیل"] ."پیدا نشد!"))) ?>

    برای کسانی که آخرین نسخه PHP را دارند، من این اسکریپت را با استفاده از آن پست می کنم PDOزیرا افزونه MySQLمنسوخ شده و از نسخه جدید PHP حذف شده است. دانلود ثبت نام و مجوز php mysql pdo

    آرشیو در 24 فوریه 2015 به روز شد.

    توجه:اگر از این اسکریپت در سرور محلی مانند دنور,XAMPP، پس نباید منتظر نامه هایی به صندوق پست خود باشید. نامه ها در قسمت خرد قرار دارند ارسال ایمیل. AT دنورشما می توانید آنها را در طول راه پیدا کنید Z:\tmp\!sendmail\شما می توانید این فایل ها را در هر سرویس گیرنده ایمیلی باز کنید.

    سلام! اکنون سعی می کنیم با استفاده از 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 "شما با موفقیت وارد سایت شدید! صفحه اصلی";
    }
    دیگر(
    //اگر رمزهای عبور مطابقت ندارند

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

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

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