2011-12-08 15 views
5

मैं एक मूल अनुप्रयोग बना रहा हूं और मैं यह पता लगाने की कोशिश कर रहा हूं कि मैं login.php से index.php तक उपयोगकर्ता जानकारी कैसे पास कर सकता हूं। यहां तक ​​कि मुझे अब तक क्या मिला है: मेरे पास एक लॉगिन पृष्ठ है जो उपयोगकर्ता वर्ग के माध्यम से डेटाबेस के माध्यम से उपयोगकर्ता को सबमिट और प्रमाणित करता है। उसके बाद, उपयोगकर्ता गुण डेटाबेस से लौटाए गए मानों पर सेट होते हैं। वहां से आईडी एक सत्र में संग्रहीत है। मैं पृष्ठ से पृष्ठ पर उपयोगकर्ता की जानकारी तक पहुंचने के बारे में कैसे जाउंगा। क्या मुझे बस सत्र आईडी के साथ डेटाबेस से पूछने के लिए एक निर्माण विधि बनाना चाहिए? क्या यह एक सुरक्षित या वैध दृष्टिकोण है? एक उदाहरण ढेर अतिप्रवाह होगा। जिस तरह से आप प्रत्येक पृष्ठ के शीर्ष पर अपना उपयोगकर्ता नाम देख सकते हैं।मैं उन्हें लॉग इन करने के बाद उपयोगकर्ता की जानकारी कैसे प्राप्त कर सकता हूं?

+0

क्यों उपयोगकर्ता जानकारी सत्र में संग्रहीत नहीं करते? –

उत्तर

6

ध्वनि आप की तरह नीचे से निपटने के सत्र के सामान्य विचार है। तो आप बस पूछ रहे हैं कि कौन सी विधि सुरक्षित है, या अनुकूलित या जो भी हो।

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

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

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

+0

+1 में उपयोग करें; सत्र डेटा की सुरक्षा के बारे में अच्छा बिंदु –

+0

@ काई ने मेरे प्रश्न का उत्तर टी, धन्यवाद दिया। – Scott

4

अपना लॉगिन पृष्ठ में, दुकान उपयोगकर्ता किसी सत्र में डेटाबेस से जानकारी, अन्य पृष्ठों पर, आप उन्हें सीधे

<?php 
session_start(); 
$_SESSION['user'] = $username; 

फोन कर सकते हैं और अन्य साइट

<?php 
session_start(); 
$_SESSION['user']; 
+0

स्टैक ओवरफ्लो उदाहरण पर वापस जाकर, जब आप अपने प्रोफाइल पेज पर जाते हैं, वहां बहुत सारे डेटा होते हैं: आपके द्वारा दिए गए प्रश्न, आपके द्वारा पूछे जाने वाले प्रश्न आदि .. आप स्पष्ट रूप से सत्र में सभी को स्टोर नहीं करेंगे , तो आप डेटाबेस से उस डेटा को $ _SESSSION ['USER'] और आईडी के साथ कैसे लाएंगे? – Scott

+0

मुझे लगता है कि आपके उपयोगकर्ता के लिए आपकी एसक्यूएल संरचना में प्राथमिक आईडी है, बस $ _SESSION ['id'] में आईडी स्टोर करें और कुछ मूलभूत जानकारी जो प्रत्येक साइट (जैसे उपयोगकर्ता नाम और नाम) पर उपयोग की जाएंगी, यदि आप बाद में करना चाहते हैं कुछ कठिन और विशिष्ट प्रश्नों को प्राप्त करें, बस $ _SESSION ['id'] से आईडी प्राप्त करें और इसे अपने एसक्यूएल क्वेरी –

1

मैं पर मैं एक मूल अनुप्रयोग का निर्माण कर रहा हूं और मैं यह पता लगाने की कोशिश कर रहा हूं कि मैं login.php से index.php पर उपयोगकर्ता जानकारी कैसे पास कर सकता हूं index.php

एक तरह से PHP सत्र डेटा के रूप में साझा डाटा स्टोर करने के लिए है: http://www.tizag.com/phpT/phpsessions.php

<?php 
session_start(); // start the session 

$_SESSION['views'] = 1; // store session data 
echo "Pageviews = ". $_SESSION['views']; //retrieve data 

स्टोर उपयोगकर्ता डेटा आप सभी पृष्ठों के लिए की जरूरत है। आप डीबी में विस्तारित डेटा छोड़ सकते हैं, इसलिए आपको डेटा के एक टन से आगे पूछने की आवश्यकता नहीं है (जैसे कि एसओ पर प्रोफाइल पेज पर आप जो व्यापक आंकड़े देखेंगे)।

फिर आपको प्रत्येक पृष्ठ पर उपयोगकर्ता डेटा को फिर से पूछना नहीं होगा। बस इसे सत्र डेटा से पुनर्प्राप्त करें।

क्या मुझे बस सत्र आईडी के साथ डेटाबेस से पूछने के लिए एक निर्माण विधि बनाना चाहिए? क्या यह एक सुरक्षित या वैध दृष्टिकोण है?

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

यदि आप डीबी तक पहुंचने पर सुरक्षा के बारे में चिंतित हैं, तो मेरा सुझाव है कि आप एक ठोस समस्या के बारे में जानें: SQL injection attacks को रोकना।

देखें: How can I prevent SQL injection in PHP?

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

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