2011-11-07 18 views
7

के साथ में लॉग इन करने के लिए कैसे की तरह सुविधा में एक लॉग suPHP की फाइल अनुमति का उपयोग करने के लिए डिजाइन किया जा सकता है। उदाहरण के लिए, अगर मैं में एक वेबसाइट www.example.com पर और अपने घर निर्देशिका के साथ निम्न दो उपयोगकर्ताओं को एक PHP स्क्रिप्ट test.php के साथ प्रत्येक, और एक validateUser.php स्क्रिप्ट जिसे किसी अन्य उपयोगकर्ता के अंतर्गत आता है (रूट, www-डेटा, अपाचे ...) है /home निर्देशिका।कार्यान्वयन suPHP

 
/home/ 
├── validateUser.php 
├── user1 
│   └── test.php 
└── user2 
    └── test.php 

user1 ठीक इसके विपरीत www.example.com/user2/test.php जाकर user2's स्क्रिप्ट का उपयोग कर सकते हैं, और। इसके बजाय मैं क्या चाहते हैं, सब आने वाले अनुरोधों को चैनल पर, mod_rewrite की तरह कुछ का उपयोग कर, validateUser.php है। हालांकि, ऐसा करने validateUser.php के मालिक, नहीं लक्ष्य test.php स्क्रिप्ट के रूप में सभी स्क्रिप्ट का निष्पादन का परिणाम होगा।

वहाँ वैसे भी पहले suPHP में लात मारता है, और फिर या तो जारी रखने के लिए suPHP, या पूरी तरह से गर्भपात की अनुमति देने के एक PHP स्क्रिप्ट कॉल कर सकता।


संपादित यह दूसरा इनाम मैं डाल रहा हूँ। मैंने पहली बार गुस्ताव बी/सी को दिया, उसने एक अच्छा partial answer दिया। मैं उल्लेख करता हूं कि मैंने अब तक क्या प्रयास किया है, और उनमें से कोई भी मेरे लिए क्यों काम नहीं करता है।

1) मैंने URL को रीडायरेक्ट करने के लिए mod_rewrite का उपयोग करने का प्रयास किया है ताकि उपयोगकर्ता को लॉग इन करने के लिए validateUser.php पर रीडायरेक्ट किया जा सके या कॉल करने के लिए इच्छित स्क्रिप्ट को कॉल किया जा सके। समस्या यह है कि मैं अपने आभासी मेजबान निर्धारित किया है प्रत्येक उपयोगकर्ता के लिए अपने स्वयं के आभासी साइट है ऐसी है कि है (यानी। www.user1.example.com, www.user2.example.com ... अगर यह एक बुरा डिजाइन दृष्टिकोण है, बेरूखी यह इंगित करने के लिए स्वतंत्र लग रहा है)। इसलिए, हालांकि ओएस के रूप में ऊपर फ़ाइल संरचना को देखता है, ऑनलाइन, रूट निर्देशिका के रूप में इस तरह के

VirtualHost = www.user1.example.com 
├── validateUser.php 
└── test.php 
VirtualHost = www.user2.example.com 
├── validateUser.php 
└── test.php 

स्वाभाविक रूप से मैं बस प्रत्येक उपयोगकर्ता के निर्देशिका में validateUser.php की एक प्रति ले जाया सेट कर रहे हैं। समस्या यह है कि अब उपयोगकर्ता उस फ़ाइल को हटा सकता है और जो भी वे चाहते हैं उसे डाल सकते हैं, जैसे कि लॉग इन की आवश्यकता नहीं है। इस के चारों ओर एक घर के रास्ते फ़ोल्डर चिपचिपा (कुछ नहीं मैंने कभी की सिफारिश करेंगे एक घर फ़ोल्डर में कर रही है) बनाने के लिए और validateUser.php जड़ के स्वामित्व बनाने के लिए है। लेकिन अब यह एएस रूट निष्पादित करेगा क्योंकि यह एसयूपीएचपी है। यही वह जगह है जहां मैंने छोड़ा था।

2) मैं गुस्ताव के mod_auth सुझाव का उपयोग कर सकता हूं, लेकिन मुझे यह पसंद नहीं है कि यह पासवर्ड को सामने की ओर (पुराने स्कूल की वेबसाइटों की तरह) मांगे।

3) मैं 1 के लिए एक संस्करण पर विचार किया है) अगर मैं आभासी मेजबान के बीच अनुप्रेषित सकता है। उदाहरण के लिए, तो

VirtualHost = www.user1.example.com 
└── test.php 
VirtualHost = www.user2.example.com 
└── test.php 
VirtualHost = www.admin.example.com 
└── validateUser.php 

फिर www.admin.example.com/validateUser.php करने के लिए उपयोगकर्ताओं से सभी यातायात को रीडायरेक्ट करने mod_rewrite का उपयोग की तरह आभासी मेजबान पुनर्गठन, और उपयोगकर्ता में (या यदि लॉगिन सफल हुआ) उपयोगकर्ता के लिए वापस पुनः निर्देशित किया जाता प्रवेश किया गया हो जिस साइट पर उन्होंने शुरुआत में लॉग इन करने का प्रयास किया था। इसका लाभ, यदि यह भी संभव है, तो यह है कि जब तक उपयोगकर्ता को अपने स्वयं के वर्चुअल होस्ट पर निर्देशित नहीं किया जाता है तब तक suPHP तब तक नहीं लाएगा।

+0

मैं काफी आश्वस्त मेरे सवाल का कोई समाधान http://stackoverflow.com/a/9561335/654789 – puk

उत्तर

2

आप mod_auth का उपयोग कर का उपयोग कर उपयोगकर्ता प्रमाणीकरण लागू करने पर विचार किया है? यदि आप इसे आजमाने का निर्णय लेते हैं, तो guide है जो आपको उपयोगी मिल सकता है।

अपाचे 2।2 समकक्ष:

ध्यान दें कि ब्राउज़र क्रेडेंशियल्स संग्रहीत करता है, और हर अनुरोध बनाने के साथ शीर्ष लेख में उन्हें भेजता है।

+0

मैं भी यकीन है कि अगर यह मैं क्या देख रहा हूँ, किसी भी मामले में है नहीं कर रहा हूँ है हूँ, यह बंद किया जाना प्रतीत होता है "संगतता: केवल संस्करणों में उपलब्ध है पहले 2.1 करने के लिए" – puk

+0

केवल है ऐसा इसलिए है क्योंकि यह थोड़ा अधिक विशिष्ट मॉड्यूल के साथ बदल दिया गया था की तरह [mod_auth_basic], (http://httpd.apache.org/docs/2.2/mod/mod_auth_basic.html)। यदि यह वह नहीं है जिसे आप ढूंढ रहे हैं, तो कोई चिंता नहीं, सिर्फ सोचा कि इससे मदद मिल सकती है। –

+0

मुझे एक और दिखने दो। – puk

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