পুনর্নির্দেশের পরে পিএইচপি সেশন হারিয়েছে


132

পিএইচপি-তে পুনর্নির্দেশের পরে সেশন হারাতে সমস্যাটি কীভাবে সমাধান করব?

পুনঃনির্দেশের পরে সেশন হারানোর খুব সাধারণ সমস্যার মুখোমুখি হয়েছি। এবং এই ওয়েবসাইট মাধ্যমে অনুসন্ধান আমি এখনও কোন সমাধান খুঁজে পেতে পারেন (যদিও পরে এই নিকটতম এসে)।

হালনাগাদ

আমি উত্তরটি পেয়েছি এবং আমি ভেবেছিলাম যে কেউ একই সমস্যা ভোগ করতে সহায়তা করার জন্য এটি এখানে পোস্ট করব।


1
প্রশ্নটি কীভাবে পিএইচপি-তে পুনর্নির্দেশের পরে একটি অধিবেশন হারাতে সমস্যা সমাধান করবেন। আমি উত্তরটি ইতিমধ্যে খুঁজে পেয়েছি, কেবল অন্য লোকদের জানাতে এখানে এটি পোস্ট করে। কারণ আমার সমাধান স্ট্যাকওভারফ্লোতে নেই।
দিনুলি

2
এটি ঠিক আছে, তবে এটি একটি QA সাইট। আপনার প্রশ্ন একটি প্রশ্ন করুন।
জেরেমি

এটা আপনার কাছ থেকে এসেছে তা আমি খেয়াল করিনি। তবুও, এই সাইটটি প্রশ্নগুলির জন্য, আপনি ইতিমধ্যে জানেন এমন প্রশ্নের উত্তরগুলির জন্য নয়।
এরিস


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

উত্তর:


208

প্রথমে এই সাধারণ চেকগুলি পরিচালনা করুন:

  1. নিশ্চিত হয়ে নিন যে session_start();কোনও অধিবেশন আহ্বানের আগে ডেকে আনা হয়েছে। সুতরাং কোনও নিরাপদ বাজি হ'ল এটি আপনার পৃষ্ঠার শুরুতে, <?phpঅন্য যে কোনও কিছুর আগে খোলার ঘোষণার অবিলম্বে । খোলার আগে কোনও সাদা জায়গা / ট্যাব নেই তা নিশ্চিত করুন<?php ঘোষণার ।
  2. headerপুনঃনির্দেশের পরে , বর্তমান স্ক্রিপ্টটি ব্যবহার করে শেষ করুন exit();(অন্যরাও পরামর্শ দিয়েছে session_write_close();এবং session_regenerate_id(true)আপনি সেগুলিও দেখতে পারেন, তবে আমি ব্যবহার করব exit();)
  3. এটি পরীক্ষা করার জন্য আপনি যে ব্রাউজারটি ব্যবহার করছেন তাতে কুকিজ সক্ষম হয়েছে কিনা তা নিশ্চিত করুন।
  4. নিশ্চিত করুন register_globalsবন্ধ, আপনি php.iniফাইল এবং এটি ব্যবহার করে এটি পরীক্ষা করতে পারেন phpinfo()। পড়ুন এই কিভাবে এটি বন্ধ করতে হিসাবে।
  5. আপনি সেশনটি মোছা বা খালি করেননি তা নিশ্চিত করুন
  6. আপনার $_SESSIONসুপারগ্লোবাল অ্যারেতে কীটি কোথাও ওভাররাইট করা হয়নি তা নিশ্চিত করুন
  7. নিশ্চিত হয়ে নিন যে আপনি একই ডোমেনে পুনঃনির্দেশ করেছেন। সুতরাং একটি থেকে পুনঃনির্দেশিত www.yourdomain.comকরা yourdomain.comঅধিবেশন এগিয়ে বহন করে না।
  8. আপনার ফাইলের এক্সটেনশানটি নিশ্চিত হয়ে নিন .php(এটি ঘটে!)

