PHP, oturum açmış değil sırasında bir sayfayı erişmesini engelleyebilirsiniz?

4 Cevap php

Nasıl onlar açmış değil ne zaman bir sayfasına erişerek, bir kullanıcı önleyebilir? Onu oturum açma sayfasına yönlendirilmesini istiyorsanız. Ben oturumları ile ilgisi var biliyorum.

4 Cevap

Bu gibi çalışır:

  1. Bir oturumu başlatın: session_start ()
  2. Oturum Başka ["user"] == null, giriş sayfasına yönlendirmek, devam ederseniz.
  3. Oturum açma sayfasında, bir formu kullanarak şifre için kullanıcıya sor
  4. Giriş sayfasına bu formu yayınlamak
  5. Kullanıcı yetkili eğer kimlik doğrulama hizmeti (örneğin mysql bir tablo) karşı kontrol edin
  6. Eğer evet ise, Session ["user"] = $ userName, sayfaya kullanıcıyı yönlendirmek. Eğer hayır ise, tekrar şifre isteyebilir

Tabii ki, bu hepsi çok, çok basittir. Senin oturumunda, karmaşık bir kullanıcı nesnesi, ya da bir şey tutmak olabilir. İyi şanslar kodlama.

O kapattığında - bir oturum değişkeni saklamak. Sonra her sayfanın başında

session_start();
if (!isset($_SESSION['nID']))
    header("Location: login.php");

Giriş tamamsa

session_start();
$_SESSION['nID'] = 1; //example

Svetlozar Angelov işaret olarak aşağıdaki kod iyi çalışır:

if (!isset($_SESSION['nID']))
    header("Location: login.php");

However.. Bu aslında gerçekten erişmek isteyen kullanıcılar karşı sayfasını güvenli olmaz. Bazı ayarlamalar yapmanız gerekir:

if (!isset($_SESSION['nID']))
{
    header("Location: login.php");
    die();
}

Bu botlar ve sayfanın içine alma ve sorunlara neden olan tarayıcı başlıklarını görmezden biliyorum savy kullanıcıları engeller. Ayrıca sayfa sayfa kalanını yürütme durdurmak ve kaynak tasarrufu sağlar.

Onun da $ _SESSION ['NiD'] kullanıcı adlarını veya id saklamak için kullandığınız diğer değişken için takas edilebilir olması dikkat çekicidir.

Şu adımları izleyin:

Bir kullanıcı form onun adı ve parola girmesi herkes için erişilebilir bir login.php sayfası oluşturun. Bu form kendini login.php teslim edilmelidir. (Action = 'login.php'). Ayrıca formu ibraz edilmiş ise izler formdaki bir gizli değişken bulunmaktadır.

Gizli değişken ayarlı ise, kullanıcı adı ($_POST['user']) ve DB varsa kontrol ve şifre kullanıcı adı eşleştiğini. Eğer, böyle bir $ _SESSION değişkeni olarak adını saklamak:

$_SESSION['username'] = $_POST['user'];

Eğer yoksa, bu gibi login.php yeniden yükleyin:

echo 'header("login.php")'; //You should not have echoed anything before this

Şimdi oluşturduğunuz her kullanıcı sayfanın içinde login.php içerir. Böyle bir inbox.php oluşturmak, bir e-posta uygulaması yazarken varsayalım

include ("login.php")

Şimdi, login.php oturum değişken 'kullanıcı' ayarlanmış olup olmadığını kontrol edin ve sadece yetkili kullanıcıların erişimini sağlayacaktır.