CodeIgniter - هو مخصص الدورة البيانات التي يتم نهبها من قبل Facebook?

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

  •  05-07-2019
  •  | 
  •  

سؤال

أنا أتساءل عما إذا كان هناك وسيلة لتفريغ كل من قيم

$this->session->userdata() 

لذا يمكن استكشاف?

أنا أعمل في Facebook و صفحة تسجيل الدخول ، وبمجرد أن نجاح أريد أن يمر حول UID المستخدم الحالي, و ظننت أن هذا من شأنه أن تعمل بشكل جيد.

لدي حاليا uid على النحو التالي:

require_once 'facebook.php';
$appapikey = 'XXXX';
$appsecret = 'XXXX';
$facebook = new Facebook($appapikey, $appsecret);
$user_id = $facebook->require_login();
$this->db->like('uid', $user_id);
$this->db->from('users');
$has_signed_up = $this->db->count_all_results();

if ($has_signed_up == 0) {
redirect('/setup/signup/', 'location');
}
else {
$this->session->set_userdata('uid', $user_id);
redirect('/preferences/index/', 'location');
}

وبالتالي فإن إعادة توجيه يحدث, ولقد الإعداد بسيطة جدا في تفضيلات/مؤشر:

    echo "this is the preferences form <br />";
    echo $this->session->userdata('uid');
    echo $this->session->userdata('session_id');

والنتيجة هو غامض:

this is the preferences form
858f500e167e359edc1942a96f3bac35

لذلك تماما يتخطى منتصف صدى تحتوي uid.أنا لا وضع هذا بشكل صحيح ؟ هل هناك طريقة للتخلص من جميع القيم الدورة مجموعة أن نرى ما يحصل ؟ أي مساعدة ستكون مجرد كبيرة.

التحديث

يجب تشغيل var_dump($this->الدورة->userdata) على كل الخام من خلال الموقع Facebook.

على الموقع أنه يعرض كل مجموعة قيم في مجموعة تحتوي على 5 قيم (session_id drop, IP, User_agent, last_activity ، uid).

في Facebook كروم إلا أنه يظهر فقط 4 القيم التي وضعتها CodeIgniter.سمعت ملفات تعريف الارتباط يمكن أن يكون إلا 4k و التي التشفير يمكن أن يكون مشكلة.يمكن أن الفيس بوك أن يملأ ملفات تعريف الارتباط الخاصة المشفرة (قراءة:أكبر) البيانات ؟

تحديث 2

عندما أعلق من توجيه ، و فقط:

  else {
  $this->session->set_userdata('uid', $user_id);
  echo ':test_'.$this->session->userdata('uid').'_test:';
  //redirect('/preferences/index/', 'location');
  }

ذلك بأخلاص العوائد :test_1234_test:في Facebook.حتى في مكان ما خلال إعادة توجيه هو فقدان هذا الجزء من مجموعة (ولكن ليس كل مجموعة).

هو ربما مجرد إنشاء جلسة جديدة على إعادة توجيه الصفحة ؟ ولهذا السبب إلا أربعة "الأسهم" المتغيرات ؟ إذا كان هذا هو الحال, سوف تحتاج إلى البحث في كيفية يخلق دورات ، وإذا Facebook مسح الكوكيز أعتقد.

تحديث 3

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

  1. مجموعة $user_id = 1234
  2. $this->الدورة->set_userdata('uid', $user_id)
  3. إعادة توجيه إلى صفحة جديدة
  4. Var_dump جميع المعلومات الممكنة

ما يحدث في DB هو هذا:DB السجلات http://nikolausjj.facebook.joyent.us/Picture2.png

لذلك يخلق واحد سجل جيد مع بيانات المستخدم ، ثم فور توجيه يخلق دورة جديدة من دون الاعتراف قبل أحد.يمكن للشخص شرح فيها CI إطار التحقق لمعرفة ما إذا كان لديه قبل الدورة القائمة ؟ دليل المستخدم يفسر ذلك بأنها "سحرية" في الأساس.

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

المحلول

يمكنك استخدام var_dump() لإخراج الدورة.شيء مثل هذا

var_dump($this->session);

على set_userdata دعوة يبدو موافق.هل أنت متأكد $user_id يتم تعيين.لأن صدى surley تنفيذها ولكن uid لم يتم تعيين أو تعيين إلى سلسلة فارغة.

حاول استبدال صدى مع

echo ':test_'.$this->session->userdata('uid').'_test:';

معلومات أخرى مفيدة عن الإجابة

  • ما المتصفح الذي تستخدمه ؟
  • هل لديك تسطير _ في اسم النطاق الخاص بك ؟
  • هل تستخدم CI دورات أو بعض المجمع الأصلية PHPsessions
  • هو قيمة uid كما خسر/لم يتم تعيين عند التعليق من إعادة توجيه ؟

اقتراحات أخرى:

  • محاولة redirect('/preferences/index/', 'refresh'); بدلا من location
  • أنا لست على دراية facebook التنمية ولكن /preferences/index تحت عنصر التحكم الخاص بك ؟ إذا كان نعم حاول إزالة (إذا كان موجودا) $this->load->library(‘session’) و بدلا من تحميل ذلك في autoload.php.
  • حاول تغيير $config[‘sess_match_ip’] أن `كاذبة
  • حاول وضع $config[‘sess_encrypt_cookie’] إلى FALSE
  • حاول استبدال استخدام CI-الدورة مع CI الأصلي الدورة
  • هو UID معقولة المعلومات إذا لم تخزينها في ملف تعريف الارتباط.إذا كان يهم إذا كان يمكن أن يكون المغشوش لا.

نصائح أخرى

لم يحل كيفية اجتياز الدورة المتغيرات من صفحة إلى أخرى عبر Facebook.الحل ببساطة الاتصال Facebook API المستخدم UID مرة أخرى على كل صفحة.ليست كبيرة البرمجة ، لكنه يعمل على ما يرام بالنسبة لي.:-/

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