کاربری
کاربر گرامی به خوش آمدید . اگر این نخستین بازدید شما از سایت است , لطفا ثبت نام کنید:

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

نمایش نتایج: از 1 به 9 از 9

موضوع: صفحه لاگین به همراه سطح دسترسی

  1. #1
    کاربر سایت
    تاریخ عضویت
    دی -۱۳۹۲
    محل سکونت
    همینجا
    نوشته ها
    24
    تشکر ها
    22
    تشکر شده: 9 بار در 6 پست
    یاد شده
    در 0 پست
    دعوت شده
    در 0 تاپیک
    میزان امتیاز
    0
    Array

    Post صفحه لاگین به همراه سطح دسترسی

    در اینجا قصد داریم صفحه لاگین رو بررسی کنیم.
    در پروژه ارائه شده ( اینجا ) صفحه لاگین کاربران به درسی کار میکنه ؛ ( البته هنوز کامل نیست )

    من دارم تکمیلش میکنم فعلا و قصد دارم چند جور سطح دسترسی داشته باشیم، برای همین، در دیتابیس فیلدی با این مشخصات اضافه کردم user_position که ( 0=کاربر عادی | 1= مدیر سایت ) هست.

    اما مشکل اینجاست که چطور میشه بعد از صحت درسی نام کاربری و کلمه عبور ( این بخش درست انجام میشه ) ، تشخیص داد که کاربر باید به کدوم صفحه هدایت بشه !

    مثلاً :
    کاربر مدیر باید به صفحه کنترل پنل مدیریت به این آدرس منتقل بشه ( localhost/shoprj/admin/admin_cp.php ) .
    کاربر عادی عضو شده باید به صفحه کنترل پنل کاربران به این آدرس منتقل بشه ( localhost/shoprj/users/user_cp.php ) .


    البته، این فرم لاگینی هست که من درست کردم به صورت خلاصه و نه همه کدها اینجا گذشتم:

    <کد HTML

    <form action="?login_users" method="post">
        <input name="txt_user_name" type="text" required="required" id="user_name" />
        <br />
        <input type="password" name="txt_user_pass" required="required" id="user_pass" />
        <br />
        <input type="submit" value="login" id="submit" />
    </form>

    <?کد PHP

       
     <?php 
        
    if (isset($_GET['login_users']))
     {
         if ((!empty(
    $_POST['txt_user_name']) && !empty($_POST['txt_user_pass'])))
         {
             
    $_user $_POST['txt_user_name'];
             
    $_passord $_POST['txt_user_pass'];

       
    $_user mysql_real_escape_string($_user); 
      
    // چون پسورد در پایگاه داده به صورت کد شده قرار دارد ما نیز ابتدا پسورد دریافتی را کد کرده با پسورد موجود در پایگاه داده بررسی میکنیم
      
    $_pass md5($_passord);
      
    $result mysql_query("SELECT * FROM users WHERE user_name = '".$_user."' AND user_pass = '".$_pass."' " ); 
      
    $rows mysql_num_rows($result); 

     
    $querypostiion_adminmysql_query("SELECT 'user_position' FROM  'users' ");
        
    $row_pos mysql_num_rows($querypostiion_admin);
       
          if (
    $rows<=){ 
              echo 
    "Incorrect username/password"
            }
          else { 
                    switch(
    $row_pos){
                 case 
    1:
                 {
                      
    $_SESSION['user'] = $_user;
                     
    header("location:admin/admin_cp.php");
                     break;
                 }
                 case 
    0:
                 {
                     
    $_SESSION['user'] = $_user;
                     
    header("location:user/user_cp.php");
                     break;
                 }
              default : echo 
    ' نام کاربری یا کلمه عبور اشتباه وارد شده است .';        
    }}}}
                                
    ?>

    4 کاربر مقابل از iranh00 عزیز به خاطر این پست مفید تشکر کرده اند .


    ویرایش توسط iranh00 : ۱۸ ۱۰ -۱۳۹۲ در ساعت 11:26

  2. #2
    مدیریت کل سایت
    تاریخ عضویت
    مرداد -۱۳۹۱
    محل سکونت
    R00T
    نوشته ها
    1,849
    تشکر ها
    2,295
    تشکر شده: 2,900 بار در 1,282 پست
    یاد شده
    در 0 پست
    دعوت شده
    در 12 تاپیک
    نوشته های وبلاگ
    7
    میزان امتیاز
    37
    Array
    user_position رو از دیتابیستون بخونید اگر 1 بود انتقال بدید به صفحه ادمین و اگر 0 بود به به محیط کاربری انتقال بدید .. ولی پیشنهاد میشه فرم هاتون رو جدا طراحی کنید فرم لاگین صفحه ادمین نباید برای کسی نشون داده بشه .. تا بتونید روی پوشه ادمینتون هم پسوورد دایرکتوری بزارید ...جهت امنیت بیشتر

    تشکرات :


    ما همه انسانیم و اشتباه میکنیم،
    اما زندگی اشتباهاتی که مرتکب میشویم نیست،زندگی قدمهایی است که برای جبران آنها بر میداریم
    -------------------------------------------------------------

    فروش هاست و دامنه
    کاشمر هاست
    فروش ویژه برای سایت انجمن کامپیوتر پیام نور کاشمر با کد تخفیف :
    KPNU-CSC


  3. #3
    کاربر سایت
    تاریخ عضویت
    دی -۱۳۹۲
    محل سکونت
    همینجا
    نوشته ها
    24
    تشکر ها
    22
    تشکر شده: 9 بار در 6 پست
    یاد شده
    در 0 پست
    دعوت شده
    در 0 تاپیک
    میزان امتیاز
    0
    Array

    “ نوشته اصلی توسط Abd0LLaHp0r نمایش پست ها

    user_position رو از دیتابیستون بخونید اگر 1 بود انتقال بدید به صفحه ادمین و اگر 0 بود به به محیط کاربری انتقال بدید ..


    من همین کاری که گفتین رو کردم، اما اینکه چطور کوئری بگیرم نمیدونم، دستور این بخش شما هم داخل دستور سویچ گذاشتم

    “ نوشته اصلی توسط Abd0LLaHp0r نمایش پست ها

    ولی پیشنهاد میشه فرم هاتون رو جدا طراحی کنید فرم لاگین صفحه ادمین نباید برای کسی نشون داده بشه .. تا بتونید روی پوشه ادمینتون هم پسوورد دایرکتوری بزارید ...جهت امنیت بیشتر
    user_position رو از دیتابیستون بخونید اگر 1 بود انتقال بدید به صفحه ادمین و اگر 0 بود به به محیط کاربری انتقال بدید ..

    اما واسه این مورد، یعنی میگین، ادمین یه دیتا بیس جدا داشته باشه، که پیشفرض مقدار user_position همیشه یک باشه ؛ اگه اینطور باشه، که صفحه ثبت نام مدیران هم باید جدا باشه دیگه ! یعنی یه جدول واسه کاربران، یه جدول واسه ادمین ؟!
    اونوقت این که منطقی نیست ؟! حتی داخل سیستم هایی مثل وردپرس یا جوملا و دروپال هم جداول جداگانه نیستن !

    یه راهکار :
    نمیشه، زیر همین فرم لاگین دوتا RadioButton بزارم، که یکی واسه مدیر ( user_position=1 ) و اون یکی واسه کاربران ( user_position=0 ) برگردونه به صفجه لاگین؛ بعد اونجا اینطور بررسی انجام بشه :

    اول اینکه ) چک بشه، نام کاربری و کلمه عبور اصلاً درست هست یا خیر ( که این دستور هست و درست انجام میشه )
    دوم اینکه ) مقداری که از RadioBotton ها گرفته رو با یک کوئری که از دیتابیس میگیره بررسی کنه اگه 1بود، ریدایرکت بشه به صفحه مدیریت و اگه صفر بود، ریدایرکت به صفحه کاربران . ؟ (کوئری که بالا گذاشتم، نمیدونم درسته یا نه، چون همش مقدار 0 بر میگردونه، و به صفحه کاربران میره، حتی اگه مدیر وارد بشه بازهم به صفحه کاربران انتفا داده میشه !

  4. #4
    مدیریت کل سایت
    تاریخ عضویت
    مرداد -۱۳۹۱
    محل سکونت
    R00T
    نوشته ها
    1,849
    تشکر ها
    2,295
    تشکر شده: 2,900 بار در 1,282 پست
    یاد شده
    در 0 پست
    دعوت شده
    در 12 تاپیک
    نوشته های وبلاگ
    7
    میزان امتیاز
    37
    Array
    خیر منظور جدابودن جداول نیست منظور جدا بودن فرم ها هست .. شما فرم کاربران رو در دست رس همه قرار میدین خب این مشکلی هم نداره ... مثل همین سایت ... ولی فرم ورود مدیر کلا توی یه پوشه جدا با پسورد دایرکتوری هست مثلا شما به هیچ عنوان نمیتونید به فرم لاگین مدیرات دسترسی داشته باشید .. این از نظر امنیت عرض میکنم ...

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

    select user_position from admin where username='$username';

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

    فروش هاست و دامنه
    کاشمر هاست
    فروش ویژه برای سایت انجمن کامپیوتر پیام نور کاشمر با کد تخفیف :
    KPNU-CSC


  5. #5
    کاربر سایت
    تاریخ عضویت
    دی -۱۳۹۲
    محل سکونت
    همینجا
    نوشته ها
    24
    تشکر ها
    22
    تشکر شده: 9 بار در 6 پست
    یاد شده
    در 0 پست
    دعوت شده
    در 0 تاپیک
    میزان امتیاز
    0
    Array
    این قسمت رو اصلاً نمیدونم چطوریه و بلد نیستم!:

    “ نوشته اصلی توسط Abd0LLaHp0r نمایش پست ها

    شما بعد چک کردن فچ آرای میگیرید


    امکانش هست مثالی بزنید ؟ منظورم نمونه کد درستش از دستور فچ ؟!

    “ نوشته اصلی توسط Abd0LLaHp0r نمایش پست ها

    و بعد با خوندن فیلد user_position با شرط نام کاربری یوزر تایید شده میتونید چک کنید که 1 هست یا خیر اگر یک بود که دستورات ادمین رو بیاره و اگه صفر بود کاربری رو..
    select user_position from admin where username='$username';
    این دستور user_position رو از حساب کاربری همون کاربر میخونه و بعد میتونید فچ بگیرید و چکش کنید .


    این روشی که من ادامه دادم، با روش شما متفاوت هست .

    <?کد PHP

          if ($rows<=){ 
              echo 
    "Incorrect username/password"
            }
          else { 
                  switch(
    $_user_position){
                 case 
    1:
                 {
                      
    $_SESSION['user'] = $_user;
                     
    header("location:admin_cp.php");
                     break;
                 }
                 case 
    2:
                 {
                     
    $_SESSION['user'] = $_user;
                     
    header("location:../user/user_cp.php");
                     break;
                 }

    این قسمت، بعد از اینکه رکورد رو خوند، اگه داخل دیتا بیس نباشه که همون اول میگه نام کاربری یا رمز اشتباهه، اما اگه وجود داشت، بعد از دستور else میره چک میکنه که سطح دسترسی چیه به همون سمت انتقالش میده .
    البته من اینو واسه مدیر و کاربر داخل یک فرم نوشتم، اما نمیدونم پارامتر داخل سوئیچ رو چطوری باید از user_position کوئری بگیرم که مقدار داخلشو بکشم بیرون، چون فکر کنم اینکار هم ساده تره ، و هم نزدیکترم بهش
    واینکه، من در حد پروژه دانشجویی میخوام و سطح امنیتی که شما اشاره میکنید خیلی حرفه ای تره .


  6. #6
    مدیریت کل سایت
    تاریخ عضویت
    مرداد -۱۳۹۱
    محل سکونت
    R00T
    نوشته ها
    1,849
    تشکر ها
    2,295
    تشکر شده: 2,900 بار در 1,282 پست
    یاد شده
    در 0 پست
    دعوت شده
    در 12 تاپیک
    نوشته های وبلاگ
    7
    میزان امتیاز
    37
    Array
    در هر صورت من فک میکنم پروژه دانشجوی برای اینه که یاد بگیرید .. و امنیتم یه مبحث مهم توی یادگیری هست ...

    خب مثال به این شکل :

    <?کد PHP

    $_S_query=mysql_query("select user_position from admin where username='$username'") or die (mysql_error());$_F_Fetch=mysql_fetch_array($_S_query);if($_F_Fetch['user_position']==1){//admin    }elseif($_F_Fetch['user_position']==0){    //user} 

    تشکرات :


    ما همه انسانیم و اشتباه میکنیم،
    اما زندگی اشتباهاتی که مرتکب میشویم نیست،زندگی قدمهایی است که برای جبران آنها بر میداریم
    -------------------------------------------------------------

    فروش هاست و دامنه
    کاشمر هاست
    فروش ویژه برای سایت انجمن کامپیوتر پیام نور کاشمر با کد تخفیف :
    KPNU-CSC


  7. #7
    کاربر سایت
    تاریخ عضویت
    دی -۱۳۹۲
    محل سکونت
    همینجا
    نوشته ها
    24
    تشکر ها
    22
    تشکر شده: 9 بار در 6 پست
    یاد شده
    در 0 پست
    دعوت شده
    در 0 تاپیک
    میزان امتیاز
    0
    Array

    “ نوشته اصلی توسط Abd0LLaHp0r نمایش پست ها


    خب مثال به این شکل :

    <?کد PHP

    $_S_query=mysql_query("select user_position from admin where  username='$username'") or die  (mysql_error());$_F_Fetch=mysql_fetch_array($_S_query);if($_F_Fetch['user_position']==1){//admin     }elseif($_F_Fetch['user_position']==0){    //user} 

    این دستور، فقط نام فیلد داخل دیتابیس که user_position هست رو برمیگردونه و محتوا داخلش رو نشون نمیده !
    یعنی حتی من توی خروجی هم echo کردم، همین user_position برگردوند ، نه 0 یا 1 رو !

  8. #8
    کاربر سایت
    تاریخ عضویت
    دی -۱۳۹۲
    محل سکونت
    همینجا
    نوشته ها
    24
    تشکر ها
    22
    تشکر شده: 9 بار در 6 پست
    یاد شده
    در 0 پست
    دعوت شده
    در 0 تاپیک
    میزان امتیاز
    0
    Array

    “ نوشته اصلی توسط iranh00 نمایش پست ها

    این دستور، فقط نام فیلد داخل دیتابیس که user_position هست رو برمیگردونه و محتوا داخلش رو نشون نمیده !
    یعنی حتی من توی خروجی هم echo کردم، همین user_position برگردوند ، نه 0 یا 1 رو !
    همین الان چیزی به ذهنم رسید و تست کردم، درست شد؛ دستور به این صورت اصلاح باید بشه :

    <?کد PHP

     $_S_query=mysql_query("select * from admin where  username='$username'") or die  (mysql_error());$_F_Fetch=mysql_fetch_array($_S_query);if($_F_Fetch['user_position']==1){//admin     }elseif($_F_Fetch['user_position']==0){    //user} 


  9. #9
    مدیریت کل سایت
    تاریخ عضویت
    مرداد -۱۳۹۱
    محل سکونت
    R00T
    نوشته ها
    1,849
    تشکر ها
    2,295
    تشکر شده: 2,900 بار در 1,282 پست
    یاد شده
    در 0 پست
    دعوت شده
    در 12 تاپیک
    نوشته های وبلاگ
    7
    میزان امتیاز
    37
    Array
    مقدار user_position رو میخونده شاید من اشتباه املایی دارم شما به جای ستاره ای که گذاشتی نام همون فیلد رو بزنی بهتره ستاره کل فیلد هار و بر میگردونه ... ولی وقتی نام جدول بهش میدید فقط همون رو بر میگردونه ... بازم زیاد فرقی نمیکنه ..یه کم توی سرعت و امنیت فرق داره که اونم به قول شما بی خیال

    تشکرات :


    ما همه انسانیم و اشتباه میکنیم،
    اما زندگی اشتباهاتی که مرتکب میشویم نیست،زندگی قدمهایی است که برای جبران آنها بر میداریم
    -------------------------------------------------------------

    فروش هاست و دامنه
    کاشمر هاست
    فروش ویژه برای سایت انجمن کامپیوتر پیام نور کاشمر با کد تخفیف :
    KPNU-CSC


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

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

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

Bookmarks

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

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

انجمن کامپیوتر پیام نور کاشمر در ایران خدمات رسانی خود را در سال 1391 آغاز کرده . از لحظه تولد تاکنون این انجمن همواره سعی در بکارگیری شیوه های مدیریتی جدید و خدمات نوین داشته است . انجمن ما مفتخر است که توسط کاشمر هاست میزبانی و توسط وب ایران پشتیبانی میشود.
ایمیل:rkeriz@gmail.com
یاهو: ali_a7749
موبایل:9373080284

ابزار ها
بارگذاری مجدد کد امنیتی مندرج در تصویر را وارد کنید: