PHP में सत्रों का उपयोग करने का सबसे आसान, अच्छा अभ्यास और सबसे आसान तरीका क्या है? - PHP, सत्र

ऐसा लगता है कि PHP में सत्र बदल गए हैंपिछली बार मैंने उनका इस्तेमाल किया था, इसलिए मैं सत्रों का उपयोग करने का एक आसान तरीका ढूंढ रहा हूं लेकिन साथ ही इसके लिए अपेक्षाकृत सुरक्षित और एक अच्छा आम अभ्यास होना चाहिए।

उत्तर:

जवाब के लिए 3 № 1

सत्र प्रबंधन कुछ समय पहले बदल गया (मैंलगता है कि यह लगभग 4.4 था)। पुरानी तंत्र अभी भी काम करती है, लेकिन इसे हटा दिया जाता है। यह बल्कि भ्रमित है, इसलिए मैं इसे स्पष्ट रहने की अनुशंसा करता हूं। आज, आप ग्लोबल वैरिएबल $ _SESSION (यह एक सरणी है) तक पहुंच कर सत्र का उपयोग करते हैं। आप कर सकते हैं ऑब्जेक्ट इंस्टेंस को वहां रखें, लेकिन अगले पृष्ठ पर सत्र शुरू करने से पहले आपको उन ऑब्जेक्ट्स के लिए क्लास परिभाषाएं लोड करने की आवश्यकता है। का उपयोग करते हुए autoload यहां आपकी मदद कर सकते हैं।

तुम्हे अवश्य करना चाहिए एक सत्र शुरू करें इससे पहले कि आप $ _SESSION का उपयोग कर सकें।सत्र शुरू करने के बाद से हेडर भेजता है, आपके पास पहले कोई आउटपुट नहीं हो सकता है। इसे दो तरीकों से हल किया जा सकता है: या तो आप हमेशा अपनी स्क्रिप्ट की शुरुआत में सत्र शुरू करते हैं। या आप सभी आउटपुट बफर करें, और इसे स्क्रिप्ट के अंत में भेज दें।

एक अच्छा विचार प्रत्येक अनुरोध पर सत्र को पुन: उत्पन्न करना है। इससे हाइजैक बहुत कम हो जाता है।

वह (थोड़ी) बुरी सलाह है, क्योंकि यह साइट को पहुंच से बाहर कर सकती है। आपको चाहिए सत्र-आईडी पुन: उत्पन्न करें जब भी कोई उपयोगकर्ता विशेषाधिकार बदलता है। आम तौर पर इसका मतलब है, जब भी वे लॉग इन करते हैं। यह सत्र-निर्धारण (सत्र-अपहरण का एक रूप) को रोकने के लिए है। देख यह हालिया धागा @ साइटपॉइंट विषय पर अधिक के लिए।

कुकीबेड सत्र का उपयोग करना केवल ठीक है, लेकिन अगर आप लॉगिन आईडी को लॉगिन पर पुन: उत्पन्न करते हैं, तो यह कोई अतिरिक्त सुरक्षा नहीं जोड़ता है, और यह पहुंच को थोड़ा कम करता है।


जवाब के लिए 2 № 2

जहां तक ​​सादगी है, यह इससे बेहतर नहीं है:

# Start the session manager
session_start();

# Set a var
$_SESSION["foo"] = "whatever";

# Access the var
print $_SESSION["foo"];

उत्तर № 3 के लिए 1

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

मैं बस डिफ़ॉल्ट, कुकीज़ का उपयोग करने का सुझाव दूंगा।डेटाबेस सत्र प्रत्येक पृष्ठ पर एक अतिरिक्त हिट देते हैं, और भले ही हर साइट स्लैशडॉट न हो, फिर भी इस तरह के कुछ को अनुकूलित करने में कोई हानि नहीं है।

उपयोग के लिए, मैं मानक वैश्विक चर की सिफारिश करेंगे:

$_SESSION["yourvar"] = "somevalue";

यदि आप अपने सभी कोड में उस विधि का उपयोग करते हैं, तो आप बाद में बैक-एंड को आसानी से बदल सकते हैं session_set_save_handler, जो कार्यान्वित करने का एक एकीकृत तरीका देता हैसत्र बैकएंड्स। ध्यान दें कि आप सभी सत्र हैंडलिंग को रखने के लिए किसी ऑब्जेक्ट का उपयोग कर सकते हैं, बस प्रत्येक प्रविष्टि - सरणी ("स्टेटिकक्लास", "staticmethod") को सरणी दें।

अधिक गहन उपयोग के लिए, मैं आपको सलाह दूंगा कि सत्रों को कैसे प्रबंधित किया जाए KohanaPHP


जवाब के लिए 0 № 4

जैसा कि वर्णन किया गया है, आप डेटाबेस में PHP सत्रों को स्टोर कर सकते हैं इस किताब। मैंने इस विधि का उपयोग किया है और मुझे इसे सुरक्षित और कार्यान्वित करने में आसान लगता है, इसलिए मैं इसे पुनः प्राप्त करूंगा।


जवाब के लिए 0 № 5

एक सत्र में $ SESSION सरणी को समाहित करें ()ऑब्जेक्ट जो आपको स्वचालित सुरक्षा फ़िल्टर, फ्लैश वेरिएबल्स (var जो तब एक बार उपयोग किए जाने पर उपयोग किया जाता है), और डिफ़ॉल्ट मान सेटर्स समेत एक समान (फिर भी विचलित) तरीके से सत्र, प्राप्त, और पोस्ट से चर प्राप्त करने की अनुमति देता है।

उस बिंदु पर सिम्फनी के व्यवहार की नज़र डालें, यह बहुत उपयोगी है।


जवाब के लिए 0 № 6

सत्र मेरे PHP ज्ञान का एक महत्वपूर्ण हिस्सा थे क्योंकि इससे मुझे अपना पहला वेब एप्लिकेशन विकसित करने पर प्रमाणीकरण समस्या में अपना लॉग हल करने में मदद मिली।

session_start();
if( isset($_POST["username"]) && isset($_POST["password"]) )
{
if( auth($_POST["username"], $_POST["password"]) )
{
//Authentication passed
$_SESSION["user"] = $_POST["username"];
// redirect to required page
header( "Location: index.php" );
}
else
{
//Authentication failed redirect to login
header( "Location: loginform.html" );
}
}
else
{
//Username and Password are required
header( "Location: loginform.html" );
}

उत्तर के लिए -1 № 7

सबसे पहले, केवल कुकी के आधार पर उपयोग करें जब तक आपके पास न होएक बहुत ही विशिष्ट अच्छा व्यापार कारण नहीं है। मेरे पास एक ग्राहक था जिसने केवल एक परियोजना के लिए यूआरएल आधारित सत्रों पर जोर दिया। बहुत असुरक्षित और साथ काम करने के लिए दर्द।

एक अच्छा विचार प्रत्येक अनुरोध पर सत्र को पुन: उत्पन्न करना है। इससे हाइजैक बहुत कम हो जाता है। उदाहरण के लिए।

session_start();
$old_sessionid = session_id();
session_regenerate_id();
$new_sessionid = session_id();

एक और चीज जो अच्छी प्रथा है वह है यदि आप हैंसिस्टम के हिस्से के रूप में किसी प्रकार का उपयोगकर्ता लॉगिन कर रहा है, लॉग आउट पर सत्र डेटा को पूरी तरह से अमान्य और खाली कर दें ताकि यह सुनिश्चित किया जा सके कि उपयोगकर्ता वास्तव में सिस्टम से लॉग आउट हो गया है। मैंने सिस्टम देखा है जहां सत्र कुकी को हटाकर लॉगआउट अभी पूरा हो गया है।


संबंधित सवाल
सबसे लोकप्रिय