2012-03-15 7 views
5

Sitemi güvenli hale getirmek için basit bir önceden hazırlanmış yetkilendirme aracı kullanıyorum. Araç, her .php sayfasının başına uygulanacak bu kod satırını gerektirir. Auth.php kök düzeyinde yaşıyor.PHP absolute path requiredeonce

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

Bu satırdaki satırı, alt klasörlerdeki dosyalar da dahil olmak üzere her dosyaya ekleyebilmem gerekir. Ancak, yöntemin her zaman kesinlikle bağlı olduğundan emin olmak için yöntemi require_once in php'da gösterildiği gibi nasıl uygulayacağımı bilmiyorum. işlevi.

Herhangi bir aydınlanma takdir edilir.

Şerefe.

+0

Bu özelliğin amacı nedir? – yoda

cevap

6

Bir değişkeni mutlak yola ayarlayın. $ _SERVER ['DOCUMENT_ROOT'], sunucuları ve kök yolunu saklayan bir PHP genel değişkenidir. Sadece yol bilgilerinin kalanını komut dosyasına eklemeniz yeterlidir. Örneğin, web siteniz/var/www/adresinde varsa ve/var/www/scripts dosyasında mevcutsa, aşağıdakileri yaparsınız.

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

Almak için göreli bir yol kullanabilirsiniz.

Bir düzey yukarı: yukarı ../Auth.php

İki düzeyleri: ../../Auth.php

vb

+0

İpucu iyi, ama bu her zaman işe yaramaz. ['__DIR__'] ile birlikte çalışır (http://www.php.net/manual/en/language.constants.predefined.php). – hakre

+0

Merhaba. Teşekkürler, ama bunları ayrı ayrı sıralamak için çok zaman alacak. – fitzilla

+0

@fitzilla, Bu durumda, hakre's veya DampeS8N'in çözümlerini izlemelisiniz. Onlar senin problemine iyi cevaplar. Sadece kodunuzun dağıtıldığı başka bir yerde değiştirilmeniz gereken bir INI değişikliği yaptığınızı unutmayın. – Brad

1

sizin include_path kök düzey dizin ekle - PHP sizin için dinlenme yapacak. Karmaşık değişkenler, sabitler ya da her neyse.

2

php.ini dosyanızı, içerdiği dosyaların (tümü hariç) eklenen dosyaların içerme yolunu değiştirmek için değiştirmeniz gerekir. Daha sonra, kendi konumlarından bağımsız olarak, her sayfada bir yol olmadan bunları ekleyebilirsiniz.

More Details

-1

Neden sadece mutlak bir yol kullanılır? bir site olacağından php.ini dosyasına erişim yoksa

require('/auth.php'); 

Belki sorunuzu

+0

çünkü işe yaramayacak –

0

yanlış anlama ediyorum, ben

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

Zaten söylenmiş olan her şeye ek olarak, tüm genel işlevlerin merkezileştirilmesini öneririm. Uygulamanız için gereken tüm özelliklere sahip common.php gibi bir dosya oluşturun ve ardından tüm komut dosyalarınızdan ekleyin.

Ayrıca, dirname() işlevini __FILE__ magic sabiti ile birlikte kullanarak göreceli olarak yapmanın iyi bir yolu da budur. Örneğin:

require_once dirname(__FILE__) . '/../lib/common.php';