2012-10-22 14 views
6

मेरी PHP वेबसाइट में कई PHP फ़ाइलें हैं, उनमें से कुछ उपयोगकर्ता इंटरफ़ेस के लिए हैं और उनमें से कुछ सहायक फाइलें हैं (फ़ाइलें, जो डेटाबेस के माध्यम से संचार करती हैं और एक दूसरे को परिणाम देने के लिए)। अब मुझे लगता है कि उपयोगकर्ता अपने प्रत्यक्ष यूआरएल से सहायक फ़ाइलों को निष्पादित नहीं कर सकता है।बाहरी दुनिया से छिपी हुई PHP फ़ाइलों को बनाएं

e.g. mydomain.com/login.php ---------- (Interface file, must be accessible to user) 
    mydomain.com/login_handle.php ----(Healper file, must not be accessible to user) 

तो मैं की जरूरत है उपयोगकर्ता निष्पादित कर सकते हैं और mydomain.com/login.php ब्राउज़ लेकिन ओ.टी. mydomain.com/login_handle.php निष्पादित करने के लिए है, जबकि login.php में सक्षम होना चाहिए और handle_login.php संवाद रखने के लिए और कर सकते हैं है एक दूसरे का उपयोग करें। धन्यवाद,

संपादित करें: क्षमा करें, लेकिन मैं साझा होस्टिंग और वहाँ है कोई public_html के अलावा अन्य फ़ोल्डर का उपयोग कर रहा हूँ।

+5

स्टोर उन्हें webroot के बाहर? – eggyal

+0

क्या php फ़ाइलें, फिर भी एक-दूसरे के साथ संवाद करने में सक्षम होंगी? –

+0

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

उत्तर

4

पहले चीजें मैं प्रयास होगा:

  1. ले जाएँ दस्तावेज़ जड़

  2. के बाहर शामिल फ़ाइलों को किसी अन्य फ़ोल्डर के अंदर शामिल फ़ाइलें ले जाएँ और .htaccess और वह इसकी रक्षा। वैकल्पिक रूप से, .inc के साथ समाप्त होने के लिए अपनी शामिल फ़ाइलों का नाम बदलें और उस पर आधारित नियम बनाएं।

  3. सुनिश्चित करें कि शामिल फ़ाइलें कुछ भी आउटपुट नहीं करती हैं; यह वास्तव में सुरक्षित नहीं है, लेकिन यदि आपकी फ़ाइल में केवल आउटपुट के बिना फ़ंक्शंस, क्लास परिभाषाएं आदि शामिल हैं, तो यह केवल एक खाली पृष्ठ दिखाएगा।

इस के लिए hackish दृष्टिकोण स्थिरांक का उपयोग करके पूरा किया जा सकता है:

index.php

<?php 

define('MY_CONSTANT', '123'); 

include('helper.php'); 

helper.php

<?php 

if (!defined('MY_CONSTANT')) { exit; } 

// we were called from another file 
// proceed 

संपादित

ऊपर से नंबर 2 दृष्टिकोण द्वारा किया जा सकता:

  1. public_html के नीचे एक फ़ोल्डर बनाएँ, उदा includes/

  2. ले जाएँ सभी फ़ाइलें केवल इस फ़ोल्डर

  3. में शामिल किया जाना चाहिए अंदर निम्नलिखित .htaccess जोड़ें:

    <FilesMatch "\.php$"> 
    Order allow, deny 
    Deny from all 
    </FilesMatch> 
    
+0

हाँ मुझे आपका समाधान पसंद आया। धन्यवाद, –

+0

लेकिन इसके लिए, मुझे हर पंक्ति में स्थिर लिखना है, है ना? क्या इसके लिए कोई htaccess समाधान हो सकता है? –

+0

@ user1706482 इसके लिए मैं सभी शामिल फ़ाइलों को पहले एक उप फ़ोल्डर में स्थानांतरित करने की अनुशंसा करता हूं। –

1

.htaccess का उपयोग करने का प्रयास करें।

इस आईपी के 127.0.0.1 के बजाय, आपको अपना सर्वर आईपी पता डालना होगा।

<Files login_handle.php> 
    Order Allow,Deny 
    Deny from all 
    Allow from 127.0.0.1 
</Files> 
+0

हाँ मुझे इस तरह कुछ चाहिए। लेकिन इसे कैसे काम करना है? –

+0

public_html फ़ोल्डर पर जाएं, और .htaccess फ़ाइल खोलें, या बनाएं कि यह अस्तित्व में नहीं है। –

+0

धन्यवाद, आपका उत्तर बिल्कुल वही है जो मुझे चाहिए। लेकिन ऐसा करने से दोनों प्रकार के एक्सेसों के लिए एक वर्जित त्रुटि दिखाई देती है यानी मैं लॉगिन नहीं कर सकता वर्जित पृष्ठ आता है इसका मतलब है कि आंतरिक फाइलें भी नहीं पहुंच सकती हैं? –

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