2016-03-31 17 views
1

Belirli bir dizindeki herhangi bir dosyada oturum açmamış olan tüm kullanıcıları yeniden yönlendirmenin bir yolunu arıyorum.PHP kullanıcılara yönlendirme yapmıyorsa

admin adlı bir dizim var.

Sadece giriş yapan bir kullanıcı kendim olacaktır.

Oturum açıp açmadığımı ve sonra yönlendirme yapıp yapmadığımı kontrol etmek için böyle bir komut dosyası kullanıyorum.

if(isset($_SESSION['user']) { 
if($_SESSION['user'] == "username") { 
    echo "Welcome, " . $_SESSION['user']; 
} 
else { 
header("Location: index.php"); 
} 
} 

Oldukça basit. Oldukça düz ileri. Herhangi bir hassas veriyle ilgilenmediğim için ekstra güvenlik gerekmiyor ve yönetici sayfalarım sitemin nasıl çalıştığına müdahale edemiyor.

Ancak, belirli bir admin dizini için nasıl bir yönlendirme oluşturabilirim?

Bu script, her bir sayfada yer alan functions.php dosyamda yer almaktadır. Bu nedenle, bu dizinin dışındaki her dosyayı hariç tutmak veya bir dizi kullanmak ve yalnızca günlüğe kaydedilmedikçe görüntülenememesi gereken sayfaları listelemek için bir yönteme ihtiyacım var.

Bazı ince ayarlarla, böyle bir şeyin işe yarayacağını düşünüyordum.

İki index.php dosyam var ise sorun nedir? Ana dizin ve alt dizinlerim için bir tane mi?

Komut dosyasına $directory = "admin/"; ekledim, ancak bu dosyalar yalnızca bu dizinde bulunuyorsa yeniden yönlendirmek için bunu nasıl yapacağımı bilmiyorum.

Uyarı: Bu örnekleri aceleyle yazdım, böylece başka hataları olabilir. Üzgünüm eğer yaparlarsa.

if(isset($_SESSION['user']) { 
if($_SESSION['user'] == "username") { 
    echo "Welcome, " . $_SESSION['user']; 
} 
else { 
$directory = "admin/"; 
$redirect[] = array(); 
$redirect[] = "page1.php"; 
$redirect[] = "page2.php"; 
if (in_array(($_SERVER["SCRIPT_FILENAME"], $redirect)) { 
    header("Location: index.php"); 
} 
} 
} 

Dizine kodu nasıl ekleyebilirim?

cevap

2

Sorunuzu doğru bir şekilde anlarsam, numaralı herhangi bir kullanıcının yeniden yönlendirilmek üzere /admin/ dizinindeki bir dosyaya erişmesini ister misiniz?

if (!isset($_SESSION['user']) && stristr($_SERVER['SCRIPT_FILENAME'],'admin'){ 
    header('Location: http://www.goodbye.com'); 
} 

Başlıkta http dahil olmak üzere tam URL'ye dikkat edin. HTTP üstbilgisinin düzgün çalışması için tam, mutlak bir URL olması gerekir.

+0

Ama bu admin.php gibi admin adında bir script mi ​​arıyor? –

+0

iirc, kökten gelen yolu içermeli, bunun değerini ekleyerek bunu deneyebilirsiniz. ya da bir print_r ($ _ SERVER); ' – Garytje

+0

Şimdi okudum okudum bunu biraz anlıyorum. Ben bir dizi kullanmaya devam ediyorum çünkü bir dosyaya yeniden yönlendirmek istemiyorum bu yüzden gelecekteki 'admin' dizininde bir ya da iki dosyaya sahip olabilirsiniz. –

İlgili konular