পিএইচপি সেশনগুলি কীভাবে কাজ করবে? ("তারা কীভাবে ব্যবহৃত হয়?")


127

সেশন ফাইলগুলি সাধারণত /tmp/সার্ভারে বলা হয়, এবং নামকরণ করা হয় sess_{session_id}। আমি সামগ্রীগুলি দেখছি এবং তারা কীভাবে কাজ করে তা অনুধাবন করতে পারি না।

ফাইল থেকে ভেরিয়েবলের নাম এবং সামগ্রীগুলি আনা সহজ। কিন্তু পিএইচপি কীভাবে জানতে পারে যে কোন সেশনটি কার?

সেশন_আইডি সম্পূর্ণরূপে এলোমেলো মনে হচ্ছে এবং একটি আইপি ঠিকানায় বেশ কয়েকটি ব্যবহারকারী থাকতে পারে এবং প্রতিটি ব্যবহারকারীর একাধিক ব্রাউজার উইন্ডো খোলা থাকলে তাদের বেশ কয়েকটি সেশন থাকতে পারে।

সুতরাং কিভাবে এটি কাজ করে?


কটাক্ষপাত stackoverflow.com/questions/523703/...
adatapost

উত্তর:


202

সাধারণ পরিস্থিতিতে:

  • সেশন আইডিটি যখন তার সেশন তৈরি করা হয় তখন ব্যবহারকারীকে প্রেরণ করা হয়।
  • এটি একটি কুকিতে সঞ্চয় করা হয় (যাকে বলা হয়, ডিফল্টরূপে, PHPSESSID)
  • যে কুকি প্রতিটি অনুরোধ সহ সার্ভারে ব্রাউজার দ্বারা প্রেরণ করা হয়
  • সার্ভার (পিএইচপি) সেই কুকিটি ব্যবহার করে, সেশন_আইড যুক্ত, কোন ফাইলটি সেই ব্যবহারকারীর সাথে সম্পর্কিত know

সেশন ফাইলগুলির ডেটা হ'ল $_SESSIONসিরিয়ালাইজড (যেমন, স্ট্রিং হিসাবে উপস্থাপিত - সিরিয়ালাইজের মতো কোনও ফাংশন সহ ) ; আর অ-সিরিয়ালাইজড যখন ফাইলটি পিএইচপি দ্বারা লোড করা হয়, $_SESSIONঅ্যারেটি তৈরি করতে।


কখনও কখনও, সেশন আইডি কোনও কুকিতে সংরক্ষণ করা হয় না, তবে ইউআরএলগুলিতেও প্রেরণ করা হয় - তবে এটি আজকাল বিরল।


আরও তথ্যের জন্য, আপনি ম্যানুয়ালটির সেশন হ্যান্ডলিং বিভাগটি একবার দেখে নিতে পারেন , যা কিছু দরকারী তথ্য দেয়।

উদাহরণস্বরূপ, সেশন আইডি পাস করার বিষয়ে একটি পৃষ্ঠা রয়েছে যা ব্যাখ্যা করে যে কীভাবে সেশন আইডি পৃষ্ঠা থেকে অন্য পৃষ্ঠায় পাস করা হয়, একটি কুকি ব্যবহার করে বা ইউআরএল - এবং কোন কনফিগারেশন বিকল্পগুলি এটিকে প্রভাবিত করে।


5
কীভাবে একটি মোবাইল ডিভাইস (একটি নেটিভ অ্যাপ্লিকেশন থেকে) সেশনগুলি সাধারণত পরিচালনা করে? সেশন আইডি সংরক্ষণ করছেন? অথবা এটি কি ওআউথের সাথে এসেছিল?
অ্যাডাম ওয়েট

13

পিএইচপি সেশন কীভাবে কাজ করে

  • প্রথমত পিএইচপি a86b10aeb5cd56434f8691799b1d9360একটি পৃথক সেশনের জন্য একটি 16-বাইট দীর্ঘ দীর্ঘ অনন্য শনাক্তকারী নম্বর (32 হেক্সাডেসিমাল অক্ষরের স্ট্রিং হিসাবে সঞ্চিত ) তৈরি করে।

  • PHPSESSID কুকিটি সেই নম্বরটি সংরক্ষণ করতে ব্যবহারকারীর ব্রাউজারে সেই অনন্য পরিচয় নম্বরটি পাস করে।

  • Sess_ উপসর্গ (যেমন sess_a86b10aeb5cd56434f8691799b1d9360।) সহ অনন্য পরিচয় নম্বরটির একই নামের সাথে সার্ভারে একটি নতুন ফাইল তৈরি করা হয়েছে

  • ব্রাউজারটি প্রতিটি অনুরোধের সাথে সেই কুকিকে সার্ভারে প্রেরণ করে।

  • যদি পিএইচপি পিএইচপিএসইসিডি কুকি থেকে প্রতিটি অনন্য পরিচয় নম্বর পেয়েছে (প্রতিটি অনুরোধে), তবে পিএইচপি অস্থায়ী ডিরেক্টরিতে অনুসন্ধান করে এবং সেই নম্বরটি ফাইলের নামের সাথে তুলনা করে। যদি উভয়ই এক হয় তবে এটি বিদ্যমান সেশনটি পুনরুদ্ধার করে, অন্যথায় এটি ব্যবহারকারীর জন্য একটি নতুন সেশন তৈরি করে।

যখন ব্যবহারকারী ব্রাউজারটি বন্ধ করে দেয় বা সাইটটি ছেড়ে যায় তখন একটি সেশন নষ্ট হয়ে যায়। সেশনের সময় নির্ধারিত সময়সীমা শেষ হওয়ার পরে সার্ভারটি সেশনটিও সমাপ্ত করে। এই পিএইচপি অধিবেশন পরিচালনা করার জন্য ব্যবহার করছে এমন সাধারণ প্রক্রিয়া পদক্ষেপ। আমি আশা করি এই নিবন্ধটি আপনাকে পিএইচপি সেশন কীভাবে কাজ করছে তা বুঝতে সহায়তা করে।

আরও তথ্যের জন্য এই নিবন্ধটি দেখুন। পিএইচপি সেশন কীভাবে কাজ করে


তবে আমি যদি বলি যে একটি নির্দিষ্ট সাইটে লগ ইন হয়েছে (ওরফে: একটি সেশনে), এবং একটি নতুন ট্যাব খুলুন mysite.com/cart। আমি আমার "হ্যালো জো ডো, 5 বার্তা, এখানে আপনার শপিং কার্টের তালিকা ..." ওরফে সেশনের তথ্যও পেয়ে যাব। - তবে কেন এই ফাঁকা ট্যাব সম্পর্কিত ব্রাউজারটি জিইটি-অনুরোধের পাশাপাশি কোনও সেশন-আইডি প্রেরণ করবে? দ্রুত আপডেট: আহ, উত্তরটি পেয়েছে: +)
ফ্রাঙ্ক নোক

আমি কী জিজ্ঞাসা করতে পারি যে সেশন আইডি কীভাবে সুরক্ষা সরবরাহ করতে পারে? উদাহরণস্বরূপ ব্যবহারকারী যদি বিভিন্ন ব্যবহারকারীর প্রোফাইলে অ্যাক্সেস করার জন্য ইউআরএল প্যারামিটার পরিবর্তন করার পরিবর্তে লগ ইন করে এবং তার প্রোফাইলে উপস্থিত হন, সেশন আইডি কীভাবে এটি প্রতিরোধ করতে পারে?
অ্যান্ড্রুবয়

4

সেশন আইডি প্রকৃতপক্ষে এলোমেলো এবং কনফিগারেশনের উপর নির্ভর করে একটি কুকিতে বা ইউআরএল-এ দেওয়া হয়। আপনি ইতিমধ্যে কিছু ইউআরএলে এই পিএইচপিএসআইএসডি = এক্সএক্সএক্সএক্সএক্স দেখে থাকতে পারেন, সেই নামে একটি কুকিও রয়েছে।


2

পিএইচপি-তে সেশনগুলি সেশন_স্টার্ট () ফাংশনটি ব্যবহার করে শুরু করা হয়। সেটকুকি () ফাংশনের মতো সেশন_স্টার্ট () ফাংশনটি অবশ্যই পৃষ্ঠায় ফাঁকা লাইন সহ যে কোনও HTML এর আগে আসতে হবে। এটি এর মতো দেখাবে: <?php session_start( );?><html><head> ....... ইত্যাদি সেশন_স্টার্ট () ফাংশনটি একটি এলোমেলো সেশন আইডি উত্পন্ন করে এবং এটি ব্যবহারকারীর কম্পিউটারে একটি কুকিতে সংরক্ষণ করে (এটি কেবলমাত্র সেশন তথ্য যা ক্লায়েন্টের সাইডে সঞ্চিত থাকে)। ) কুকির ডিফল্ট নাম PHPSESSID, যদিও এটি সার্ভারের পিএইচপি কনফিগারেশন ফাইলগুলিতে পরিবর্তন করা যেতে পারে (বেশিরভাগ হোস্টিং সংস্থাগুলি এটিকে একা রেখে দেবে however) আপনাকে পিএইচপি কোডে সেশন আইডির রেফারেন্স দেওয়ার জন্য, আপনি তাই উল্লেখ করতে পারেন পরিবর্তনশীল $ PHPSESSID (এটি একটি কুকির নাম; কুকিজ থেকে মনে আছে?)

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