سؤال

أنا حاليا تمزيق شعري في محاولة لاستمرار المصادقة عبر جلسة قواعد قاعدة البيانات. لقد قمت بتعيين Zend_Session لاستخدام قاعدة بيانات، وعلى التفتيش، ZEND هو كتابة القيم إلى قاعدة البيانات. ومع ذلك، فإن معرف تلك الجلسات لا يبدو أنه يتطابق مع phpsessid - حتى الآن عندما أحصل على zend_session لإرجاع المعرف - فإنه بإرجاع قيمة مطابقة.

لذلك - في DB لدي:

ID.....MODIFIED.......LIFETIME...DATA

344..1265640083.......1440.......BLAH

ومع ذلك، إذا اتصلت بالمعرف من جلسة ZEND نفسها ...

$id = Zend_Session::getId();
echo $id; // mbgspg2gvf1c3r9l7qpv6orgt4

أفترض أن المعرف الذي تم إنشاؤه عن طريق جلسة zend يجب أن يتطابق مع ذلك من phpsessed، صحيح؟

ها هي bootstrap بلدي

    $dbAdapter = $resource->getAdapter();//connection is tested and working

    Zend_Registry::set("db", $dbAdapter);

    $config = array(
                    'name'           => 'sessions',
                    'primary'        => 'id',
                    'modifiedColumn' => 'modified',
                    'dataColumn'     => 'data',
                    'lifetimeColumn' => 'lifetime',
                    'db'             => $dbAdapter
                    );
    Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
    Zend_Session::start();

سأكون ممتنا للأبد إذا كان شخص ما يستطيع إلقاء بعض الضوء على هذا ...

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

المحلول

حسنا، أنا مخبأ. لقد غيرت نوع الجدول إلى InnoDB والآن يعمل.

في دفاعي - في الوثائق الرئيسية لا تحدد InnoDB: http://framework.zend.com/manual/en/zend.session.savehandler.dbtable.html.

بينما هنا يفعل: http://framework.zend.com/wiki/display/zfprop/zend_session_savehandler_dbless؟comments=false.

أنا أصلي هذا ما تم إصلاحه. ربما خطأ محلي في اباتشي الخاص بي؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top