পিএইচপি-তে সেশন_উনসেট () এবং সেশন_ডাস্ট্রয়ে () এর মধ্যে পার্থক্য কী?


88

থেকে php.net ডকুমেন্টেশন:

সেশন_ডেস্ট্রয় - একটি সেশনে নিবন্ধিত সমস্ত ডেটা ধ্বংস করে

সেশন_উনসেট - সমস্ত সেশন ভেরিয়েবল বিনামূল্যে করুন

আমার তিনটি অংশ প্রশ্ন:

দুটি ফাংশন দেখতে অনেকটা একই রকম।
দুজনের মধ্যে আসলে কী পার্থক্য?

উভয়ই একটি সেশনে নিবন্ধিত সমস্ত ভেরিয়েবল মুছে ফেলার জন্য মনে হচ্ছে। তাদের মধ্যে কেউ কি আসলেই অধিবেশনটি নষ্ট করে দেয়? যদি তা না হয় তবে আপনি এটি কীভাবে সম্পাদন করবেন (সেশনটি নিজেই ধ্বংস করুন)।

এটি কি সঠিক যে দুটি ফাংশনের কোনওটিই ক্লায়েন্টের সেশন কুকি মুছে দেয় না?

উত্তর:


145

session_unsetশুধু $_SESSIONপরিবর্তনশীল সাফ করে । এটি করার সমতুল্য:

$_SESSION = array();

সুতরাং এটি কেবল স্থানীয় $_SESSIONপরিবর্তনশীল উদাহরণকেই প্রভাবিত করে তবে সেশন স্টোরেজে সেশন ডেটা নয়।

এর বিপরীতে, session_destroyসেশন স্টোরেজে থাকা সেশন ডেটা ধ্বংস করে (যেমন ফাইল সিস্টেমে সেশন ফাইল)।

বাকি সব কিছুই অপরিবর্তিত রয়েছে।


@ গম্বো সেশন_উনসেট () এখন অবনমিত হওয়ায় সমস্যা নেই? আমি এটি পরীক্ষা করেছিলাম এবং এটি আমার পক্ষে কার্যকর হয়নি।
নবনিত

@ হ্যাঁ কি সাবধানবাণী?
GoTo

4
@ গোটো: পিএইচপি 4-তে সাধারণ হিসাবে সেশন ভেরিয়েবল হিসাবে নিবন্ধিত বৈশ্বিক চলকগুলি আনসেট করতে সেই সেশন_আনসেটটি ব্যবহৃত হয়েছিল 4. আজকের মতো সেই ফাংশনটির ব্যবহার অ্যানক্রোনস্টিক এবং প্রয়োজনীয় নয়। এটি এখনও পিএইচপি-তে থাকার একমাত্র কারণ সম্ভবত পিছনের সামঞ্জস্যতা এবং অন্য কিছু নয়। আপনি যদি নতুন কোড লিখেন তবে আপনার এটি ব্যবহার করা উচিত নয়। যদি আপনি কোডের মধ্যে এটি সন্ধান করেন তবে আপনি স্পষ্টভাবে পিএইচপি 4 কোড নিয়ে কাজ না করে সেশন_ রেজিস্টার () এবং অন্যান্য পিএইচপি 4 সেশন ভেরিয়েবলের হ্যান্ডলিং ফাংশনগুলির কলগুলির সাথে একত্রে এটি সরিয়ে ফেলতে হবে।
hakre

4
তবুও এটি বিভ্রান্তিকর: দয়া করে বর্ণনা করুন local $_SESSION variable instance vs session data in the session storage। আমি জানি যে আমার মতো এমন 1000 জন লোক আছেন যারা আপনার বক্তব্যটি পান নি। ধন্যবাদ
প্রতীক

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

17

session_destroy(); পুরো সেশনটি মোছা হচ্ছে।

session_unset();সেশন থেকে শুধুমাত্র ভেরিয়েবল মুছুন - সেশন এখনও বিদ্যমান। কেবল ডেটা কাটা হয়।


15
session_unset();

সমস্ত সেশন ভেরিয়েবলের সমস্ত ডেটা সাফ করুন।


session_destroy();

সমস্ত সেশন সরান।


উদাহরণ :

session_start();
session_destroy();     
$a = "1234";
$_SESSION[a] = $a;

$_SESSION[a]হয় NULL


session_start();
session_unset();     
$a = "1234";
$_SESSION[a] = $a;

$_SESSION[a]হয় 1234


