چگونه یک سیستم عضوگیری ساده توسط PHP بسازیم؟
لازم است یادآوری کنم که کدهای موجود در برنامه به صورت بسیار ساده نوشته شدهاند و امکان دارد که بر حسب سیستم عامل و یا نسخه PHP که بر روی سیستم شما میباشد اجرا نشوند. چنانچه با این مشکل برخورد کردید، عیب را در نحوه نصب PHP و یا سیستم عامل خود جستجو کنید.چنانچه با PHP و برنامهنویسی تحت وب و نیز طراحی صفحات و بانک اطلاعاتی به صورت ابتدایی آشنایی ندارید توصیه میکنم که این مقاله را دنبال نکنید. کلیه فایلهای مورد نیاز در انتهای مقاله به صورت فشرده شده موجود میباشند. قبل از ادامه مقاله توصیه میکنم که حتما آن ها را دانلود کرده و در ویرایشگرهای خود باز کنید. ویرایشگر مورد استفاده من Notepad میباشد. در طی این مقاله شما استفاده آسان از موارد زیر و همچنین به کاربردن آنها در برنامههای دیگر را یاد خواهید گرفت:
ساختن بانک اطلاعاتی (Database): جهت این کار ابتدا یک بانک اطلاعاتی با نام دلخواه بسازید و سپس برای ایجاد جداول و مقداردهی اولیه در قسمت Query Window کد زیر را وارد کنید:
sql.txt لازم به یادآوری است که چنانچه برنامه نویس حرفهای میباشید و یا در زمینه بانکهای اطلاعاتی سر رشته دارید، ممکن است از شیوه آرایش جدولها در این بانک اطلاعاتی خوشتان نیاید که در اینصورت میتوانید به دلخواه آن را تغییر دهید. شیوه جدولبندی و آرایش جدولها در این مقاله به شیوه معمولی میباشد. حال که بانک اطلاعاتی مورد نیاز ایجاد شد به سراغ گرفتن اطلاعات از کاربر و ذخیره آن در بانک اطلاعاتی میرویم. ثبت نام کاربر: چنانچه فرم نمونه را تغییر نمیدهید تمام نامها برای هر فیلد درست انتخاب شدهاند و نیازی به تغییر آنها نیست. لازم به یادآوری است که خاصیت action فرم باید به مسیر درستی (در اینجا register.php) برای فرستادن اطلاعات اشاره کند. اکنون فایل register.php را باز کنید. به ظاهر کد پیچیدهای است. اماعجله نکنید! در ادامه درباره ساختار کدها و طرز کار هریک از آنها صحبت خواهد شد. اگر به توضیحاتی که در درون کدها نوشته شده است توجه کنید درک آن بسیار ساده و قابل فهم خواهد بود. حال به توضیح برنامه میپردازیم:
این خط فایل db.php که حاوی کدهای لازم برای ارتباط با بانک اطلاعاتی میباشد را در بدنه اصلی برنامه فراخوانی میکند. باز هم این نکته را یادآوری میکنم که چنانچه اطلاعات زیادی درباره بانکهای اطلاعاتی و نحوه برنامه نویسی آنها ندارید، حتما آموختههای خود را تکمیل کنید تا فهم و درک مطلب برای شما آسانتر شود. من یک نمونه اتصال به بانک اطلاعاتی را که در db.php نوشته شده در زیر آوردهام. اگر جزو کاربران حرفهای PHP هستید تغییرات دلخواه و یا حتی جدید را میتوانید در db.php انجام دهید:
در مورد کد بالا به نکات زیر توجه کنید:
برای اتصال به بانک اطلاعاتی از یک mysql_pconnect استفاده کردیم که وظیفه ارتباط دائمی را تا پایان برنامه به عهده داشته دارد. این کار باعث صرفه جویی در زمان اجرای برنامه میشود ولی این نکته حائز اهمیت است که استفاده از یک ارتباط دائمی در بعضی موارد ممکن است به سود شما نباشد و باعث ایجاد بار اضافی بر روی سرور شما شود. سایر دستورات مربوط به بالا واضح است و احتیاج به توضیح ندارند. حال به ادامه توضیحات می پردازیم:
همانطور که از توضیح اول کد مشخص است، اطلاعات فرستاده شده از طریق فرم در متغیرهایی ذخیره میشود. این عمل با استفاده از متد []POST_$ انجام میشود. در قسمت بعد از تابع ( )stripslashes استفاده کردهایم. تابع یاد شده (اسلش)های موجود قبل از ‘ و ” که PHP به طور خودکار به آنها اضافه می کند را حذف میکند. این عمل به خاطر این است که امکان دارد ما اطلاعاتی که توسط کاربر ثبت می شود را دوباره نمایش دهیم. وجود اسلش هنگام فراخوانی اطلاعات از بانک اطلاعاتی موجب بروز خطای دستوری میشود. این قسمت بیشتر در مورد اطلاعاتی است که از فیلد Infromation about you کاربرد دارد زیرا کاربر میتواند هر آنچه را که میخواهد در آن بنویسد. برای چک کردن اینکه ایمیل درست وارد شده باشد یعنی حاوی @ و . باشد، دستورهای جاوا اسکریپتی بسیاری است که به دلیل پیچیده شدن موضوع آن را به خودتان واگذار میکنیم. حال نوبت به کنترل اطلاعاتی است که کاربر ارسال کرده است:
این قسمت بسیار ساده است. شرط اول کنترل میکند که همه فیلدها پر شده باشند. این کار بوسیله عملگر منطقی “یا” “||” انجام میشود. چنانچه یکی از فیلدها خالی باشد، پیغامهای خطای متناظر با آن با آن فیلد بر روی صفحه نشان داده خواهد شد. چنانچه همه فیلدها پر شده باشند و فیلد خالی موجود نباشد کنترل متغیرها متوقف شده و از بلاک شرط با دستور ()exit خارج می شویم. قسمت بعد کنترل اینکه نام کاربری و ایمیل شما قبلا در بانک اطلاعاتی ذخیره نشده باشد:
دستورات بالا برای آنهایی که در حد متوسط از بانکهای اطلاعاتی سر رشته دارند بسیار ساده است. چنانچه نام کاربری و یا ایمیل قبلا ثبت شده باشد مقدار () mysql_num_rows برابر صفر نمیشود و پیغامهای متناظر با کنترل نام کاربری و یا ایمیل برای کاربر نشان داده میشود و روند ثبت نام قطع شده و پیغام مورد نظر چاپ می شود و در زیر آن دوباره فرم ثبت نام نشان داده میشود. حتما تا به حال با این موضوع در سایت های بزرگ برخورد کردهاید که چنانچه هر کدام از فیلدها به نحوی اشتباه پر شده باشند و یا نام کاربری قبلا ثبت شده باشد صفحه فرم با اطلاعاتی که کاربر هنگام ورود پر کرده تکمیل شده و قسمت مشکل دار با پیغام خطا به رنگ قرمز نمایش داده میشود. برای ساختن چنین روندی به برنامه نویسی پیشرفته و بکارگیری اسکریپتهای مختلفی نیاز داریم که از سطح متوسط این مقاله خارج است.
کار این تابع ایجاد یک کلمه عبور تصادفی و تبدیل آن به فرمت md5 است. اینکه چرا کاربر اجازه ندارد که خودش کلمه عبور را انتخاب کند دلایلی دارد. یکی از آن دلایل این است که کلمه عبور ساخته شده به ایمیل کاربر فرستاده میشود و این به ما در راستای اینکه آیا ایمیل ثبت شده توسط کاربر ایمیل معتبری میباشد کمک میکند. به عبارتی چنانچه ایمیل فرد معتبر باشد کاربر با رفتن به ایمیل پسورد خود را دریافت میکند. و دلیل دیگر اینکه باایجاد یک کلمه عبور تصادفی و همچنین تبدیل آن به md5 امنیت کلمه عبور بسار بالا میرود و به سادگی توسط هکرها قابل شناسایی نیست.
همانطور که از توضیحات بر میآید، این قسمت جهت ثبت در بانک اطلاعاتی و فرستادن اطلاعات از قببیل پسورد و همچنین لینک فعال سازی به کاربر میباشد. اما تابع ( )htmlspecialchars چه کاری انجام میدهد؟ این تابع تگهای html را به کدهای مربوطه تغییر میدهد برای مثال:
این کار باعث میشود که کاراکترهایی نظیر < > ‘ به همین صورت در بانک اطلاعاتی ذخیره نشوند و باعث بروز خطاهای دستوری هنگام فراخوانی آنها توسط PHP نشوند. در قسمت بعد اطلاعاتی که پس از گذراندن از مراحل مختلف آماده ذخیره شدن در بانک اطلاعاتی هستند به وسیله دستورINSERT در بانک اطلاعاتی ثبت میشوند. چنانچه مشکلی در بانک اطلاعاتی وجود نداشته باشد، مرحله بعدی آن که فرستادن ایمیل به کاربر میباشد اجرا میشود. فرستادن ایمیل توسط تابع ()mail انجام میشود. روشهای استفاده از تابع ()mail بسیار است که با مراجعه به help برنامه PHP میتوانید آنها را مشاهده کنید. در این جا سادهترین روش برای اینکار انتخاب شده است. کاربر در قسمت پیام ایمیل چیزی شبیه به آنچه در زیر آمده است مشاهده میکند:
مرحله بعد به روز رسانی پایگاه داده هنگامی که کاربر ایمیل خود را چک کرده و بر روی لینک معتبر سازی کلیک کرده است، میباشد. کد زیر در فایل activate.php ذخیره شده است:
خط اول فراخوانی فایل db.php برای برقراری ارتباط با بانک اطلاعاتی میباشد. پس از گرفتن اطلاعات خواسته شده از طریق لینک فعال سازی، برنامه ابتدا مقدار activate کاربر را در صورت صحت اطلاعات ارسالی برابر با ۱ قرار میدهد و در بانک اطلاعاتی ذخیره میکند و چنانچه این عمل با موفقیت انجام شد دوباره کنترل میکند که آیا فعال سازی نام کاربری درست انجام گرفته است یا خیر. چنانچه این قسمت بدون خطا اجرا شود، صفحه ورود کاربر در صفحه ظاهر میشود. ![]() مرتبط با موضوع : آموزش PHP - قسمت سوم - متغیر ها [يكشنبه، 19 تير ماه ، 1390] آموزش PHP - قسمت دوم - اولین برنامه [يكشنبه، 19 تير ماه ، 1390] آموزش PHP - قسمت اول - نصب Xampp [يكشنبه، 19 تير ماه ، 1390] ساخت يك صفحه پويای خطای 404 اختصاصی [چهارشنبه، 30 تير ماه ، 1389] 11منبع خوب برای یادگیری زبان PHP [پنجشنبه، 2 ارديبهشت ماه ، 1389] یک برنامه لاگین امن و حرفه ای با PHP طراحی کنید. [چهارشنبه، 14 بهمن ماه ، 1388] کارتهای الکترونیکی با php و Mysql [سه شنبه، 13 بهمن ماه ، 1388] نمایش متن بصورت تصویری در اینترنت [سه شنبه، 13 بهمن ماه ، 1388] کوتیشن یا دابل کوتیشن؛ کی و کجا استفاده کنیم؟! [سه شنبه، 13 بهمن ماه ، 1388] PHP و برنامه نویسی شی گرا [سه شنبه، 13 بهمن ماه ، 1388] |
آخرین مقالات
پربیننده ترین مقالات
مقالات تصادفی
امتیاز دهی به مطلب
تعداد آراء: 2 ![]() انتخاب ها
|
