আমি যখন কোনও কুকি সরিয়ে ফেলতে চাই তখন চেষ্টা করি
unset($_COOKIE['hello']);
আমি ফায়ারফক্স থেকে আমার কুকি ব্রাউজারে দেখতে পাচ্ছি যে কুকিটি এখনও আছে। আমি কীভাবে সত্যই কুকি সরিয়ে ফেলতে পারি?
আমি যখন কোনও কুকি সরিয়ে ফেলতে চাই তখন চেষ্টা করি
unset($_COOKIE['hello']);
আমি ফায়ারফক্স থেকে আমার কুকি ব্রাউজারে দেখতে পাচ্ছি যে কুকিটি এখনও আছে। আমি কীভাবে সত্যই কুকি সরিয়ে ফেলতে পারি?
উত্তর:
আপনি এটি চেষ্টা করতে পারেন
if (isset($_COOKIE['remember_user'])) {
unset($_COOKIE['remember_user']);
setcookie('remember_user', null, -1, '/');
return true;
} else {
return false;
}
unset($_COOKIE['Hello']);
। এটি সরিয়ে ফেললে এটি কিছুই পরিবর্তন করে না।
unset($_COOKIE['Hello']);
আপনি যদি কোডটি পরে কোডের বাইরে কোথাও চেক করতে পারেন তবে @ মেশিনেডিক্টিক্টটি আসলে গুরুত্বপূর্ণ।
"" এ মানটি এবং গতকাল (অথবা অতীতের কোনও তারিখ) এ মেয়াদ নির্ধারণ করুন
setcookie("hello", "", time()-3600);
তারপরে কুকিটির পৃষ্ঠাটি পরের বার লোড হওয়ার পরে শেষ হবে।
একটি কুকি মুছে ফেলার একটি পরিষ্কার উপায় হ'ল $_COOKIE
মান এবং ব্রাউজার কুকি ফাইল উভয়ই সাফ করা :
if (isset($_COOKIE['key'])) {
unset($_COOKIE['key']);
setcookie('key', '', time() - 3600, '/'); // empty value and old timestamp
}
setcookie
কলটিতে setcookie('key', '', time() - 3600, '/');
unsetting
সফলভাবে হয়েছিল ।
null
মান সহ যে কুকিগুলির যত্ন করে সেগুলির জন্য, আপনাকে পরিবর্তে অ্যারে_কি_এক্সেস্টগুলি () ব্যবহার করতে হবে, যেহেতু একটি null
মান সহ একটি কুকি একটি isset()
চেক দ্বারা পাওয়া যাবে না ।
আপনার পিএইচপি সার্ভারের দ্বারা গণনা করা হিসাবে কুকিটিকে বিশ্বস্তভাবে মুছে ফেলার জন্য এটি অতীতে যে কোনও সময় মেয়াদোত্তীর্ণ হওয়ার জন্য সেট করা যথেষ্ট নয়। এটি কারণ ক্লায়েন্ট কম্পিউটারগুলি আপনার সার্ভারের থেকে পৃথক এবং অনেক সময় থাকতে পারে।
সর্বোত্তম অনুশীলন হ'ল বর্তমান কুকিটি ফাঁকা কুকি দিয়ে ওভাররাইট করা যা ভবিষ্যতের এক সেকেন্ড মেয়াদ শেষ হওয়ার পরে মহাকাশের পরে (1 জানুয়ারী 1970: 00:00:00 ইউটিসি):
setcookie("hello", "", 1);
এটি আপনার কোডে কুকিটিকে আনসেট করবে, তবে যেহেতু প্রতিটি অনুরোধে $ _COOKIE ভেরিয়েবলটি রিফ্রেশ হয়েছে, এটি কেবলমাত্র পরবর্তী পৃষ্ঠার অনুরোধে ফিরে আসবে।
প্রকৃতপক্ষে কুকি থেকে মুক্তি পেতে অতীতের মেয়াদ নির্ধারণের তারিখটি সেট করুন:
// set the expiration date to one hour ago
setcookie("hello", "", time()-3600);
unset()
কুকির দরকার নেই ?
আমার কোডে আমার একই সমস্যা ছিল এবং আমি দেখতে পেলাম যে এটি একটি কুকি পথের সমস্যা। এই স্ট্যাক ওভারফ্লো পোস্টটি দেখুন: পিএইচপি সেট কুকি মুছতে পারে না
আমি "/" এর একটি মান মান ব্যবহার করে কুকি সেট করেছিলাম, তবে আমি যখন এটি সাফ করার চেষ্টা করেছি তখন কোনও পথ মান ছিল না, তাই এটি পরিষ্কার হয় নি। সুতরাং এখানে কী কাজ করেছে তার একটি উদাহরণ:
কুকি সেট করা হচ্ছে:
$cookiePath = "/";
$cookieExpire = time()+(60*60*24);//one day -> seconds*minutes*hours
setcookie("CookieName",$cookieValue,$cookieExpire,$cookiePath);
কুকি সাফ করা:
setcookie("cookieName","", time()-3600, $cookiePath);
unset ($_COOKIE['cookieName']);
আশা করি এইটি কাজ করবে.
আপনি যদি অতীতে কুকির মেয়াদ শেষ করতে সেট করেন তবে ব্রাউজারটি এটি সরিয়ে ফেলবে। সেটপুকি দেখুন () মুছে ফেলুন উদাহরণ php.net এ
পিএইচপি ডক্স থেকে " উদাহরণ # 2 সেটকুকি () উদাহরণ মুছুন " লেবেলযুক্ত নমুনাটি দেখুন । ব্রাউজার থেকে একটি কুকি সাফ করার জন্য, আপনাকে ব্রাউজারটি বলতে হবে যে কুকির মেয়াদ শেষ হয়ে গেছে ... ব্রাউজারটি তখন এটি সরিয়ে ফেলবে। unset
যেহেতু আপনি এটি ব্যবহার করেছেন কেবল কুকি অ্যারে থেকে 'হ্যালো' কুকি সরিয়ে ফেলে s
আপনি যখন করবেন তখন পিএইচপি ভি 7 সেটকুকি () কোডটি এইভাবে কাজ করে:
<?php
setcookie('user_id','');
setcookie('session','');
?>
80 পোর্টে স্নিফ করার সময় tcpdump এর আউটপুট থেকে, সার্ভারটি নিম্নলিখিত HTTP শিরোনাম ক্লায়েন্টকে (ব্রাউজার) প্রেরণ করে:
Set-Cookie: user_id=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0
Set-Cookie: session=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0
নিম্নলিখিত অনুরোধগুলিতে প্যাকেট পর্যবেক্ষণ করা ব্রাউজার হেডারে এই কুকিগুলি আর প্রেরণ করে না
কুকি মুছতে আপনার কেবল মানটি নির্ধারণ করতে হবে:
"যদি আপনি কোনও মেয়াদোত্তীর্ণ সময়, পথ, বা ডোমেনের জন্য ননডেফল্ট মান সহ একটি কুকি সেট করেন তবে কুকি সঠিকভাবে মোছার জন্য আপনি যখন কুকি মুছবেন তখন আপনাকে আবার সেই একই মানগুলি সরবরাহ করতে হবে।" "শেখা পিএইচপি 5" বইয়ের উদ্ধৃতি।
সুতরাং এই কোডটি কাজ করা উচিত (আমার পক্ষে কাজ করে):
কুকি সেট করা হচ্ছে:
setcookie('foo', 'bar', time() + 60 * 5);
কুকি মোছা হচ্ছে:
setcookie('foo', '', time() + 60 * 5);
তবে আমি লক্ষ্য করেছি যে প্রত্যেকে অতীতের মেয়াদ নির্ধারণ করছে, তা কি প্রয়োজনীয় এবং কেন?
''
এর মতো জিনিস নয় null
।
সমস্ত কুকি মুছে ফেলতে আপনি লিখতে পারেন:
foreach ($_COOKIE as $key => $value) {
unset($value);
setcookie($key, '', time() - 3600);
}
আপনি যদি কুকিটিকে "মুছে ফেলতে" চান তবে সেক্ষেত্রে এক ঘন্টার আগে মেয়াদ শেষ হওয়ার তারিখটি সেট করুন:
setcookie ("TestCookie", "", time() - 3600);
অথবা
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", "example.com", 1);
সূত্র: http://www.php.net/manual/en/function.setcookie.php
আপনার filter_input()
সমস্ত গ্লোবালগুলির জন্য এই ফাংশনটি ব্যবহার করা উচিত যা কোনও দর্শনার্থী এইভাবে প্রবেশ / হেরফের করতে পারে:
$visitors_ip = filter_input(INPUT_COOKIE, 'id');
আপনি এটি সম্পর্কে এখানে আরও পড়তে পারেন: http://www.php.net/manual/en/function.filter-input.php এবং এখানে: http://www.w3schools.com/php/func_filter_input.asp
আমি জানি যে এই বিষয়টি তৈরি হওয়ার পরে অনেক দিন হয়েছে তবে আমি এই সমাধানের মধ্যে কিছুটা ভুল দেখতে পেয়েছি (আমি এটিকে এটি বলতে পারি, কারণ এটি বিশদ)। আমি সম্মত যে আরও ভাল সমাধান সম্ভবত এই সমাধান:
if (isset($_COOKIE['remember_user'])) {
unset($_COOKIE['Hello']);
unset($_COOKIE['HelloTest1']);
setcookie('Hello', null, -1, '/');
setcookie('HelloTest1', null, -1, '/');
return true;
} else {
return false;
}
তবে, বর্তমান ক্ষেত্রে, আপনি যে কোনও ক্ষেত্রে আনসেট ফাংশনটি কাজ করে সেখানে কুকিজ মুছে ফেলেন এবং আনসেট ফাংশনটি কাজ না করে এমন পরিস্থিতিতে আপনি নতুন মেয়াদোত্তীর্ণ কুকিজ তৈরি করেন।
এর অর্থ হ'ল যদি আনসেট ফাংশনটি কাজ করে তবে কম্পিউটারে এটির 2 টি কুকিজ থাকবে। যৌক্তিক দৃষ্টিতে জিজ্ঞাসিত লক্ষ্যটি হ'ল যদি সম্ভব হয় তবে কুকিজ মুছে ফেলা এবং যদি এটি সত্যিই না হয় তবে এটির মেয়াদ শেষ হয়ে যায়; "পরিষ্কার" ফলাফল পেতে।
সুতরাং, আমি মনে করি আমাদের আরও ভাল করা উচিত:
if (isset($_COOKIE['remember_user'])) {
setcookie('Hello', null, -1, '/');
setcookie('HelloTest1', null, -1, '/');
unset($_COOKIE['Hello']);
unset($_COOKIE['HelloTest1']);
return true;
} else {
return false;
}
ধন্যবাদ, ভালো দিন কাটুক আপনার :)
$cookie_name = "my cookie";
$cookie_value = "my value";
$cookie_new_value = "my new value";
// Create a cookie,
setcookie($cookie_name, $cookie_value , time() + (86400 * 30), "/"); //86400 = 24 hours in seconds
// Get value in a cookie,
$cookie_value = $_COOKIE[$cookie_name];
// Update a cookie,
setcookie($cookie_name, $cookie_new_value , time() + (86400 * 30), "/");
// Delete a cookie,
setcookie($cookie_name, '' , time() - 3600, "/"); // time() - 3600 means, set the cookie expiration date to the past hour.
আপনি যদি আপনার সমস্ত বর্তমান ডোমেন থেকে কুকি পুরোপুরি মুছতে চান তবে নীচের কোডটি অবশ্যই আপনাকে সহায়তা করবে।
unset($_COOKIE['hello']);
setcookie("hello", "", time() - 300,"/");
এই কোডটি আপনার সমস্ত ডোমেন থেকে পুরোপুরি কুকি ভেরিয়েবল মুছবে; "/" - এটি নির্দেশ করে যে কুকি ভেরিয়েবলের মান কেবলমাত্র বর্তমান ডোমেন বা পাথের জন্য নয় সমস্ত ডোমেনের জন্য সেট করে। সময় () - 300 বোঝায় যে এটি আগের সময়ের সাথে সেট করে তাই এটির মেয়াদ শেষ হবে।
কীভাবে এটি পুরোপুরি মুছে ফেলা হয়েছে ts
আপনি কুকি মানের উপর ভিত্তি করে একটি সেশন ভেরিয়েবল সেট করতে পারেন
session_start();
if(isset($_COOKIE['loggedin']) && ($_COOKIE['loggedin'] == "true") ){
$_SESSION['loggedin'] = "true";
}
echo ($_SESSION['loggedin'] == "true" ? "You are logged in" : "Please Login to continue");
আপনি কেবল এই কাস্টমাইজ ফাংশনটি ব্যবহার করতে পারেন:
function unset_cookie($cookie_name) {
if (isset($_COOKIE[$cookie_name])) {
unset($_COOKIE[$cookie_name]);
setcookie($cookie_name, null, -1);
} else { return false; }
}
আপনি যদি $ _COOKIE ['user_account'] সরাতে চান।
শুধু ব্যবহার করুন:
unset_cookie('user_account');
আপনি যখন 0
সময়ের জন্য প্রবেশ করেন, আপনি ব্রাউজারের জন্য "এখন" ( এখন থেকে +0s আসলে এখনই) অর্থ এবং এটি কুকি মুছে দেয়।
setcookie("key", NULL, 0, "/");
আমি এটি ক্রোম ব্রাউজারে যাচাই করেছিলাম যা আমাকে দেয়:
Name: key
Content: Deleted
Created: Sunday, November 18, 2018 at 2:33:14 PM
Expires: Sunday, November 18, 2018 at 2:33:14 PM
আপনাকে আপনার সার্ভারে পিএইচপি দিয়ে এবং আপনার ব্রাউজারের জন্য জেএস সহ কুকিজ মুছতে হবে .. (তারা পিএইচপি দিয়ে তৈরি করেছে, তবে কুকি ফাইলগুলি ব্রাউজার ক্লায়েন্টেও রয়েছে):
একটি উদাহরণ:
if ($_GET['action'] == 'exit'){
// delete cookies with js and then in server with php:
echo '
<script type="text/javascript">
var delete_cookie = function(name) {
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:01 GMT;";
};
delete_cookie("madw");
delete_cookie("usdw");
</script>
';
unset($_COOKIE['cookie_name']);
unset($_COOKIE['cookie_time']);
আপনি বেশিরভাগই ভুলে যাচ্ছেন যে এটি কেবল একটি স্থানীয় মেশিনে কাজ করবে। একটি ডোমেনে আপনার এই উদাহরণের মতো একটি প্যাটার্নের প্রয়োজন হবে।
setcookie("example_cookie", 'password', time()-3600, "/", $_SERVER['SERVER_NAME']);
setcookie
লোকালহোস্ট হোক বা না হোক যে কোনও ডোমেনের জন্য কাজ করে।
$cookie->delete()
থেকে সহায়ক পেতে পারেন । প্রশ্ন থেকে কোডটি কেবল সেই সম্পত্তি মুছে ফেলে যা সার্ভার-সাইডে পার্স করা হয়েছে। কুকি এখনও ক্লায়েন্টের পাশে থাকবে।