2012-03-15 8 views
5

मैं अपनी साइट को सुरक्षित करने के लिए एक सरल पूर्व-निर्मित प्राधिकरण टूल का उपयोग कर रहा हूं। उपकरण को प्रत्येक .php पृष्ठ के शीर्ष पर कोड की इस पंक्ति को लागू करने की आवश्यकता होती है। Auth.php रूट स्तर पर रहता है।आवश्यकता के लिए PHP पूर्ण पथ

<?php ${(require_once('Auth.php'))}->protectme(); ?> 

मुझे उप-फ़ोल्डरों में फ़ाइलों सहित प्रत्येक फ़ाइल में कोड की इस पंक्ति को जोड़ने में सक्षम होना चाहिए। लेकिन मुझे यह सुनिश्चित करने के लिए अनिश्चितता है कि require_once in php में दिखाए गए तरीके को कैसे लागू किया जाए ताकि यह सुनिश्चित किया जा सके कि यह हमेशा सुरक्षा() के साथ बिल्कुल जुड़ा हुआ है; समारोह।

किसी भी ज्ञान की सराहना की जाती है।

चीयर्स।

+0

इस सुविधा का उद्देश्य क्या है? – yoda

उत्तर

6

एक चर को पूर्ण पथ पर सेट करें। $ _SERVER ['DOCUMENT_ROOT'] एक PHP वैश्विक चर है जो सर्वर, रूट पथ को संग्रहीत करता है। आपको बस बाकी पथ जानकारी को स्क्रिप्ट में डालने की आवश्यकता है। उदाहरण के लिए यदि आपकी वेबसाइट/var/www/पर मौजूद है और आपकी स्क्रिप्ट/var/www/स्क्रिप्ट पर मौजूद है तो आप निम्न कार्य करेंगे।

$path = $_SERVER['DOCUMENT_ROOT'] . '/scripts/Auth.php'; 
require_once($path); 
2

आप इसे प्राप्त करने के लिए एक सापेक्ष पथ का उपयोग कर सकते हैं।

एक स्तर ऊपर: ऊपर ../Auth.php

दो स्तर: ../../Auth.php

आदि

+0

संकेत अच्छा है, लेकिन यह हमेशा काम नहीं करता है। यह ['__DIR__'] के साथ संयोजन में काम करता है (http://www.php.net/manual/en/language.constants.predefined.php)। – hakre

+0

हाय। धन्यवाद, लेकिन यह व्यक्तिगत रूप से क्रमबद्ध करने में बहुत समय लगेगा। – fitzilla

+0

@ फिट्जिला, उस स्थिति में, आपको हैकर या डैम्पेस 8 एन के समाधानों का पालन करना चाहिए। वे आपकी समस्या के अच्छे जवाब हैं। बस याद रखें कि आप एक आईएनआई परिवर्तन कर रहे हैं, जिसे कहीं भी आपके कोड पर तैनात किया जाना चाहिए। – Brad

1

अपने include_path को रूट स्तर निर्देशिका जोड़ें - पीएचपी आप के लिए आराम करेंगे। कोई जटिल चर, स्थिरांक या जो कुछ भी नहीं।

2

आपको उस पथ के पथ को शामिल करने के लिए अपने php.ini को बदलना चाहिए (सभी अन्य सभी) फ़ाइलें शामिल हैं। फिर आप उन्हें अपने स्वयं के स्थान पर ध्यान दिए बिना प्रत्येक पृष्ठ पर पथ के बिना शामिल कर सकते हैं।

More Details

-1

क्यों नहीं बस एक निरपेक्ष पथ का उपयोग करें? आप php.ini के लिए उपयोग नहीं है, तो

require('/auth.php'); 

शायद मैं अपने प्रश्न

+0

क्योंकि यह काम नहीं करेगा –

0

गलतफहमी हूँ, मैं पहले

include $_SERVER['DOCUMENT_ROOT']."/"."include_me.php"; 
0

सबसे आसान तरीका कुछ इस तरह का उपयोग किया है, क्योंकि यह एक साइट है विस्तृत परिवर्तन php.ini में पथ शामिल करने में पहले अपनी निर्देशिका को जोड़ना है।

यदि आप php.ini नहीं बदल सकते हैं, तो a few other options for adding it to the include path हैं।

1

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

इसके अलावा, dirname() का उपयोग करके __FILE__ जादू स्थिरांक के साथ संयोजन में एक अच्छा तरीका शामिल है। उदाहरण के लिए:

require_once dirname(__FILE__) . '/../lib/common.php'; 
संबंधित मुद्दे