Nasıl tüm php dosyalarının başında içine bir satır ekleyebilirsiniz?

7 Cevap php

Peki, tamam. Ben birçok php dosyalarını ve bir index.php dosyası var. Ben index.php onları dahil çünkü tüm dosyalar, index.php dosyası olmadan çalışamaz. Örneğin,. Biri tıklayın Contact us URL index.php?id=contact gibi smth olacak ve ben kullanırsanız $_GET['id'] contacts.php dosya eklemek için. Ama, birileri dosyanın yolunu bulursam, örneğin, /system/files/contacts.php Ben bu dosya idam olacağını istemiyorum. Yani, ben $check_hacker = 1 bu gibi index.php on line tüm dosyaları da dahil olmak üzere daha önce eklemek ve if Bunun gibi başlayarak her dosyalarında kullanabileceğiniz anladım if($check_hacker <> 1) die();. Yani, ben tüm dosyaları açma ve bunların her biri için bu satırı ekleyerek olmadan bunu nasıl yapabilirim? Bu mümkün mü? Ben aslında çok. Php dosyaları var çünkü. Ve belki de ayrı bir dosya izlerken disable yapmak için başka bir yolu var mı? Herhangi bir fikir?
Teşekkür ederiz.

7 Cevap

Bu web dizininde yalnız index.php koyabilirsiniz. Ve olmayan bir başka web dizininde içeren tüm dosyaları koydum.

Adlı web sitesi http://www.example.com/index.php aslında /path/to/your/home/www/index.php, sen /path/to/your/home/includes/contact.php içinde contact.php koyabilirsiniz diyelim. Hayır. Htaccess, rewrite, oto iliştirme. Sadece iyi bir dosya yapısı ve gerektiği gibi yapılandırılmış bir sunucu.

Detaylara XAMP kullanma hakkında benim yorum düzenleyin:

Httpd.conf dosyasında, bu gibi bir şey eklemek:

<Directory "/path/to/your/site/root">
    Options Indexes FollowSymLinks
    AllowOverride all
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
</Directory>


<VirtualHost *:80>
    DocumentRoot /path/to/your/site/root
    ServerName www.example.org
</VirtualHost>

Sonra windows hosts dosyasına (C: \ Windows \ System32 \ drivers \ etc), bu satırı ekleyin:

127.0.0.1   www.example.com

Ben çok index.php için farklılaştıran tüm dosya isteklerini reddeder için. Htaccess dosyasını kullanmanızı tavsiye ederim ama bu propperly yapmak için nasıl emin değilim.

Bu iş olabilir (şimdi bunu test değil) ama o da, js ve css için isteklerini engeller:

order deny,allow
<FilesMatch "\.php">
    deny from all
</FilesMatch>
<FilesMatch "(index.php)">
    allow from all
</FilesMatch>

If someone knows the right solution, please edit my answer. You might check this question: http://stackoverflow.com/questions/1340001/deny-direct-access-to-all-php-files-except-index-php

Yani index.php kuralın yanında, sadece php dosyaları için bir FilesMatch komutlarını olabilir.

EDIT: kodunun yeni sürümü çalışmıyor gibi görünüyor.

Kau-Boy yanıt olarak:

Yeni bir dizine (index.php hariç) tüm php dosyalarını yerleştirin ve aşağıdaki içeriği htaccess dosyasını koydu.:

deny from all

Onlar da bloke olacaktır, çünkü bu dizinde herhangi bir resim / css / JScript kaynakları koymayın emin olun.

(Apache kullanıyorsanız) Ben bu durumda mod_rewrite kullanmak istiyorum. Faydasız if s PHP gazillions yazmaktan çok daha temiz bir çözüm bulunuyor.

Bu şekilde, birisi "kesmek" istiyordu ve /system/files/contacts.php, bu index.php?id=contact veya ne olursa olsun diğer sitesi onları yönlendirmek istiyorum çalıştı.

Php.ini veya size htaccess aşağıdaki değişkeni ayarlayın:

auto_prepend_file="[path to some .php file]"

Bu sistemdeki tüm php scriptler önce dahil edilecek seçtiğiniz bir başlık dosyasını içerecektir.

Php.ini yönergesi auto_append_file, sistemdeki tüm PHP dosyalarının sonunda yer almaktadır bir altbilgi oluşturmak olacaktır.

RewriteCond %{REQUEST_URI} system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

Will redirect any attempt to system folder back to root!