• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
set کردن نام کاربری با session در codeigniter
#1
سلام
من یه سوال دارم که امیدوارم بتونم درست براتون توضیح بدم
ببینید ما یه فرم داریم که میاد یه سری اطلاعات رو به دیتابیس وارد می کنه.
از طریق یک Hidden_form هم نام کاربری رو از session می گیره و در db ذخیره میکنه.
تا اینجا درسته.
اما من حالا می خوام کاری کنم که وقتی کاربر login کرده (true==logged_in)
مثلا title تغیر کنه یا مثلا اجازه ادیت و دیلیت بده.
من هر راهی رو رفتم به در بسته خوردم
خلاصه سوال : توی php ما میگیم
کد پی‌اچ‌پی:
select from 'my' where 'user_name'==$_SESSION['user_name'
توی ci چه جوری میشه اینو نوشت؟؟؟
  پاسخ
تشکر شده توسط :
#2
سلام
امیدوارم این جواب گو باشه
با این دستور میتونی یه session مقدار بدی
کد پی‌اچ‌پی:
$this->session->set_userdata('some_name''some_value'); 

و با این دستور میتونی یه Query داشته باشی
کد پی‌اچ‌پی:
$query $this->db->get_where('mytable', array('id' => $id), $limit$offset); 
البته به جای id باید username بزاری
اگه مشکلی داشتی در خدمتت هستیم
موفق باشی
  پاسخ
تشکر شده توسط :
#3
من متوجه نشدم limit , offset برای چی هستن
اما من اینطور نوشتم و به مشکل بر خوردم
کد پی‌اچ‌پی:
$this->db->where('file_user_name',$this->session->userdata('user_name')); 
و در controller
کد پی‌اچ‌پی:
    if($this->file_user_name_model->myuser_name('film_upload')==$this->session->userdata('user_name') )
        {
            
$data['title']='yes film';
        
            
$this->load->view('view/film_detail',$data);
        } 
اما اشتباهه
  پاسخ
تشکر شده توسط :
#4
زمانی که یک یوزر لوگین کرد
کد پی‌اچ‌پی:
$newdata = array(
                   
'username'  => 'johndoe',
                   
'email'     => 'johndoe@some-site.com',
                   
'logged_in' => TRUE
               
);

$this->session->set_userdata($newdata); 

بعد از اون در کنترل

کد پی‌اچ‌پی:
$CurrentUsername $this->session->userdata('username'); 
حالا username رو داری و هر کاری که خواستی می تونی انجم بدی
ببین یوزرنیم درسته یا نه ، اگه بود می تونی یه متغیر به VIEW بفرستی که کاربر لوگین کرده
مثلا در ادامه کنترلر می نویسی
کد پی‌اچ‌پی:
$data = array(
              
'isValidUser'=>true
          
);
$this->load->view('MYVIEW'$data); 

در VIEW هم
کد پی‌اچ‌پی:
<html>
<
head>
<
title>test</title>
</
head>
<
body>
<?
php if(isset($isValidUser) && $isValidUser==true){ ?>
    <h1>This is Secret</h1>
<?php ?>
</body>
</html> 
  پاسخ
تشکر شده توسط : scooter
#5
سلام و ممنون
این امنه؟
یعنی نیاز نیست ما توی model نام کاربری توی db رو با userdata('username'); مقایسه کنیم و اگر برابر بود اجازه دسترسی بدیم؟
  پاسخ
تشکر شده توسط :
#6
وقتی اسم سشن یا کوکی میاد وسط شما باید به این موضوع یعنی امنیت اهمیت بیشتری بدید. این یه مثال بود. من یشنهاد می کنم از طریق توابعی نظیر mcrypt اطلاعات رو بصورت کد شده درون سشن یا کوکی ذخیره کنید. در مورد این که ببینی یوزر نیم درست هست یا نه می تونی توی مودل خودت یه تابع به نام checkUsername قرار بدی و سپس هر زمان که نیاز داشتی ببینی username صحیح هست از این تابع برای فهمیدن این موضوع استفاده کنید. اما من فکر می کنم بهتره نام کاربری رو به تنهایی قرار ندید. چرا که اگه اطلاعات کد نشه ، یه یوزر خیلی راحت می تونه با دستکاری سشن خودش رو به عنوان یه کاربر دیگه معرفی کنه. می تونید بصورت رندم برای هر کار بر یه کلید در نظر بگیرید. وقتی کاربر لوگین می کنه این کلید تغییر می کنه و در کنار یوزر نیم قرار می گیره اما بصورت MD5 یا SHA1 . حالا شما هر جا خواستید ببینید این یوزر واقعا لوگین کرده یا نه می تونید بر برسی کنید که نام کاربری وجود داره و اگر داشت آیا MD5 کلید برابر با MD5 کلید موجود در دیتابیس ( که مطعلق به همین نام کاربری هست ) هست یا خیر.
  پاسخ
تشکر شده توسط :
#7
سلام و ممنون از جوابتون مشکل من هم همین هست .من نمیدونم این کد دقیقا چه جوری نوشته میشه. من الان دو ماهه دارم به این سیستم ور میرم
  پاسخ
تشکر شده توسط :
#8
سلام
باور کن این پستت رو من 100 بار بیشتر خوندم(پرینت گرفتم و زدم جلوی چشمم)
ولی نمی دونم چطور باید اطلاعات درون sess رو رمز نگاری کرد که نشه ازش سو استفاده بشه
(۱۳۸۸ دى ۲۱, ۱۲:۳۲ ب.ظ)hidensfot نوشته: وقتی اسم سشن یا کوکی میاد وسط شما باید به این موضوع یعنی امنیت اهمیت بیشتری بدید. این یه مثال بود. من یشنهاد می کنم از طریق توابعی نظیر mcrypt اطلاعات رو بصورت کد شده درون سشن یا کوکی ذخیره کنید. در مورد این که ببینی یوزر نیم درست هست یا نه می تونی توی مودل خودت یه تابع به نام checkUsername قرار بدی و سپس هر زمان که نیاز داشتی ببینی username صحیح هست از این تابع برای فهمیدن این موضوع استفاده کنید. اما من فکر می کنم بهتره نام کاربری رو به تنهایی قرار ندید. چرا که اگه اطلاعات کد نشه ، یه یوزر خیلی راحت می تونه با دستکاری سشن خودش رو به عنوان یه کاربر دیگه معرفی کنه. می تونید بصورت رندم برای هر کار بر یه کلید در نظر بگیرید. وقتی کاربر لوگین می کنه این کلید تغییر می کنه و در کنار یوزر نیم قرار می گیره اما بصورت MD5 یا SHA1 . حالا شما هر جا خواستید ببینید این یوزر واقعا لوگین کرده یا نه می تونید بر برسی کنید که نام کاربری وجود داره و اگر داشت آیا MD5 کلید برابر با MD5 کلید موجود در دیتابیس ( که مطعلق به همین نام کاربری هست ) هست یا خیر.
سلام
باور کن این پستت رو من 100 بار بیشتر خوندم(پرینت گرفتم و زدم جلوی چشمم)
ولی نمی دونم چطور باید اطلاعات درون sess رو رمز نگاری کرد که نشه ازش سو استفاده بشه
  پاسخ
تشکر شده توسط :
#9
جای این صد بار یک بار منوال PHP رو کامل می خوندی یا حد اقل منوال خود کدایگنیتر رو
http://codeigniter.com/user_guide/librar...ption.html
http://ir.php.net/manual/en/book.mcrypt.php
http://ir.php.net/manual/en/function.base64-decode.php
http://ir.php.net/manual/en/function.base64-encode.php
  پاسخ
تشکر شده توسط : scooter
#10
سلام ممنونم از جوابتون .
به خدا این رو هم 100 بار خوندم.ولی نمیدونم چه جوری تو سشن ها ازش استفاده بکنم
ممنونم
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان