giriş kontrolü sağlayarak, sayfa php tüm sayfalarda yönlendirme

3 Cevap php

Ben kullanıcı giriş için izin ve daha sonra belirli sayfalarına erişmek PHP kullanarak basit bir dinamik Web, yapıyorum. Yani burada ben şimdiye kadar ne yaptın.

Değerlerindeki giriş kayıtlı kullanıcılar için veritabanındaki değerleri getirir bir php komut dosyası $ _POST değişkenler olsa alınır. Kullanıcı bulunursa ben aşağıdakileri yapın:

session_register('userid');
$_SESSION['userid'] = $username;//this is taken from $_POST
$_SESSION['accesslevel'] = $access;

php script başında i koyduk session_start();

Şimdi burada benim sorunum geliyor.

O zaman o ise o sayfa yükleme devam etmelidir, login.php yönlendirilir olmalıdır değilse her sayfasında şimdi ben, kullanıcı değil bu sayfayı görüntülemek veya izin olup olmadığını kontrol etmelisiniz.

Şimdi bugüne kadar öğrendim ben ne php sayfaları arasında değerleri korumak için tek yol i her i session_start() yazmalısınız oturum değişkenleri kullanıyorum $_SESSION değişkenleri kullanın ve hangi hiç sayfasında olmasıdır ilk satır gibi sayfa, başka i Zaten hata Sent Başlıkları elde edilecektir ..

Gariptir ben tam olarak bunu yaptık ama hala "zaten gönderildi başlıklarıyla" ile hatalara olsun.

SO i sayfaların en çapında oturum değişkenleri kullanmak, ve ortak bir yerde bu ortak kontrolleri tutmak zorunda bir web sitesi, tasarımı için en iyi yolu nedir istiyorum ..

  • I dahil kullanabilir miyim () nasıl bazı özellik?
  • Oturumlar php sayfaları üzerinden veri iletişim kurmak için tek yoldur.
  • Daha iyi bir yolu nedir?

Ben aşağıdaki kodu vardır:

<?php
session_start();
if(!isset($_SESSION['user']))
{
    $_SESSION['loc'] = "adminhome.php";
    header("location:ettschoollogin.php");
    exit();
}
    ?>

Kullanıcı oturum olup olmadığını kontrol etmek isteyen her sayfanın üstünde bulunduğu

Ve bu giriş için kontrol teh script

<?php
session_start();
include("connection.php");
$userid =$_POST['userid'];
$userpwd =$_POST['userpwd'];

$query="Select UNAME,UPASSWORD,SCHOOL,uaccess from schooluser where uname = '$userid'";

$result=mysql_query($query) or die("couldn't execute the query");
$row=mysql_fetch_array($result);
$useraccess = $row["uaccess"];


$school =$row[2];

if(($row[0]==$userid)&&($row[1]==$userpwd))
{
        session_register('userid');
        $_SESSION['userid']=$userid;
        $_SESSION['school']=$school;

    if($useraccess =="admin")   
    {       
        header("Location:adminhome.php");
    }

    if($useraccess !="admin")
    {
        header("Location:school_main.php");

    }
}
else
{
    header("Location:ettschoollogin.php?err=1"); 
}
?>

i "?>" sonra fazladan boşluk olan ortak hata farkındaydı, ama ben hala onu GET.

, Teşekkürler beyler ben kaçırmış ve "connection.php" dosya aslında ">" i daha önce çıkarmıştı ekstra boşluk sonra, ancak bazı dosya bir sürü again.thanks yeniden yazılamaz var nasıl vardı.

3 Cevap

Evet, kullanabilirsiniz içerir. Ayrı bir php dosyası ile tüm ortak fonksiyonları koyun ve her dosyanın en başında "include".

(Eğer PHP sayfasında ek bilgi aramak için kullanabileceğiniz genellikle sadece id) bilgileri depolamak için çerezleri kullanabilirsiniz. Normalde, PHP oturumlar olsa çerezleri kullanarak işlenir. setcookie dokümanlar bakın.

Muhtemelen nedeniyle <?php ?> bloğunun dışında başıboş karakter hata mesajları alıyorsanız. Yaygın bir hata ?> sonra, bir de dosyanın sonunda fazladan boş satır sahip olmaktır. Bu boş hat çıkışı olacak ve başlıklar gönderilmiş olacaktır. Bu sorun değil, sadece emin bazı çıktı (print kullanarak örneğin veya eko) oluşturabilir herhangi bir kod yukarıda oturumu ile ilgili kod hareket yapmak gerekir.

• i içerir kullanabilir miyim () nasıl bazı özellik?

Evet. Eğer session_start () çağrısından önce, sadece, sen bile, tek bir boşluk ya da karakter, bir şey outputted olmalı değil istersen yapabilirsin. Muhtemelen zaten belki bir otomatik içerme veya apache prepend şey, outputted var.

•Are sessions only way to communicate data across php pages. •What is a better way?

Diğer yolları tanımlama, post ve parametreleri olsun. Ancak oturumları güvenli (güvenlik riskleri oluşturabilecek olan) geri istemciye göndererek olmadan sayfalar arasında veri aktarmak için tek yoldur

Kodunuzu üstündeki ob_start(); yaz ve daha sonra size hata alamadım "başlıklarıyla zaten göndermek"