امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
از دست رفتن سشن هنگام لاگین
#1
سلام
اولین بارمه که وبسایتی رو توسط کدایگنایتر ساختم. از ویندوز و زمپ استفاده میکنم. در لوکال هاست زمپ مساله ای واسه لاگین ندارم و درست کار میکنه. اما وقتی کد رو بارگذاری میکنم، هنگام لاگین کردن سشن ایجاد شده در سایر صفحات موجود نیست متاسفانه.


وضعیت فعلی بعد از بارگذاری:

autoload.php

کد php:
$autoload['libraries'] = array('database','template','session','encryption','form_validation');

$autoload['helper'] = array('url','cookie','form','file'); 


config.php
کد php:
$config['base_url'] = 'http://domainname.com/admin/';

$config['uri_protocol']    = 'AUTO';

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'east';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;



$config['cookie_prefix']    = '';
$config['cookie_domain']    = 'http://domainname.com';
$config['cookie_path']        = '/admin/';
$config['cookie_secure']    = FALSE;
$config['cookie_httponly']     = FALSE
پاسخ
#2
سلام
ورودتون رو به انجمن کدایگنایتر خوش آمد میگم.
از چه ورژن PHP استفاده می کنید؟ سایتتون داخل هاست اشتراکی یا سرور اختصاصی؟

اگر دسترسی به فایل php.ini دارید چک کنید ببینید مقدار session.gc_maxlifetime با چه عددی تنظیم شده. همچنین میتونید با متغیر سراسری $_SESSION یه سشن بسازید و ببینید که مقدارش ذخیره میشه یا نه تا مطمئن بشید مشکل از هاست نیست.
بنابراین بهتره اول چک کنید ببینید سشن به صورت معمول روی هاست کار میکنه یا نه؟ اگر کار کرد مشخص میشه مشکل از برنامه شماست. بعد بیایید داخل برنامه با کمک _SESSION سشن ست کنید اگر کار کرد مشخص میشه مشکل از کتابخانه سشن کد ایگنایتر که اون موقع باید بررسی کنیم ببینیم مشکل چیه.
لطفا قبل از ارسال هرگونه پست قوانین سایت را مطالعه کنید.
----
وب سایت میثم محمودی
پاسخ
#3
سلام

باید وقتی اسکریپتو روی هاست میبری سشن پت رو ست کنی مثلا:
کد php:
$config['sess_save_path'] = '../ses/'
پاسخ
#4
(2017/11/04، 05:03 PM)admin نوشته است: سلام
ورودتون رو به انجمن کدایگنایتر خوش آمد میگم.
از چه ورژن PHP استفاده می کنید؟ سایتتون داخل هاست اشتراکی یا سرور اختصاصی؟

اگر دسترسی به فایل php.ini دارید چک کنید ببینید مقدار session.gc_maxlifetime با چه عددی تنظیم شده. همچنین میتونید با متغیر سراسری $_SESSION یه سشن بسازید و ببینید که مقدارش ذخیره میشه یا نه تا مطمئن بشید مشکل از هاست نیست.
بنابراین بهتره اول چک کنید ببینید سشن به صورت معمول روی هاست کار میکنه یا نه؟ اگر کار کرد مشخص میشه مشکل از برنامه شماست. بعد بیایید داخل برنامه با کمک _SESSION سشن ست کنید اگر کار کرد مشخص میشه مشکل از کتابخانه سشن کد ایگنایتر که اون موقع باید بررسی کنیم ببینیم مشکل چیه.

سلام -ممنونم بابت خوش امد گویی و همینطور جواب.
در حال حاضر php 5.5 هست. نتونستم فایل php.ini رو در دایرکت ادمینم پیدا کنم. قسمتی پیدا کردم مبنی بر show php setting که گزینه session.save_path روی عبارت tmp/ تنظیم شده.
متغیر سراسری سشن هم ایجاد کردم و متاسفانه مقداری درونش ذخیره نمیشه.

(2017/11/05، 06:35 AM)farhadhp نوشته است: سلام

باید وقتی اسکریپتو روی هاست میبری سشن پت رو ست کنی مثلا:
کد php:
$config['sess_save_path'] = '../ses/'

 جواب نداد متاسفانه.
پاسخ
#5
در واقع درون فایل Login_model.php اطلاعات بصورت زیر به سشن بارگذاری میشن:
کد php:
$data_session = array(
 
               'PersonId' => $PersonId,
 
               'PersonEmail' => $PersonEmail,
 
               'PersonName' => $PersonName,
 
               'PersonFamily' => $PersonFamily,
 
               'Login' => true);
 
           $this->session->set_userdata($data_session); 

,وضعیت فعلی config.php:
کد php:
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'east';
$config['sess_expiration'] = 7200;
//$config['sess_save_path'] = sys_get_temp_dir();
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
//------------------
$config['cookie_prefix']    = '';
$config['cookie_domain']    = 'http://www.domain.com/admin/';
$config['cookie_path']        = '/';
$config['cookie_secure']    = FALSE;
$config['cookie_httponly']     = FALSE

خروجی سشن بر اساس دستور 
کد php:
print_r($this->session->userdata()); 

در همین قسمت بصورت زیر نمایش داده میشه:
کد:
Array
(
   [__ci_last_regenerate] => 1510383844
   [PersonId] => 129
   [PersonEmail] => h@q.com
   [PersonName] => حمزه
   [PersonFamily] => جمشیدی
   [Login] => 1
)
  اما وقتی redirect  میکنم به سایر صفحات ،نمایش بصورت زیر هست:
کد:
Array
(
   [__ci_last_regenerate] => 1510384212
)

اگه اطلاعات دیگه ای هم نیاز دارید تا سریعتر راهنماییم کنید ممنون میشم بفرمایید تا ارائه کنم.
پاسخ
#6
این بخش رو کلا حذف کنید و ببنیید نتیجه چطور میشه:
کد php:
$config['cookie_prefix'   '';
$config['cookie_domain'   'http://www.domain.com/admin/';
$config['cookie_path'       '/';
$config['cookie_secure'   FALSE;
$config['cookie_httponly'    FALSE
مقدار cookie_domain ااشتباه ست شده و توصیه میشه کلا ست نشه مگه اینکه بخواهید روی ساب دامین هم بتونید استفاده کنید و کلا شرایط خاص.

با خود PHP که گفتم سشن ست کردید ببینید کار میکنه یا نه؟ 

کد php:
$_SESSION['framwork'] = 'codeigniter'
لطفا قبل از ارسال هرگونه پست قوانین سایت را مطالعه کنید.
----
وب سایت میثم محمودی
پاسخ


پرش به انجمن:


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