سیستم عضویت ساختن
در طي اين مقاله شما استفاده آسان از موارد زير و همچنين به كاربردن آنها در برنامههاي ديگر را ياد خواهيد گرفت:
- گرفتن اطلاعات كاربر هنگام ثبت نام و ذخيره آن در MySQL
- ساختن يك كلمه عبور به طور تصادفي و تبديل آن به كد رمز در ديتابيس
- تائيد ايميل كاربر هنگام ثبت نام قبل از اولين ورود
- دستورات ابتدايي كار با فرمها در PHP
- به كار گيري تابع Mail در PHP و نحوه ارسال ايميل توسط آن
لازم است يادآوري كنم كه كدهاي موجود در برنامه به صورت بسيار ساده نوشته شدهاند و امكان دارد كه بر حسب سيستم عامل و يا نسخه PHP كه بر روي سيستم شما ميباشد اجرا نشوند.
چنانچه با اين مشكل برخورد كرديد، عيب را در نحوه نصب PHP و يا سيستم عامل خود جستجو كنيد. چنانچه با PHP و برنامهنويسي تحت وب و نيز طراحي صفحات و بانك اطلاعاتي به صورت ابتدايي آشنايي نداريد توصيه ميكنم كه اين مقاله را دنبال نكنيد. كليه فايلهاي مورد نياز در انتهاي مقاله به صورت فشرده شده موجود ميباشند. قبل از ادامه مقاله توصيه ميكنم كه حتما آن ها را دانلود كرده و در ويرايشگرهاي خود باز كنيد. ويرايشگر مورد استفاده من Notepad ميباشد.
ساختن بانك اطلاعاتي (Database): در اين مرحله به ساخت يك بانك اطلاعاتي براي سيستم عضويت ميپردازيم. ممكن است شما از phpMyAdmin و يا ساير برنامههاي مرتبط با MySQL استفاده كنيد ولي من از PHPMyAdmin به خاطر سهولت و همچنين فراگير بودن آن در اكثر ميزبانهاي (Host) كاربران ايراني، استفاده ميكنم. جهت اين كار ابتدا يك بانك اطلاعاتي با نام دلخواه بسازيد و سپس براي ايجاد جداول و مقداردهي اوليه در قسمت Query Window كد زير را وارد كنيد:
CREATE TABLE users ( userid int(25) NOT NULL auto_increment, first_name varchar(25) NOT NULL default , last_name varchar(25) NOT NULL default , email_address varchar(25) NOT NULL default , username varchar(25) NOT NULL default , password varchar(255) NOT NULL default , info text NOT NULL, user_level enum(0,1,2,3) NOT NULL default 0, signup_date datetime NOT NULL default 0000?00?00 00:00:00, last_login datetime NOT NULL default 0000?00?00 00:00:00, activated enum(0,1) NOT NULL default 0, PRIMARY KEY (userid) ) TYPE=MyISAM COMMENT=Membership Information; sql.txtلازم به يادآوري است كه چنانچه برنامه نويس حرفهاي ميباشيد و يا در زمينه بانكهاي اطلاعاتي سر رشته داريد، ممكن است از شيوه آرايش جدولها در اين بانك اطلاعاتي خوشتان نيايد كه در اينصورت ميتوانيد به دلخواه آن را تغيير دهيد.
شيوه جدولبندي و آرايش جدولها در اين مقاله به شيوه معمولي ميباشد. حال كه بانك اطلاعاتي مورد نياز ايجاد شد به سراغ گرفتن اطلاعات از كاربر و ذخيره آن در بانك اطلاعاتي ميرويم. ثبت نام كاربر: شما ميتوانيد با HTML يك فرم ساده ايجاد كنيد. اين كار به راحتي توسط نرمافزارهايي نظير Front Page و يا DreamWeaver قابل انجام است ولي من يك كد آماده با نام login_from.htm براي شما آماده كردهام كه ميتوانيد از آن استفاده كنيد. شما ميتوانيد با سليقه خود طرح و شكل آن را عوض كنيد. چنانچه خواستيد شكل فرم را عوض كنيد اين نكته توجه داشته باشيد كه نام فيلدهاي فرم به صورت زير باشد: first_name ،last_name ،email_address ،username و info. چنانچه فرم نمونه را تغيير نميدهيد تمام نامها براي هر فيلد درست انتخاب شدهاند و نيازي به تغيير آنها نيست.
لازم به يادآوري است كه خاصيت action فرم بايد به مسير درستي (در اينجا register.php) براي فرستادن اطلاعات اشاره كند.
اكنون فايل register.php را باز كنيد. به ظاهر كد پيچيدهاي است. اماعجله نكنيد! در ادامه درباره ساختار كدها و طرز كار هريك از آنها صحبت خواهد شد. اگر به توضيحاتي كه در درون كدها نوشته شده است توجه كنيد درك آن بسيار ساده و قابل فهم خواهد بود. حال به توضيح برنامه ميپردازيم: اين خط فايل db.php كه حاوي كدهاي لازم براي ارتباط با بانك اطلاعاتي ميباشد را در بدنه اصلي برنامه فراخواني ميكند. باز هم اين نكته را يادآوري ميكنم كه چنانچه اطلاعات زيادي درباره بانكهاي اطلاعاتي و نحوه برنامه نويسي آنها نداريد، حتما آموختههاي خود را تكميل كنيد تا فهم و درك مطلب براي شما آسانتر شود. من يك نمونه اتصال به بانك اطلاعاتي را كه در db.php نوشته شده در زير آوردهام. اگر جزو كاربران حرفهاي PHP هستيد تغييرات دلخواه و يا حتي جديد را ميتوانيد در db.php انجام دهيد: در مورد كد بالا به نكات زير توجه كنيد:
-
مقدار dbhost$ در بيشتر موارد localhost ميباشد. اما چنانچه غير از اين بود با سرويس پشتيبان سرورتان تماس بگيريد.
- dbuser$ نام كاربري بانك اطلاعاتي شما ميباشد.
- dbpassword$ كلمه عبور بانك اطلاعاتي شما ميباشد.
- db2use$ نام ديتابيس (بانك اطلاعاتي) مورد استفاده شما ميباشد.
براي اتصال به بانك اطلاعاتي از يك mysql_pconnect استفاده كرديم كه وظيفه ارتباط دائمي را تا پايان برنامه به عهده داشته دارد. اين كار باعث صرفه جويي در زمان اجراي برنامه ميشود ولي اين نكته حائز اهميت است كه استفاده از يك ارتباط دائمي در بعضي موارد ممكن است به سود شما نباشد و باعث ايجاد بار اضافي بر روي سرور شما شود. ساير دستورات مربوط به بالا واضح است و احتياج به توضيح ندارند