2010-01-11 20 views
7

मैं PHP के लिए बिल्कुल नया हूं और PHP में प्रमाणीकरण को कार्यान्वित करने के तरीके पर कुछ सर्वोत्तम प्रथाओं की तलाश में हूं।PHP लॉगिन पृष्ठ बनाने का सबसे अच्छा तरीका क्या है?

मैं एडोब के लिए एक प्रचारक हूं और मुझे परेशान करने वाली चीजों में से एक है जब लोग लॉगिन स्क्रीन के लिए फ्लेक्स/फ्लैश का उपयोग करते हैं। तो मैं एक HTML/PHP लॉगिन पेज का उपयोग करने पर एक ब्लॉग पोस्ट/उदाहरण करना चाहता हूं और फिर फ्लेक्स के बाद सत्र जानकारी पास कर रहा हूं- सत्र सेट किया गया है।

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

अग्रिम धन्यवाद,

= रयान [email protected]obe.com

+0

आप कर सकते हैं -

<? if(isset($submLogin)) { $username = $_POST['username']; $password = $_POST['password']; // run checks on vars not to pass on silly data + escape chars $query_login = 'SELECT * FROM users WHERE username = ' . $username . ' AND password = ' . $password . ' LIMIT 1'; $login = mysql_query($query_login, $db_connection) or die(); $login_result = mysql_num_rows($login); if($login_result == 1) { // success session_start(); $_SESSION['logged_in'] = TRUE; // redirect somewhere, set cookies, do whatever you want to do on success } else { // fail // display error or redirect } } ?> 

$ db_connection चर लिंक पहचानकर्ता है: कुछ ऐसे स्वरूप कुछ के साथ php पेज:

<form method="post" action="login.php"> <input type="text" name="username"> <input type="password" name="password"> <input type="submit" name="submLogin"> </form> 

फिर अपने php तर्क जोड़ने https://github.com/delight-im/PHP-Auth पर एक नज़र डालना चाहते हैं जो फ्रेमवर्क-अज्ञेयवादी और डेटाबेस-अज्ञेय दोनों है। – caw

उत्तर

7

जैसा कि कहा गया है, PHP में एक मजबूत और सुरक्षित प्रमाणीकरण प्रणाली बनाने के लिए काफी कुछ है, लेकिन बुनियादी बातों को समझना आसान है।

पहली चीज़ जो आप करना चाहते हैं वह session_start() पर कॉल करें। एक बार जब आप ऐसा करने के बाद आप हो और सेट सत्र चर कर सकते हैं का उपयोग कर $_SESSION superglobal:

session_start(); 
$_SESSION['foo'] = $foo; 
$bar = $_SESSION['bar']; 

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

विचार करने के लिए सुरक्षा मुद्दे हैं, जैसे सत्र निर्धारण और कुकी चोरी, हालांकि। सत्र निर्धारण के लिए एक दृष्टिकोण, उदाहरण के लिए, PHP के session_regenerate_id (या ऐसा कुछ) का उपयोग करके विशेषाधिकारों की उन्नति पर उपयोगकर्ता की सत्र आईडी को पुन: उत्पन्न करना है।

PHP Security Consortium में बहुत सारी उपयोगी जानकारी है।

कुकीज़ को setcookie फ़ंक्शन का उपयोग करके छेड़छाड़ की जा सकती है।

+0

जब आप कहते हैं कि "पहली चीज़ जो आप करना चाहते हैं वह कॉल session_start() है" क्या आपका मतलब है कि मुझे लॉगिन प्रमाण-पत्रों की जांच करने से पहले मुझे ऐसा करना चाहिए? ऐसा लगता है कि इसे लागू करने का सही तरीका है और फिर एक सफल लॉगिन पर मैं उन सत्र चर बदल दूंगा (कहें, $ _SESSION ['log_in'] को झूठी से सच में बदलें)। क्या वो सही है? – ryanstewart

+0

हाँ, यह सही है। सत्र शुरू करने के बिना आप '$ _SESSION' तक नहीं पहुंच सकते हैं; आपको इसे हर पृष्ठ पर करना है। –

2

एक काफी व्यापक विषय है कि। हालांकि, सत्र/कुकीज़ की अच्छी समझ एक अच्छा आधार होगा। आपको Chris Shiflett's blog पर एक नज़र डालना चाहिए - उनके पास इन विषयों के बारे में बहुत अच्छी पोस्ट हैं।

मैं एडोब के लिए एक प्रचारक हूं और मुझे परेशान करने वाली चीजों में से एक है जब लोग लॉगिन स्क्रीन के लिए फ्लेक्स/फ्लैश का उपयोग करते हैं। तो मैं एक HTML/PHP लॉगिन पेज का उपयोग करने पर एक ब्लॉग पोस्ट/उदाहरण करना चाहता हूं और फिर फ्लेक्स के बाद सत्र जानकारी पास कर रहा हूं- सत्र सेट किया गया है।

मुझे यहां आपके लक्ष्य पर पूरी तरह से यकीन नहीं है। क्या आपको उपयोगकर्ता को प्रमाणित करने के लिए फ़्लैश घटक की आवश्यकता है? चूंकि यह एक क्लाइंट-साइड तकनीक है, ऐसे प्रमाणीकरण में सीमित दायरा होगा।

+0

कई मामलों में, फ्लैश/फ्लेक्स सत्र को संभालेगा और प्रमाणित करने के लिए सीधे PHP पर बात करेगा। तो मैं जो करना चाहता हूं वह फ़्लैश प्लेयर में एचटीएमएल हुक का उपयोग "सामान्य" कुकी/सत्र जानकारी खींचने के लिए किया जाता है जो नियमित PHP लॉगिन पेज में उपयोग किया जाएगा और फ़्लैश प्लेयर को पास कर देगा ताकि प्लेयर प्रमाणीकृत अनुरोध कर सके PHP सर्वर के लिए। – ryanstewart

-9

PHP डंप करें और एएसपी.NET में जाएं। यह सब सुरक्षा और सदस्यता के विवरण के साथ पहले से ही किया जा चुका है। =)

+4

लॉल यह टिप्पणी बेकार है और बस फ्लेमिंग है। लेकिन मुझे लगता है कि उसके पास – Alfred

+0

के लिए वोटिंग पर्याप्त था, मेरी इच्छा है कि जब मैंने PHP साल पहले शुरू किया था तो किसी ने मुझे ऐसी "बेकार" सलाह दी थी। =) कोई भी PHP आर्किटेक्ट पत्रिकाओं का ढेर चाहता है? उन्हें फायरप्लेस में रखने के लिए इतनी शर्म की बात है। –

2

लॉगिन बनाएं।)) Mysql_connect का परिणाम (या mysql_pconnect (

+1

SQL क्वेरी में उपयोगकर्ता नाम और पासवर्ड का सीधे उपयोग करना एसक्यूएल इंजेक्शन के खिलाफ बहुत असुरक्षित तरीका है। SQL क्वेरी में उपयोग करने से पहले आपको उपयोगकर्ता नाम और पासवर्ड को साफ़ करने के लिए कम से कम htmlentities फ़ंक्शन का उपयोग करना चाहिए। सिर्फ तुम्हारी जानकारी के लिए। – mdikici

+0

@subet मैंने उपरोक्त मेरे कोड को देखा जब मैंने अभी "उन चीज़ों को किसने लिखा था" क्षण में से एक था। हाँ, निश्चित रूप से ऐसा न करें जो मैंने अपने जवाब में किया और इनपुट को स्वच्छ करें। फिर फिर, टिप्पणियों में उल्लेख किया गया है (कोड में)। – LukeP

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