এখন, এগুলি সর্বাধিক সাধারণ ভুল, তবে যদি তারা কৌশলটি না করে তবে সমস্যাটি সম্ভবত আপনার হোস্টিং সংস্থার সাথে করা। যদি সমস্ত কিছু localhostআপনার রিমোট / টেস্টিং সার্ভারে কাজ করে না, তবে তবে সম্ভবত এটিই অপরাধী। সুতরাং আপনার হোস্টিং সরবরাহকারীর জ্ঞান বেসটি পরীক্ষা করুন (তাদের ফোরামগুলিও চেষ্টা করে দেখুন)। ফ্যাটকো এবং আইপেজের মতো সংস্থাগুলির জন্য তাদের আপনাকে নির্দিষ্ট করা দরকার session_save_path। সুতরাং এটি পছন্দ:

session_save_path('"your home directory path"/cgi-bin/tmp');
session_start();

("আপনার হোম ডিরেক্টরি ডিরেক্টরি" আপনার প্রকৃত হোম ডিরেক্টরি পাথের সাথে প্রতিস্থাপন করুন usually এটি সাধারণত আপনার কন্ট্রোল প্যানেলে থাকে (বা সমমানের) তবে আপনি test.phpআপনার মূল ডিরেক্টরিতে একটি ফাইল তৈরি করতে পারেন এবং টাইপ করতে পারেন:

<?php echo $_SERVER['SCRIPT_FILENAME']; ?>

'Test.php' এর সামান্য কিছুটা আপনার হোম ডিরেক্টরি পথ। এবং অবশ্যই, ফোল্ডারটি অবশ্যই আপনার মূল ডিরেক্টরিতে উপস্থিত রয়েছে তা নিশ্চিত করুন। (কিছু প্রোগ্রাম সিঙ্ক্রোনাইজ করার সময় খালি ফোল্ডারগুলি আপলোড করে না)


8
খুব ভাল লেখা +1, যদি সমস্ত ব্যর্থ হয় তবে কেবল কুকি ব্যবহার করুন (এলোমেলোভাবে একটি স্ট্রিং উত্পন্ন করুন এবং এটি ডিবিতে সংরক্ষণ করুন এবং এটি আপনার কুকির মান হিসাবে ব্যবহার করুন)।
ডেভ চেন

2
HTTP andn HTTPS মধ্যে স্যুইচ হতে একটি সমস্যা হতে পারে stackoverflow.com/questions/441496/...
dev.e.loper

4
নোট করুন যে পিএইচপি 5.4.0 হিসাবে রেজিস্টার_গ্লোবালগুলি সরানো হয়েছে, সুতরাং এটি আর কোনও সমস্যার কারণ হবে না
অ্যান্টনিগোরে

2
ওয়েব সার্ভার ত্রুটি লগ চেক করুন; আমার ক্ষেত্রে, একটি ত্রুটি ছিল "সেশন ডেটা (ফাইল) লিখতে ব্যর্থ হয়েছে Please অনুগ্রহ করে যাচাই করুন যে সেশনটির বর্তমান সেটিংস.সভে_পাথটি সঠিক"। সেভ_পথ ডিরেক্টরিতে অনুমতিগুলি ভুল ছিল।
timbonicus

আমার সেশনগুলি সেশন.সেভ_পাথ ছাড়া অন্য কোথাও কেন সংরক্ষণ করা হবে?
জাস্টিন

26

হেডার-কল করার পরে আপনার "প্রস্থান" ব্যবহার করা উচিত

header('Location: http://www.example.com/?blabla=blubb');
exit;

গেকোর জন্য একটি বাগ রয়েছে (যেমন ওয়াটারফক্স, ফায়ারফক্স, সিমনকি) যেখানে কোনও ডাটা আউটপুট (যেমন echo ' ';) বা কোনও প্রকারের হোয়াইটস্পেস থাকলে তা লোকেশন শিরোনামকে সম্পূর্ণ উপেক্ষা করবে।
জন

18

আমি সমস্ত সম্ভাব্য সমাধান চেষ্টা করেছিলাম, কিন্তু কেউই আমার পক্ষে কাজ করেনি! অবশ্যই, আমি একটি শেয়ার্ড হোস্টিং পরিষেবা ব্যবহার করছি।

শেষ পর্যন্ত, পুনর্নির্দেশের শিরোলেখের ভিতরে 'আপেক্ষিক ইউআরএল' ব্যবহার করে সমস্যাটি ঘটিয়েছিলাম!

header("location: http://example.com/index.php")

সেশন কুকিজ বাতিল

header("location: index.php")

মোহন মত কাজ!


7

আমারও একই সমস্যা ছিল। আমি এটিতে কয়েক ঘন্টা কাজ করেছি এবং এটি আমাকে পাগল করে তুলেছে।

আমার ক্ষেত্রে সমস্যাটি একটি ক্রোম এবং ফায়ারফক্সে ফেভিকন.ইকো অনুপস্থিত থাকার কারণে 404 ডেকে আনা হয়েছিল । অন্য নেভিগেটর ভাল কাজ করে।


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

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

4

আমি যখন হেডার () ফাংশন সহ আমার জন্য কাজ "dir / file.php" ব্যবহার করি। আমি মনে করি আপনি সম্পূর্ণ url ব্যবহার করে পুনর্নির্দেশের সময় কোনও কারণে সেশনটি সংরক্ষণ করা হয়নি ...

//Does retain the session info for some reason
header("Location: dir");

//Does not retain the session for some reason
header("Location: https://mywebz.com/dir")

3

এটি আমাকে দীর্ঘদিন ধরে স্ট্যাম্পড করেছিল (এবং এই পোস্টটি সন্ধান করতে দুর্দান্ত ছিল!) তবে অন্য যে কেউ এখনও পৃষ্ঠাটির পুনঃনির্দেশের মধ্যে সেশন পেতে পারে না তাদের জন্য ... আমাকে php.ini ফাইলে গিয়ে কুকিজ চালু করতে হয়েছিল :

session.use_cookies = 1 

আমি ভেবেছিলাম সেশনগুলি কুকিজ ছাড়াই কাজ করেছে ... আসলে আমি জানি তারা এগুলি করা উচিত ... তবে কমপক্ষে বড় চিত্রটিতে কী চলছে তা বুঝতে না পারলে এটি আমার সমস্যাটি স্থির করেছে।


আমি জানতাম না সেশনগুলি কুকিজ ছাড়া কাজ করতে পারে! প্রতিদিন নতুন কিছু শিখুন! প্রোগ্রামারিনটারভিউ
ইন্ডেক্স.এফপি

অবশ্যই তারা কুকিজ ছাড়াই কাজ করতে পারে আপনার কনফিগারেশনের উপর নির্ভর করে। তবে আপনি কী করবেন তা আপনার জানা উচিত। এবং এটি করার জন্য একটি ভাল কারণ আছে। কারণ এটি কম সুরক্ষিত। এবং যদি আপনাকে কুকিজ ছাড়াই যে কারনে যুক্ত হয় তার জন্য কাজ করতে হয়। আপনার কমপক্ষে ini_set কনফিগার করা উচিত ('সেশন.উস_স্ট্রিক্ট_মোড', '1'); এবং সাধারণত একটি সংক্ষিপ্ত অধিবেশন সময় থাকে এবং ব্যবহারকারীর লগইনের পরে সেশন_জেনেরেট_আইডি () ব্যবহার করে। তবে যদি কোনও ব্যবহারকারী কোনও ফোরামে আপনার সার্ভারের কোনও সাইটের একটি লিঙ্ক পোস্ট করে থাকেন তবে সতর্কতা অবলম্বন করা উচিত যারা এই লিঙ্কটিতে প্রকৃতপক্ষে ক্লিক করেন লোকেরা অধিবেশনটি গ্রহণ করবে। আইপি চেক করাও ভাল ধারণা।
মাইকেল

3

আমার প্রসঙ্গটি কিছুটা আলাদা হলেও আমার একই সমস্যা ছিল। আমার একটি মেশিনে স্থানীয় বিকাশ সেটআপ ছিল যার হোস্টনাম ছিল windowsএবং আইপি ঠিকানা ছিল 192.168.56.2

আমি যে কোনও একটি ব্যবহার করে সিস্টেমে অ্যাক্সেস করতে পারি:

লগ ইন করার পরে, আমার পিএইচপি কোডটি ব্যবহার করে পুনঃনির্দেশ করবে:

header('http://windows/');

সিস্টেমে অ্যাক্সেস করতে ব্যবহৃত পূর্ববর্তী ডোমেন নামটি না থাকলে windowsসেশন ডেটা নষ্ট হয়ে যায়। আমি কোডটি এতে পরিবর্তন করে সমাধান করেছি:

header('http://'.$_SERVER['HTTP_HOST'].'/');

ব্যবহারকারী এখন স্থানীয় ডোমেন নাম বা আইপি ঠিকানা যা রেখেছেন তা নির্বিশেষে এটি কাজ করে।

আমি আশা করি এটি কারও কাজে লাগতে পারে।


3

আমি একটি নির্দিষ্ট পৃষ্ঠায় এই সমস্যাটি ছড়িয়েছি। আমি পুনর্নির্দেশের ঠিক আগে অন্য পৃষ্ঠাগুলিতে $ _SESSION মান নির্ধারণ করছিলাম এবং সবকিছু ঠিকঠাক কাজ করছিল। তবে এই নির্দিষ্ট পৃষ্ঠাটি কাজ করছে না।

অবশেষে আমি বুঝতে পারি যে এই নির্দিষ্ট পৃষ্ঠায়, আমি পৃষ্ঠার শুরুতে সেশনটি ধ্বংস করে দিছিলাম তবে এটি আর কখনও শুরু করি না। সুতরাং আমার ধ্বংস বিন্যাসটি এর থেকে পরিবর্তিত হয়েছে:

function sessionKill(){

    session_destroy();

}

প্রতি:

function sessionKill(){

    session_destroy();
    session_start();

}

এবং সবকিছু কাজ!


3

আমি একই সমস্যা ছিল। আমার সেশন ভেরিয়েবলগুলির হঠাৎ করেই কয়েকটি পরবর্তী পৃষ্ঠায় স্থির থাকবে না। সমস্যাটি প্রমাণিত হয়েছে (php7.1 এ) আপনার শিরোনামের অবস্থানটিতে অবশ্যই WWW থাকতে হবে না, প্রাক্তন https: // mysite । ঠিক আছে, https: //www.mysite । পৃষ্ঠাগুলির সেশন ভেরিয়েবলগুলি হারাবে। সব না, কেবল সেই পৃষ্ঠা।


এর কারণ www.mysite.comহিসাবে blog.mysite.comবা সাধারণভাবে সম্পূর্ণ আলাদা ডোমেন হিসাবে দেখা হয়mysite.com
দিনুলি

2

আমি কয়েক দিন ধরে এটির সাথে লড়াই করে যাচ্ছি, সমস্ত সমাধান চেকিং / চেষ্টা করে দেখছি, তবে আমার সমস্যাটি আমি কল করি নি session_start(); পুনঃনির্দেশের পরে । আমি সবেমাত্র 'এখনও জীবিত' ধরে নিয়েছি।

সুতরাং যে ভুলবেন না!


হ্যাঁ! এটি আমার সমস্যাও ছিল। আমি ভেবেছিলাম পিএইচপি অধিবেশন শুরু করা পুরো বাড়ির জন্য একটি আলো চালু করার মতো was আমি বুঝতে পারিনি যে আপনি প্রবেশ করেন এমন প্রতিটি কক্ষের জন্য আপনাকে স্যুইচটি চালু করতে হবে।
ডেল থম্পসন

1

আমার একই সমস্যা ছিল এবং সবচেয়ে সহজ উপায় খুঁজে পেয়েছি। আমি কেবল জেএসের 1 লাইন দিয়ে একটি পুনর্নির্দেশ। Html এ পুনঃনির্দেশ করেছি

<!DOCTYPE html>
<html>
<script type="text/javascript">
<!--
window.location = "admin_index.php";
//–>
</script>
</html>

পরিবর্তে পিএইচপি

header_remove();
header('Location: admin_login.php');
die;

আশা করি এটা কাজে লাগবে.

গ্রাম লাভ


1

আপনি যদি ব্যবহার করছেন session_set_cookie_params()তবে আপনি চতুর্থ পরম $secureহিসাবে পাস করছেন কিনা তা পরীক্ষা করতে পারেন true। আপনি যদি হন তবে আপনাকে https ব্যবহার করে url অ্যাক্সেস করতে হবে।

পরম $secureসত্য হওয়া মানে সেশনটি কেবলমাত্র একটি নিরাপদ অনুরোধের মধ্যেই উপলব্ধ। এটি আপনাকে পর্যায় বা উত্পাদন পরিবেশের চেয়ে স্থানীয়ভাবে বেশি প্রভাবিত করতে পারে।

এটি উল্লেখ করে কারণ আমি আজকের বেশিরভাগ সময় এই সমস্যাটি অনুসন্ধান করার জন্য ব্যয় করেছি এবং এটিই আমার জন্য সমাধান করেছে। আমি এই প্রকল্পে স্রেফ যুক্ত হয়েছি এবং কেউই উল্লেখ করেনি যে এর জন্য https দরকার।

সুতরাং আপনি হয় স্থানীয়ভাবে HTTPS ব্যবহার করতে পারেন, অথবা আপনি সেট করতে পারেন $secureকরতে PARAM FALSEএবং তারপর HTTP- র ব্যবহার স্থানীয়ভাবে। আপনি যখন নিজের পরিবর্তনগুলি ধাক্কা দেন তখন ঠিক এটিকে পুনরায় সেট করতে ভুলবেন না।

আপনার স্থানীয় সার্ভারের উপর নির্ভর করে আপনাকে সার্ভারের DocumentRootমধ্যে এডিট করতে হতে পারে httpd-ssl.confযাতে আপনার স্থানীয় ইউআরএলটি https পরিবেশন করা হয়।


1

আর একটি সম্ভাব্য কারণ:

এটি আমার সার্ভার স্টোরেজ স্পেস। আমার সার্ভার ডিস্কের স্থান পূর্ণ হয়ে গেছে। সুতরাং, আমি আমার সার্ভারে কয়েকটি ফাইল এবং ফোল্ডার সরিয়েছি এবং চেষ্টা করেছি।

এটা কাজ !!!

আমি আমার ডাব্লুএস ডায়নামো ডিবিতে আমার সেশনটি সংরক্ষণ করছি, তবে এটি এখনও সেশনটি প্রক্রিয়া করার জন্য আমার সার্ভারে কিছু জায়গা আশা করে। নিশ্চিত না কেন !!!


1

আপনি যদি লারাভেল ব্যবহার করছেন এবং আপনি যদি এই সমস্যাটি অনুভব করেন তবে আপনাকে যা প্রয়োজন তা হ'ল পুনঃনির্দেশের আগে আপনার সেশন ডেটা সংরক্ষণ করা।

session()->save();
// Redirect the user to the authorization URL.
header('Location: ' . $authorizationUrl);
exit;

0

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

আমি আলাদাভাবে পিএইচপি পৃষ্ঠা 'সাইন ইন_অ্যাকশন.পিএফপি' এ হেডারটিকে পুনঃনির্দেশিত করে এবং ইউআরএল প্যারামিটারগুলিতে চেয়েছিলাম ভেরিয়েবলগুলির পরামিতিগুলি পেরিয়ে 'সাইন ইন_অ্যাকশন.এফপি' আকারে পুনরায় সাইন ইন করে সমাধান করেছি।

signin.php

if($stmt->num_rows>0) {
$_SESSION['username'] = $_POST['username'];
echo '<script>window.location.href = "http://'.$root.'/includes/functions/signin_action.php?username='.$_SESSION['username'].'";</script>';
error_reporting(E_ALL);

signin_action.php

<?php
require('../../config/init.php');
$_SESSION['username'] = $_GET['username'];
if ($_SESSION['username']) {

echo '<script>window.location.href = "http://'.$root.'/user/index.php";</script>';
exit();
} else {
echo 'Session not set';
}

?>

এটি চারপাশের সুন্দর কাজ নয় তবে এটি কাজ করেছে worked


0

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

যদিও আমি এটি অ্যাপাচি ত্রুটির লগগুলিতে খুঁজে পেতে পারি।


0

কেবল রেকর্ডের জন্য ... আমার এই সমস্যাটি ছিল এবং কয়েক ঘন্টা চেষ্টা করার পরেও সমস্যাটি হ'ল ডিস্কটি পূর্ণ ছিল এবং পিএইচপি সেশনগুলি টিএমপি ডিরেক্টরিতে লেখা যায় না ... সুতরাং আপনার যদি সমস্যা হয় তবে এটি পরীক্ষা করে দেখুন খুব ...


এই উত্তরটি আমার পক্ষে কাজ করেছিল। আমরা এনজিএনএক্স সহ একটি অ্যামাজন মেশিন চিত্র পরিচালনা করি run এখানে একটি ত্রুটি বলে মনে হচ্ছে যে সেশন ফোল্ডারটি সঠিক ব্যবহারকারীর (আমাদের ক্ষেত্রে www) মালিকানাধীন নয় তাই chown -R www.wwwসেশন ফোল্ডারে কাজ করা সমস্যার সমাধান করে।
জোশুয়া

0

আমার জন্য, ফায়ারফক্স একটি কুকিতে সেশন আইডি (PHPSESSID) সংরক্ষণ করেছে, তবে গুগল ক্রোম জিইটি বা পোষ্ট প্যারামিটার ব্যবহার করেছে। সুতরাং আপনাকে কেবল নিশ্চিত করতে হবে যে রিটার্নিং স্ক্রিপ্টটি (আমার জন্য: পেপাল চেকআউট) url বা পোস্ট প্যারামিটারে পিএইচপিএসএসইএসডি কমিট করবে।


0

এসও এবং অন্যান্য ব্লগগুলিতে এখানে অনেকগুলি সমাধানের চেষ্টা করার পরে ... আমার জন্য যা কাজ করেছিল তা আমার ওয়েবসাইটের মূলটিতে অন্তর্ভুক্ত ছিল hhtaccess।

RewriteEngine on
RewriteCond %{HTTP_HOST} ^yoursitename.com$
RewriteRule ^.*$ "http\:\/\/www\.yoursitename\.com" [R=301,L]

0

আপনি যদি ওয়ার্ডপ্রেস ব্যবহার করেন তবে আমাকে এই হুকটি যুক্ত করতে হবে এবং আর ডি তে সেশন শুরু করতে হবে:

function register_my_session() {
    if (!session_id()) {
        session_start();
    }
}
add_action('init', 'register_my_session');

0

আমার পক্ষে কিছুই কাজ করে নি তবে সমস্যাটি কী ঘটেছে তা খুঁজে পেয়েছি (এবং এটি সমাধান করেছেন):

আপনার ব্রাউজার কুকিজ পরীক্ষা করুন এবং নিশ্চিত করুন যে বিভিন্ন সাবডোমেনগুলিতে পিএইচপি সেশন কুকিজ নেই (যেমন " www.website.com " এর জন্য একটি এবং " ওয়েবসাইট ডটকম " এর জন্য একটি )।

এটি কোনও জাভাস্ক্রিপ্টের কারণে ঘটেছিল যা কুকিজ সেট করতে এবং iframes পৃষ্ঠাগুলি খোলার জন্য সাবডোমেনটিকে ভুলভাবে ব্যবহার করেছিল।


0

প্রথমত, ভেরিয়েবল session_start()ব্যবহারের আগে আপনি কল করছেন কিনা তা নিশ্চিত করুন $_SESSION

যদি আপনার ত্রুটি প্রতিবেদন অক্ষম করা থাকে তবে চালু করার চেষ্টা করুন এবং ফলাফলটি দেখুন।

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

@ দিনুলোলির উত্তরে উল্লেখ না করা সবচেয়ে সাধারণ কারণ:

  1. ডিস্ক স্পেস সমস্যা। আপনার ডিস্কের স্থানটি পূর্ণ নয় তা নিশ্চিত করুন, সেশন ফাইলগুলি সংরক্ষণ করার জন্য আপনার কিছু স্থান প্রয়োজন।

  2. সেশন ডিরেক্টরি লিখনযোগ্য নাও হতে পারে। আপনি এটি দিয়ে পরীক্ষা করতে পারেনis_writable(session_save_path())


0

আমারও একই সমস্যা ছিল এবং আমি উত্তরের জন্য আমার কোড অনুসন্ধান করে বাদামে গিয়েছিলাম। অবশেষে আমার হোস্টিংটি সম্প্রতি আমার সার্ভারে পিএইচপি সংস্করণ আপডেট করেছে এবং সঠিকভাবে session_save_pathপ্যারামিটারটি সেট আপ করে নিphp.ini ফাইলটিতে ।

সুতরাং, যদি কেউ এটি পড়েন তবে দয়া করে php.iniঅন্য কোনও কিছুর আগে কনফিগারেশন পরীক্ষা করুন ।


0

আপনার সেশনটি সেট করার সময় এবং কখনই session_write_closeনা বলা হয়েছে তা নিশ্চিত করুন session_start()

session_start();

[...]

session_write_close();

[...]

$_SESSION['name']='Bob'; //<-- won't save

0

এখন যেহেতু জিডিপিআর একটি জিনিস, এই প্রশ্নটি দেখার লোকেরা সম্ভবত একটি কুকি স্ক্রিপ্ট ব্যবহার করেন। ঠিক আছে, সেই স্ক্রিপ্টটি আমার জন্য সমস্যা তৈরি করেছিল। স্পষ্টতই, পিএইচপি PHPSESSIDসেশনটি ট্র্যাক করার জন্য ডাকা একটি কুকি ব্যবহার করে। যদি সেই স্ক্রিপ্টটি এটি মুছে ফেলে তবে আপনি আপনার ডেটা হারাবেন।

আমি এই কুকি স্ক্রিপ্ট ব্যবহার করেছি । এটিতে "অপরিহার্য" কুকিজ সক্ষম করার একটি বিকল্প রয়েছে। আমি যোগ করলামPHPSESSID তালিকায় যুক্ত করেছি, স্ক্রিপ্টটি কুকি মোছা বন্ধ করে দিয়েছে এবং সবকিছু আবার কাজ শুরু করে।

আপনি সম্ভবত ব্যবহার এড়িয়ে কিছু পিএইচপি সেটিং সক্ষম পারে PHPSESSID, কিন্তু যদি আপনার কুকি স্ক্রিপ্ট সমস্যার কারণ, কেন ঠিক না যে


0

আমি বেশ কয়েকদিন ডিবাগিংয়ের পরে এই সমস্যাটি সমাধান করেছি এবং এটিই ছিল কারণ পেপাল এক্সপ্রেস চেকআউট থেকে আসা আমার রিটার্ন ইউআরএলটিতে 'www' নেই। ক্রোম সনাক্ত করেছে যে ডোমেনগুলির সাথে একই আচরণ করা উচিত তবে অন্যান্য ব্রাউজারগুলি কখনও কখনও তা করেনি। সেশন / কুকিজ এবং পরম পাথগুলি ব্যবহার করার সময়, 'www' ভুলে যাবেন না!


0

আমি যেখানে পিএইচপি স্টোর সেশন ফাইলগুলিতে গ্রুপ লিখনের অনুমতি দিয়ে স্থির করেছি। আপনি সেশন_সেভ_পাথ () ফাংশন সহ সেশন পাথটি সন্ধান করতে পারেন।


0

আজ আমার একটি প্রকল্পে এই সমস্যা ছিল এবং আমাকে এই পরামিতিটিকে মিথ্যাতে পরিবর্তন করতে হয়েছিল (বা লাইনগুলি সরিয়ে ফেলতে হবে, ডিফল্টরূপে অক্ষম করা হয়েছে):

ini_set( 'session.cookie_secure', 1 );

এটি ঘটেছে কারণ প্রকৃত প্রকল্পটি কেবলমাত্র https নয়, কেবলমাত্র http- এ কাজ করে। Http://php.net/manual/en/session.security.ini.php ডক্সে আরও তথ্য পাওয়া গেছে


0
ini_set('session.save_path',realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/../session'));
session_start();

উত্তর দিতে খুব দেরি হয়ে গেছে তবে এটি আমার পক্ষে কাজ করেছে


0

আমার কাছে এটি ছিল অনুমতি ত্রুটি এবং এটি এটি সমাধান করেছে:

ডাউন -আর এনগিনেক্স: এনগিনেক্স / ভার / অপ্ট / রিমি / পিএইচপি 73 / লিবিব / পিএইচপি / সেশন

আমি পিএইচপি উপর কয়েক ঘন্টা পরীক্ষা করেছি এবং আমার শেষ পরীক্ষাটি হয়েছিল যে আমি দুটি ফাইল সেশন 1.php এবং সেশন 2.php তৈরি করেছি।

session1.php:

session_start();

$_SESSION["user"] = 123;

header("Location: session2.php");

session2.php:

session_start();

print_r($_SESSION);

এবং এটি একটি খালি অ্যারে মুদ্রণ করছিল।

এই মুহুর্তে, আমি ভেবেছিলাম এটি একটি সার্ভার সমস্যা হতে পারে এবং আসলে এটি ছিল।

আশা করি এটি কাউকে সাহায্য করবে।


1
ক্লাউনটি একটি বিএডি সমাধান, কারণ এটি প্যাকেজ আপডেটে ডিফল্ট মানটিতে ফিরে আসবে। ডিফল্ট পুল কনফিগারেশন (www.conf) এ মন্তব্যগুলি দেখুন। যথাযথ উপায় যদি অ্যাপাচি একের চেয়ে অন্য ডিরেক্টরি ব্যবহার করে (উদা: / var / lib / php / nginx / সেশন)
রেমি কললেট

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