यह मूल PHP है और मैं नौसिखिया हूँ।

यहाँ पहली फ़ाइल पर मेरा कोड है:

session_start();
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;

header('Location: cms.php');

यहाँ एक और फ़ाइल पर दूसरा है:

if (session_id() == '') {
    header('Location: login.php');
}

मूल रूप से, मैंने पहले कोड पर एक सत्र बनाया। मैं आगे क्या करने की कोशिश कर रहा हूं यह निर्धारित करता है कि कोई सत्र बनाया गया था, यदि नहीं, तो इसे केवल लॉगिन पृष्ठ पर रीडायरेक्ट किया जाएगा। यहां मुद्दा यह है कि कोई सत्र बिल्कुल नहीं बनाया गया है, ठीक यही मैंने सोचा था क्योंकि मैंने session_id() प्रदर्शित करने का प्रयास किया था और यह कुछ भी नहीं दिखा रहा था।

तो अब मैं क्या खो रहा हूँ? मैं अनुमान लगा रहा हूं कि इसका header() फ़ंक्शन के साथ कुछ लेना-देना है। लेकिन फिर भी, मुझे मदद की ज़रूरत है और इसके लिए कुछ स्पष्टीकरण और बेहतर कोड की वास्तव में सराहना करेंगे।

बहुत - बहुत धन्यवाद!

php
0
Turtel 27 अक्टूबर 2011, 08:06
सत्र का उपयोग करने वाले प्रत्येक पृष्ठ पर आपको session_start(); की आवश्यकता होती है।
 – 
xdazz
27 अक्टूबर 2011, 08:10

1 उत्तर

सबसे बढ़िया उत्तर

एक बेहतर कोड:

session_start(); 
if (empty($_SESSION['username'])) {
    header('Location: login.php'); 
    exit;
}
2
Your Common Sense 27 अक्टूबर 2011, 08:09
इसे हासिल करने का यह सही तरीका है। बस एक स्पष्टीकरण जोड़ना चाहता था: जैसा कि PHP मैनुअल php.net में निर्दिष्ट है "session_start() एक सत्र बनाता है या जीईटी या पोस्ट अनुरोध के माध्यम से पारित सत्र पहचानकर्ता के आधार पर वर्तमान को फिर से शुरू करता है, या कुकी के माध्यम से पारित किया जाता है" आपको कॉल करना होगा session_start() $_SESSION या session_id() तक पहुंचने से पहले।
 – 
davur
27 अक्टूबर 2011, 08:12