نمایش نتایج: از شماره 1 تا 10 , از مجموع 86

موضوع: آموزش ساخت سيستم كاربري - ورود/عضويت

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    عضو دائم Rezash آواتار ها
    تاریخ عضویت
    Feb 2010
    محل سکونت
    مشهد
    نوشته ها
    1,923
    تشکر تشکر کرده 
    889
    تشکر تشکر شده 
    2,385
    تشکر شده در
    1,535 پست

    Post آموزش ساخت سيستم كاربري - ورود/عضويت

    آموزش ساخت سيستم كاربري
    اين مطلب رو در راستاي آموزش ساخت سيستم وبلاگ دهي مي نويسم و بعلاوه گفتم تو يك آموزش جدا باشه تا اگه كسي فقط دنبال همين بود هم راحت بهش برسه
    خيلي خلاصه مي گم
    كاربر وارد سايت ميشه
    بررسي مي كنيم آيا قبلا كاربر وارد سايت شده يا نه
    اگر وارد شده بود يعني login كرده بود كه مشخصات مربوط به خودش رو.نشونش مي ديم و گرنه فرم ثبت نام
    آموزش رو خيلي ساده و بدور از رعايت هر گونه نكات امنيتي بيان مي كنم
    انشالله فرصت كنم يك تاپيك امنيت هم تو انجمن ميذارم
    تعاريف رو از زبان خودم ميگم بنابراين ممكنه دقيقا برابر تعارف كتابي نباشه!
    سشن در لغت يعني جلسه. وقتي ما به يك سايت مي ريم مرورگر تمام كوكي هاي ذخيره شده در اون سايت رو به برنامه تحت وب ارسال مي كنه
    همين الان اگر به تنظيمات مرورگر بريد و كوكي هاي مرتبط با انجمن رو ببينيد ، مي بينيد كه يك كوكي به نام session id
    داريم.البته ممكنه در برنامه نام اين كوكي رو عوض كرده باشيم پس لزوما به همين نام نيست
    در واقع وقتي كه ما وارد يك سايت مي شيم ، اگر در برنامه تحت وب از سشن ها استفاده شده باشه يك جلسه جديد براي ما ايجاد ميشه و عموما در يك فولدر tmp كه در php.ini مشخص شده يك فايل براي هر كاربر ايجاد ميشه كه ما توسط شناسه سشن يا همون session id مي تونيم به اون سشن دسترسي داشته باشيم
    اما فرق كوكي با سشن چيه؟
    در كوكي ها تمام اطلاعات در كامپيوتر كاربر ذخيره ميشه و به راحتي قابل رويت هست و به همين خاطر اعتبار سنجي كاربر توسط كوكي ها تقريبا امري اشتباه هست
    يكي از دلايلي كه وقتي وارد سايتي ميشيم و ازمون مي پرسه براي چه مدت لاگين نگه دارمتون همينه كه چون ميشه كوكي ها رو به صورت fake ايجاد كرد و دسترسي غير مجاز ايجاد كرد
    البته طبيعتا اين مربوط به امنيت و ضعف در كد نويسي هست كه بحث ما نيست!
    در سشن ها فقط يك شناسه كد شده در قالب يك كوكي در سمت مرورگر كاربر ذخيره ميشه و بقيه اطلاعات به صورت index در همون فايلي كه در پوشه tmp براي كاربر ايجاد شده ذخيره ميشوند
    البته حتي اگر در سشن ها هم موارد امنيتي رو رعايت نكنيم با جعل شناسه جلسه ميشه امنيت سايت رو تهديد كرد ولي بررسي موارد امنيتي رو به تاپيك امنيت مي سپارم و روش هاي مقابل با اين تهديد هاي امنيتي رو در اونجا بررسي مي كنم و آموزش رو از اين كه هست پيچيده تر نمي كنم
    حالا كه با مفاهيم سشن و كوكي از زبان من(!) آشنا شديد بريم سمت كد نويسي
    تابع session_start
    sesison_start از جمله توابعي هست كه بايد قبل از هر خروجي ايي در برنامه استفاده بشه
    يعني اگر قبل از اين تابع در برنامه خروجي داشته باشيم ، تابع خطا ميده و درست اجرا نميشه
    دستورات و توابع header از اين قبيل هستند.
    با اينكه بحث ما نيست اما اين رو هم بد نيست كه بگم يكي از دلايل توصيه به استفاده از اديتور هاي استاندارد پي اچ پي همين هست كه اديتور هايي مثل notepad ويندوز قبل از كد php به خصوص در حال utf
    معمولا يك كاراكتر اضافي و غير قابل رويت در همون اديتور ايجاد مي كنند كه وقتي برنامه رو اجزا مي كنيم و خطاهايي مانند
    header already sent at line...
    يا اين قبلي مواجه ميشيم
    پس درست بعد از تگ php اينجوري برنامه رو آغاز مي كنيم
    کد PHP:
    <?php
    session_start
    ();
    //ادامه
    ?>
    حالا كه اين تابع رو زديم پي اچ پي مي گرده ببينه آيا اين كاربر براش سشن آي دي تعريف شده؟اگه شده آيا معتبر هست يا نه.
    اگر درست بود كه اطلاعات فايل ذخيره شده در پوشه tmp مطابق با اين شناسه در قالب يك آرايه پيش فرض به نام $_SESSION در برنامه قابل استفاده خواهند بود.
    و در غير اين صورت يك شناسه معتبر به كاربر تعلق مي گيره و يك جلسه جديد براي كاربر ايجاد ميشه
    تابع isset
    اين تابع ربطي به سشن ها نداره! با اين تابع مي تونيم بفهمين آيا يك متغير تعريف شده يا نه
    برنامه زير رو ببنيد:
    index.php
    کد PHP:
    <?php
    session_start
    ();
    if(isset(
    $_SESSION['username']))
    echo 
    "welcome, ".$_SESSION['username'];
    else
    echo 
    "Please Login/register";
    ?>
    در خط سوم گفتم اگر در آرايه $_SESSION ايندكسي به اسم username كه يك اسم دلخواه و انتخابي توسط خودم هست؛وجود داشت يعني كاربر وارد شده و در غير اينصوت به كاربر اطلاعات ورود/عضويت رو نشون بده
    حالا يك فرم html ساده مي سازم
    login.html
    کد HTML:
    <form action="login.php" method=post>
    <input name=username value="" size="20">
    <input name=password value="" size="20" type="password">
    <input type=submit name=submit value="Login">
    </from>
    فرو html رو توضيح نمي دم
    فقط در خط اول به action دقت كنيد
    و method كه post هست و نه get
    نام كاربري و پسورد هم كه در فرم با نام هاي username و password مشخص شده اند
    فايل login.php
    کد PHP:
    <?php
    session_start
    ();
    if(isset(
    $_POST['username']) && isset($_POST['password']))
        if(
    $_POST['username'] == 'reza' && $_POST['password'] == 'test')
        {
        
    $_SESSION['username'] = 'reza';
        
    HEADER('LOCATION: index.php');
        }
        else
        die(
    'wrong username/password!');
    ?>
    در خط 3 بررسي كردم كه اين دو مقدار توسط فرم ارسال شده باشند
    بعد در خط 4 به بعد بررسي كردم اگه نام كاربر و پسورد دررست بود سشن يوزر نيم ايجاد بشه و كاربر به صفحه اصلي بازگشت داده بشه در غير اينصورت خطا بگيره
    چون خواستم ساده باشه براي يوزر نيم و پسورد فعلا از ديتابيس استفاده نكردم و ساده ترين حال ممكن رو پيش بردم!
    تا اينجا ما در فايل اصلي چك كرديم كاربر وارد شده يا نه
    در فايل login.html
    فرم ورود رو داشتيم
    و در فايل login.php اعتبار سنجي و تاييد هويت رو داشتيم
    در مرحله آخر اين آموزش هم logout رو بررسي مي كنيم
    براي logout كافيه سشن يوزر نيم رو حذف كنيم
    در اينجا تمام سشن هاي كاربر رو مي تونيم با تابع
    session_destroy();
    نابود كنيم!
    پس logout.php
    کد PHP:
    <?php
    session_destroy
    ();
    HEADER('LOCATION: index.php');
    ?>
    انشالله در ادامه مبحث عضو گيري رو هم ميگم و و استفاده از كدها رو با ديتابيس پيش م بريم تا كمي به واقعيت نزديك تر بشيم
    بک آپ بگیرید قبل از آنکه پشیمان شوید!
    تشخیص سیستم مدیریت محتوای سایت - سایت شخصی

  2. تعداد تشکر ها ازRezash به دلیل پست مفید


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ ها: 2
    آخرين نوشته: March 11th, 2013, 12:50
  2. پاسخ ها: 0
    آخرين نوشته: May 16th, 2011, 01:12
  3. آموزش ساخت يك سيستم وبلاگ دهي
    توسط Rezash در انجمن PHP-MySQL
    پاسخ ها: 12
    آخرين نوشته: December 17th, 2010, 18:09
  4. معرفی سيستم مديريت آموزشگاه اتود + نسخه نمايشی
    توسط amiri113 در انجمن مباحث دیگر
    پاسخ ها: 0
    آخرين نوشته: February 1st, 2010, 18:08

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •