2010-05-19 11 views
6

मेरे पास एक लॉगिन फॉर्म है, जो login.php में है। प्रमाणीकरण के बाद मैं क्लाइंट को some.php फ़ाइल में moove! तो, दो तरीकों से, जो बेहतर है?प्राप्त या सत्र?

  1. मैं द्वारा GET
  2. जानकारी अबौद उपयोगकर्ता id e.t.c भेज मैं उपयोग कर सकते हैं SESSION कर सकते हैं - क्या अधिक पसंद किया जाता है इस

के लिए रों?

और दो प्रश्न मैं इस प्रश्न से क्यों पूछता हूं। मैं कहीं सुना है कि SESSION रों अच्छा कार्यक्रमों की विधि नहीं हैं, और यह उन्हें ऐसी स्थितियों में उपयोग करने के लिए सुझाव दिया नहीं कर रहा है ...

धन्यवाद

+0

** ** के लिए कौन सा बेहतर है? –

+0

@ कोल।उपयोगकर्ता डेटा को संग्रहीत करने के लिए केवल श्रापनेल – Simon

+0

आप सभी को धन्यवाद, मैं – Simon

उत्तर

7

सत्र वास्तव में पसंदीदा समाधान हैं। आप querystring ($ _GET, $ _POST, $ _COOKIE इत्यादि) में भेजे गए डेटा पर भरोसा नहीं कर सकते हैं क्योंकि उन सभी को उपयोगकर्ता द्वारा बदला जा सकता है, लेकिन आप इस बात पर भरोसा कर सकते हैं कि $ _SESSION से $ _SESSION डेटा के साथ कोई भी छेड़छाड़ नहीं कर रहा है सर्वर पर संग्रहीत।

+1

हां - सबसे अच्छा तरीका है कि आप अपने सत्र में उपयोगकर्ता आईडी को सहेज लें, और यदि संभव हो, तो आईडी हैश (एईएस) सहेजें - लेकिन वास्तव में महत्वपूर्ण नहीं है। क्योंकि अगर आप इसे अपने सत्र में सहेजते हैं, तो उपयोगकर्ता इसे बदल नहीं सकता है। और अगर वह लॉग आउट करता है। यदि आप $ _GET का उपयोग करते हैं, तो वह "? Id = 1232" (उदा।) "? Id = 1" के साथ बदल सकता है, और यह शायद एक प्रशासक है। कुकी और पोस्ट में वही ... – ahmet2106

+0

@ अहमम 2106: एईएस एक एन्क्रिप्शन योजना है, हैश फ़ंक्शन नहीं। हैशिंग के लिए, SHA-512 या इसी तरह का उपयोग करें। –

+0

@ फ़ेलिक्स किंग, मेरी गलती थी, मेरा मतलब एन्क्रिप्प था :) नहीं हैश ^^ हां के लिए हां वह शा या अन्य का उपयोग कर सकता है ... – ahmet2106

1

स्वाभाविक सत्र के बारे में बुरा कुछ भी नहीं है। असल में, इस स्थिति में मैं यूआरएल में यूजर में इसे पास करने के बजाए सत्र में उपयोगकर्ता आईडी स्टोर करूंगा। यह बहुत साफ, और अधिक पेशेवर, IMHO होगा। सत्र में छोटी जानकारी संग्रहीत करना ठीक है।

1

$_SESSION में इसकी त्रुटियां हो सकती हैं, लेकिन इस तरह की चीज़ के लिए $_GET का उपयोग करना भी बदतर है।

1

यदि मैं सही प्रश्न को समझता हूं, तो कोई नहीं। इसके बजाय POST का उपयोग करें और फिर लॉग इन करने पर SESSION बनाएं।

मान लें कि उपयोगकर्ता index.php पर लॉगिन फ़ॉर्म कहां है। वह जानकारी में भरता है और "लॉगिन" धक्का देता है। आप POST का उपयोग कर login.php पर डेटा भेजते हैं। यदि उपयोगकर्ता का नाम, पासवर्ड और जो भी अन्य जानकारी सही है, तो आप SESSION बनाते हैं और कहीं और उपयोगकर्ता को रीडायरेक्ट करते हैं।

0

यदि आप कुछ जानकारी स्टोर करना चाहते हैं, तो मैं प्रमाणीकरण सफलता पर आधारित हूं, तो मैं सत्र का उपयोग करूंगा। जीईटी में डेटा, POST चर का उपयोग करने में बहुत आसान है।

0

यदि आपको $ _SESSION और $ _GET के बीच निर्णय लेना है, तो सुरक्षित सामग्री के लिए, $ _SESSION का उपयोग करें। सत्र के साथ सभी उपयोगकर्ता उन्हें नष्ट कर सकते हैं (PHPSESSID कुकी को हटाकर), लेकिन उपयोगकर्ता उन्हें कुशल नहीं बना सकता है।

यदि आपको एक बार जानकारी पास करनी है, तो $ _SESSION बहुत अच्छा है। आप कुछ डेटा $ _SESSION वैरिएबल में स्टोर कर सकते हैं, PHP के माध्यम से स्थान बदल सकते हैं (इसलिए उपयोगकर्ता जावास्क्रिप्ट को अक्षम करने के माध्यम से स्क्रिप्ट को ब्लॉक नहीं कर सकता है। बस header('Location: '.$path); का उपयोग करें), दूसरे पेज पर $ _SESSION सामग्री का उपयोग करें और उपयोगकर्ता के पास कोई नहीं है समय अंतराल जब वह सत्र को नष्ट कर सकता था। यह सुरक्षित है।

+1

नहीं, यह हमेशा सुरक्षित नहीं होता है। उपयोगकर्ता स्थान शीर्षलेख का पालन करने से इनकार कर सकता है और दूसरा अनुरोध नहीं कर सकता है, इसलिए आप हमेशा इस बात पर भरोसा नहीं कर सकते कि उपयोगकर्ता किसी स्थान शीर्षलेख के बाद दूसरा अनुरोध करेगा (यदि आप वैध उपयोगकर्ता हैं तो आप भरोसा कर सकते हैं, लेकिन यह है गैरकानूनी उपयोगकर्ता हम पहले स्थान से हमें बचाने की कोशिश कर रहे हैं)। –

0

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

0

SESSION सबसे अच्छा समाधान है। जो अधिक सुरक्षित बनाता है। उपयोगकर्ता अपने किसी भी डेटा को बदल नहीं सकता

संबंधित मुद्दे