Sessions and Cookies
इनकी ज़रूरत क्यों
HTTP pages के बीच सब भूल जाता है — हर request अलग होती है। तो website कैसे याद रखती है कि आप logged in हैं जब आप घूमते हैं? Sessions और cookies यह हल करते हैं, pages के बीच data याद रखकर। Cookie browser में रहती है; session server पर।
Sessions इस्तेमाल करना
बिल्कुल ऊपर session_start() call कीजिए, फिर $_SESSION array इस्तेमाल कीजिए।
<?php
session_start();
$_SESSION["user"] = "Aman"; // save
echo $_SESSION["user"]; // read -> Aman
?>
$_SESSION में जो डालें वो दूसरे pages पर उपलब्ध रहता है (जब तक वे भी session_start() call करें)। data खुद सुरक्षित रूप से server पर रहता है।
Cookies इस्तेमाल करना
setcookie() browser में expiry time के साथ data रखता है।
<?php
// 1 दिन में expire (60*60*24 seconds)
setcookie("theme", "dark", time() + 86400);
// अगले page load पर पढ़ें:
echo $_COOKIE["theme"] ?? "not set";
?>
Cookie अगले page load से उपलब्ध होती है, उसी script में तुरंत नहीं। theme जैसी non-sensitive preferences के लिए cookies इस्तेमाल कीजिए।
Login session कैसे इस्तेमाल करता है
<?php
session_start();
// username व password जाँचने के बाद:
$_SESSION["logged_in"] = true;
$_SESSION["user"] = "Aman";
// protected page पर:
if (empty($_SESSION["logged_in"])) {
echo "Please log in";
} else {
echo "Welcome " . $_SESSION["user"];
}
?>
Login status session में रखा जाता है क्योंकि असली value server पर रहती है, जहाँ user उसे बदल नहीं सकता। logout को session साफ़ कीजिए।
Session बनाम cookie
| बात | Session | Cookie |
|---|---|---|
| कहाँ store | Server | User का browser |
| Login के लिए सुरक्षित? | हाँ | नहीं |
| कितनी देर | बंद/timeout तक | आपके set expiry तक |
| किसके लिए बढ़िया | Login, cart | Theme, language pref |
आम गलतियाँ
session_start()से पहले output।<?phpसे पहले एक खाली line भी "headers already sent" error देती है।- Login को cookie में रखना। Users cookies edit कर सकते हैं — session इस्तेमाल कीजिए।
- उसी request में cookie की उम्मीद। यह अगले page load से दिखती है।
- हर page पर
session_start()न करना। जो page$_SESSIONपढ़े उसे यह चाहिए।
सारांश
- Sessions और cookies pages के बीच data याद रखते हैं।
- Session data server पर; cookie data browser में रहता है।
- ऊपर
session_start(), फिर$_SESSIONarray इस्तेमाल कीजिए। - Login status session में रखिए, कभी plain cookie में नहीं।
- Logout को
session_unset()+session_destroy()।
आगे, user input सुरक्षित कीजिए form validation से, या attacks रोकिए XSS prevention से।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
Session और cookie में क्या अंतर है?
session_start() पहले क्यों आना चाहिए?
session_start() किसी भी HTML या output से पहले चलना चाहिए, क्योंकि यह header भेजता है। अगर output पहले चला जाए तो PHP "headers already sent" error देती है। इसे page के बिल्कुल ऊपर रखिए।Session कितनी देर चलता है?
Login status कहाँ रखूँ — session या cookie?
User को logout कैसे करें?
session_unset() और session_destroy() से session साफ़ कीजिए। यह store login data हटा देता है ताकि user logged in के रूप में न पहचाना जाए।