yönlendirilmesi halinde bir php sayfasına direkt erişimi engelleyen sadece erişmek

7 Cevap

Ben yönlendirmek ve doğrudan erişimini benim kullanıcıyı engellemek başka bir sayfadan benim php sayfasında sadece erişilebilir yapmak istiyorum.

Yani, en I "noaccess.php" denilen Ben doğrudan erişimi engellemek istiyoruz "main.php" ve başka bir php dosyası olarak adlandırılan bir sayfa var diyelim.

Ben main.php yönlendirmesi yalnızca noaccess.php erişilebilir yapmak istiyorum

Herhangi bir öneriniz?

GÜNCELLEME: Oturum iyi bir fikir, ama sorun ben bir sayfaya yönlendirmek için JavaScript kullanmak zorunda olduğu, bu yüzden soru, ben bir php oturumu ayarlamak için ajax kullanabilirim?

GÜNCELLEME 2: Tamam ben bir çözüm buldum, ben sayfa erişilebilir ya da gerekip gerekmediğini mysql den kontrol edebilirsiniz gibi, şimdi doğrudan erişimi engelleyen gerekmez.

7 Cevap

Ne sizi yönlendirmek için gittiğini her $ _SESSION değişkeni bir değer kaydettiğiniz. Yani var

//code
$_SESSION['fromMain'] = "true";
header("Location: noaccess.php");

Sonra noaccess.php koymak içinde

if($_SESSION['fromMain'] == "false"){
   //send them back
   header("Location: foo.php");
}
else{
   //reset the variable
   $_SESSION['fromMain'] = "false";
}

Bu değil çalışmak ya olsaydı ben gerçekten bilmiyorum, ama bu benim başın üst kapalı denemek istiyorsunuz budur.

Ben muhtemelen yanlış yönden sorun geliyorlar düşünüyorum, ama gerçekten bu uygulamak istiyorsanız, büyük olasılıkla bir session variable ile yapardım. Sadece var main.php onlar şimdi erişimi noaccess.php edebiliyoruz ve sonra orada yönlendirme belirten bir bayrak. noaccess.php bayrağı denetler ve sadece fonksiyonları ayarlanmış eğer.

Bu deneyin

if (!isset($_SERVER['HTTP_REFERER'])){

   echo "uh?"; }

else {

   // The script
 }  

Sen $ _SERVER ["HTTP_REFERER"] kullanabilirsiniz. İstediğiniz url örneğin http://a.com/main.php eşit olması için php dosyanızın başında ve set $ url aşağıdaki kodu koyun

if ($_SERVER['HTTP_REFERER'] != $url) {
    header('Location: noaccess.php');
    exit();
}

Neden sadece include yerine yönlendirmek için değil mi?

Diğer millet doğru $ _SERVER ["HTTP_REFERER"] ile ilgili sorunlar vardır, böylece ben en iyi yolu, bir değişken içine koymak zorunda olacak sanırım $ _SESSION veya $ _POST ve bu değişken olup olmadığını kontrol edin, değilse gerekecektir Bir doğrudan erişim anlamına gelir.

Sayfalara erişimi engellemek için, en iyi uygulama tablo adı alanları 'kullanıcı adını "kullanıcı" olduğunu varsayarak veritabanı tablo kaydının karşı denetlemek için oturum değişkenleri $ _SESSION [' username '] ve $ _SESSION [' password '] söylemek kullanmaktır 've' kullanıcılar bunları giriş alanı ile doğru kullanıcı adı ve şifre temin için başka onlar sayfasında günlüğüne yönlendirilir, sayfaya erişmek için için parola '.

Aşağıda PHP Page Doğrudan Erişimin Engellenmesi bir anatomisi olduğunu.

session_start();

$username=$_POST['username'];
$password=$_POST['password'];

$query="select * from users where username='$_SESSION[username]' and     password='$_SESSION[password]'";

$result=mysql_query($query);

if($result)
{

echo "Your login was successful..";// the page you want to go to if login successful
{
else
{

header("Location:index.php?action=login");//any page you want to return to if log in failed
}