আমি বেনামে ব্যবহারকারীদের জন্য সেশন ডেটা কীভাবে সংরক্ষণ করব?


20

ড্রুপাল for এর জন্য আমার শেষ প্রকল্পে, আমি নিম্নলিখিত কোডটির মতো কোড ব্যবহার করে ডেটা সংরক্ষণ করেছি:

$_SESSION['xxx'] = serialize($data);

ড্রুপাল 7 এ, এটি কাজ করে না।

ড্রুপাল users এ, আমি কীভাবে অনামী ব্যবহারকারীদের জন্য সেশন ডেটা সংরক্ষণ করব?

উত্তর:


4

এটি কারণ কী সহ ড্রপাল সেভ সেশন, এর অর্থ আপনার মতো কিছু করা উচিত

  $_SESSION['yourkey']['xxx'] = serialize($data);

আপনি এটি চেষ্টা করতে পারেন।

function lists_session($key, $value = NULL) {
  global $user;

  static $storage;

  // If the user is anonymous, force a session start.
  if(!user->uid) {
    drupal_session_start();
  }

  if ($value) {
    $storage[$key] = $value;
    $_SESSION['lists'][$key] = $value;   // I use 'lists' in case some other module uses 'type' in $_SESSION
  }
  else if (empty($storage[$key]) && isset($_SESSION['lists'][$key])) {
    $storage[$key] = $_SESSION['lists'][$key];
  }
  return $storage[$key];
}

সুতরাং, সেশনে একটি পরিবর্তনশীল সংরক্ষণ করতে:

lists_session("xxx", serialize($data));

এবং মানটি পুনরুদ্ধার করতে, কেবলমাত্র ব্যবহার করুন:

$myVar = lists_session("xxx");

এবং যেমনটি মোওলট উল্লেখ করেছেন কখনও কখনও অজ্ঞাতনামা ব্যবহারকারীদের জন্য সেশনকে তাত্পর্যপূর্ণ করা হয় না তবে আপনাকে drupal_session_start()ম্যানুয়ালি করা উচিত ।


2

দস্তাবেজ অনুসারে , আপনার যা করা উচিত তা হ'ল।

যার অর্থ হয় যে কোনও বাগ আছে বা আপনার পৃষ্ঠাগুলি অ্যান ব্যবহারকারীদের জন্য ক্যাশে হচ্ছে তাই সেশনের ডেটাটি পড়া হচ্ছে না। আমি প্রথম উদাহরণে আপনার ক্যাশিং সেটিংস পরীক্ষা করব।


ধন্যবাদ। সম্ভবত এটি একটি বাগ। কিন্তু এটা না হওয়া পর্যন্ত আমি ব্যবহার করার সিদ্ধান্ত নিয়েছে session_api
vitaly.batonov

@ প্রাণবন্ত.বাটোনভ আপনি কীভাবে আপনার সমস্যা সমাধানের জন্য সেশন_াপি ব্যবহার করেছেন তা বিশদভাবে বলতে পারেন?
lathomas64

2

ড্রুপাল 7 কখনও কখনও অজ্ঞাতনামা ব্যবহারকারীদের জন্য সেশনগুলি স্বয়ংক্রিয়ভাবে শুরু করে না। তাদের জন্য সেশনগুলি ব্যবহার করার জন্য, আপনাকে drual_session_start দিয়ে সেশনটি জোর করে ব্যবহার করতে সক্ষম হতে পারে $_SESSION


1
দ্রুপালকে বলার কি কোনও উপায় আছে, সবসময় অজ্ঞাতনামা ব্যবহারকারীদের জন্য একটি অধিবেশন শুরু করবেন?

1

অনুসরণ করে ডেটা সংরক্ষণ করার পরে:

$_SESSION['xxx'] = serialize($data);

অন্য ফাংশন প্রয়োজন:

drupal_session_start();

সেশন টেবিলের জন্য id = 0 সহ একটি রেকর্ড দরকার, আপনি id = 0 দিয়ে ম্যানুয়ালি একটি রেকর্ড সন্নিবেশ করতে পারেন।


0

ব্যবহারকারীদের টেবিলে uid = 0 দিয়ে একটি ব্যবহারকারী তৈরি করুন কারণ ড্রুপাল সর্বদা বেনাম ব্যবহারকারীদের জন্য সেই ইউআইডি ব্যবহার করে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.