كيف يمكنني إنشاء وكتابة وقراءة بيانات الجلسة في CakePhp؟

StackOverflow https://stackoverflow.com/questions/1091030

  •  11-09-2019
  •  | 
  •  

سؤال

هل يمكن لأي شخص أن يعطيني مثالا على كيفية إنشاء جلسات وكتابة البيانات إليها. لقد رأيت بناء جملة حول كيفية كتابة البيانات إلى جلسة باستخدام أمر الكتابة. ولكن كيفية إنشاء جلسة واسترداد القيم فيه.

في طلبي، لدي بيانات اثنين، form_id و user_id يجب استخدامها في جميع طلبات الصفحة. فكيف يمكنني حفظه كمتغير جلسة واستخدامه عبر التطبيق؟

تعديل

function register()
{
    $userId=$this->User->registerUser($this->data);
    $this->Session->write('User.UserId',$userId);
    //echo "session".$this->Session->read('User.UserId');
    $this->User->data=$this->data;
    if (!$this->User->validates())
    {
    $this->Flash('Please enter valid inputs','/forms' );
      return;   
    }

$this->Flash('User account created','/forms/homepage/'.$userId);            

}   

كيفية استخدام متغير الجلسة 'user.userid' بدلا من $ Userid في $ هذا-> فلاش ("حساب المستخدم الذي تم إنشاؤه"، / النماذج / الصفحة الرئيسية / ".$ userid.);

وهل يمكنني استخدام هذا المتغير في جميع ملفات رأيي، لأنه في جميع طلبات الصفحة التي اجتازها أيضا UserID؟

تحرير 2.

لدي 2 وحدات تحكم، مستخدم وشكل. أكتب معرف المستخدم متغير جلسة في المستخدمين_مراقب. لدي ملف عرض يسمى Homepage.ctp، يعمل عمله في النماذج_Controller. الآن كيف يمكنني استخدام متغير الجلسة المحددة في Users_Controller في الصفحة الرئيسية؟ آسف إذا سأطلب أسئلة سخيفة. ذهبت عبر الكعكة، لكن شكوكي لم تكن تطهيرها. أحاول أيضا تجربة التجربة والخطأ للترميز، لذا يرجى مساعدتي.

تحرير 3.

لدي متغير جلسة "UID" وهو معرف المستخدم في إجراءات الصفحة الرئيسية لوحدة تحكم.

       $this->Session->write('uid',$this->data['Form']['created_by']);

أحتاج إلى نفس المتغير في طريقة إجراء التصميم لنفس وحدة التحكم. عندما أعطي

             $uid=$this->Session->read('uid');
            echo "uid: ".$uid;

لا ترد القيمة.

لا يمكنني استخدام متغير الجلسة في وحدة التحكم في نفس وحدة التحكم؟

هل كانت مفيدة؟

المحلول 5

اكتشفت السبب وراء عدم صدى UID (تحرير 3 جزءا من السؤال). من المقرر أن يكون خطأ سخيف، وكان مساحة بيضاء بعد النهاية؟> في وحدة التحكم. الآن هو العمل بشكل جيد.

نصائح أخرى

المخبز هو أفضل صديق لك:

http://book.cakephp.org/view/398/methods.

كل ما تبذلونه من الجلسة اقرأ / يكتب ينتمي إلى وحدة تحكم:

$this->Session->write('Person.eyeColor', 'Green');

echo $this->Session->read('Person.eyeColor'); // Green

في كعكة PHP يمكنك إنشاء جلسة مثل هذا

$this->request->session()->write('user_id', 10);

ويمكنك قراءة قيمة الجلسة مثل هذا

echo $this->request->session()->read('user_id');

سوبر بسيطة!

ليس عليك كتابة أي رمز لإنشاء جلسة، فهي مبنية بالفعل فيها. ثم يمكنك فقط استخدام جلسات القراءة والكتابة كما هو مذكور أعلاه. انظر أيضا هنا للحصول على مزيد من التفاصيل:

http://book.cakephp.org/2.0/ar/core-libries/components/sessions.html.المستخدمة في وحدات التحكم

http://book.cakephp.org/2.0/ar/core-libraries/helpers/session.html.المستخدمة في وجهات النظر

في هذه الحالة سيكون:

$this->Flash('User account created','/forms/homepage/'.$this->Session->read('User.UserId'));

وعلى سؤالك الثاني مغفرة بواسطة جايسون مي (http://api.cakephp.org/class/session-helper.). يمكنك ببساطة استخدام هذا في رأيك:

$userId = $session->read('User.UserId');

قراءة صفحات كتاب الطبخ المناسبة ببطء وعناية عادة ما تساعد كثيرا ...

عندما يكون لدي سلوك جلسة غريبة، وهذا يساعدني.

نموذج:

 function clearAllDBCache() {
    $db =& ConnectionManager::getDataSource($this->useDbConfig);
    $db->_queryCache = array();
   }

`

acess sessions helper الخاص بك في lib/Cake/View/Helper/SessionHelper.php وإضافة الطريقة:

public function write($name = null) {
    return CakeSession::write($name);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top