সুতরাং, আমি ব্যবহার করব:

session_start();
session_destroy();   
session_start();  
$a = "1234";
$_SESSION[a] = $a;

4
আপনার মধ্যম উদাহরণে -> session_unset();আপনি এখনও কিছু করছেন না যেহেতু আপনি এখনও সেশন ব্যবহার করতে পারেন $_SESSION["a"] , সুতরাং এটির ব্যবহারটি কী?
প্রতীক

4
$_SESSION[a]হওয়া উচিত $_SESSION['a'] এবং আপনি যা বলেছিলেন তার বিপরীতে এটি আপনার প্রথম উদাহরণে শূন্য নয়
ইসতিয়াক আহমেদ

6

session_unset()$_SESSIONপরিবর্তনশীল (যেমন হিসাবে array()) সাফ করবে , তবে এটি সেশন ফাইলটিকে স্পর্শ করবে না। তবে স্ক্রিপ্ট শেষ হলে; $_SESSIONফাইলের লিখিত হবে রাজ্য । তারপরে এটি ফাইলটি সাফ করবে তবে মুছে ফেলবে না। আপনি যখন session_destroy()এটি ব্যবহার করবেন তখন এটি স্পর্শ করবে না $_SESSION( var_dump($_SESSION)পরে ব্যবহার করুন session_destroy()), তবে সেশন ফাইলটি মুছে ফেলবে, সুতরাং যখন স্ক্রিপ্টটি প্রস্থান করে সেখানে রাষ্ট্রটির লিখনের জন্য কোনও ফাইল থাকবে না $_SESSION


1

আমি session_unset($_SESSION['session_name'])এটি নির্দিষ্ট বা স্বতন্ত্র / একক সেশনের নামটি আনসেট করব তা ভেবে ব্যবহার করার চেষ্টা করেছি । তবে ব্যবহার session_unset($_SESSION['session_name'])করলে সমস্ত সেশনের নামই আনসেট হবে। unset($_SESSION['session_name'])আপনি যদি কোনও একক সেশনের নামটি আনসেট করতে চান তবে ডান কোডটি ব্যবহার করতে হবে ।



0

সেশন_স্টার্ট (); # এটি ব্রাউজার রিয়েলটাইম মেমোরিতে একটি ভার্চুয়াল অ্যারে (সহযোগী) তৈরি করবে

দুটি আইটেম যুক্ত করা হয়েছে

> $_SESSION['me'] = "Yadab";  
> $_SESSION['you'] = "Avi";
>
> print_r($_SESSION); #will give, array( "me"=>"Yadab", "you"=>"Avi" )

পরীক্ষা 1

> unset($_SESSION['me']); #only 'me' variable is removed fully (index & value) 
> print_r($_SESSION); #now the array is Array("you"=>"Avi")

পরীক্ষা 2

> session_destroy(); #will unset the values of all session variables, but indexes exists 
> print_r($_SESSION); #Output, Array("you"=>undefined)
> #but some browser can store the value in cookies

পরীক্ষা 3

> session_unset(); #will unset all the main variables not only the values 
> print_r($_SESSION); #that means session array is now empty, like Array()

অন্যদের মন্তব্য করে স্বতন্ত্রভাবে পরীক্ষা 1, 2, বা 3 ব্লক করুন


-2

আমি মনে করি যে সেশন ডেটা অবশ্যই মুছে ফেলা হয়েছে তা নিশ্চিত করার জন্য সেশন_ডেস্ট্রয় () এবং সেশন_উনসেট () একই সময়ে ব্যবহার করা উচিত।


আমি মনে করি আপনি উত্তর সম্পর্কে নিশ্চিত নন এর অর্থ একটি মন্তব্য হওয়া উচিত উত্তর নয়।
শাইফুল ইসলাম

4
session_unset()পরে session_destroy()অর্থহীন হবে। session_unset()Keys _SESSION সুপারগ্লোবাল থেকে সমস্ত কী এবং মানগুলি সাফ করতে ব্যবহার করুন বা session_destroy()পুরো সেশনটি মুছতে ব্যবহার করুন; উভয়কে কেবল "নিশ্চিত করতে" ব্যবহার করবেন না, কার্যটি কার্য সম্পাদনের জন্য বিশ্বাস করুন।
রেডবার্ন

@redburn session_destroy()বর্তমান পৃষ্ঠায় প্রস্থান না করা অবধি এসস সুপারগ্লোবাল ভারটি আনসেট করবে না।
ইউশা আলেয়ুব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.