Batuhan adlı üyeden alıntı
Sayfanın başlangıcında
session_start();
ile session işlemini aktif etmiş olursunuz.
Bir session tanımlarken de;
$_SESSION['isim'] = "Batuhan";
şeklinde bir kod kullanılıyor.
Bir session üzerindeki değeri yazdırmak isterseniz kısaca
echo $_SESSION['isim'];
yazmanız yeterli.
O ana kadar sakladığınız
tüm sessionları yok etmek isterseniz kullanmanız gereken kod:
session_destroy();
Sadece bir sessionu ortadan kaldırmak isterseniz de
unset($_SESSION['isim']);
yazabilirsiniz.
Gelelim sorunuza, bir üye giriş sistemi yapıyorsunuz. Üye girişi yapmayan kullanıcıların ilgili sayfalara erişmesini istemiiyorsunuz. Basitçe bahsedeyim.
Kullanıcı giriş yapıp üyelik bilgileri veritabanından onaylandıktan sonra;
session_start();
$_SESSION['id'] = kullanıcıID;
benzeri bir kodla kullanıcının id bilgisini (kullanıcı adı da olabilir)
id sessionunda tutuyoruz. Yönetim paneli sayfanızın başına şunu ekleyin:
session_start();
if (isset($_SESSION['id'])) {
echo "Hoşgeldiniz";
}
else {
die();
}
Bu sayede session değerine sahip olmayan kullanıcılar (yani giriş yapmamış kullanıcılar) için sayfa yüklenmeyecektir, dilerseniz bu kullanıcıyı giriş sayfasına atabilirsiniz. Unutmadan, kullanıcı çıkışı yapmak istediğinizde de
unset($_SESSION['id']);
koduyla id sessionunu yok edebilirsiniz.
Bu en basit yol, çok daha kompleks sistemler de kurabilirsiniz tabi. Ben balık tutmasını öğretmeye çalıştım :)
Çok teşekkür ederim gayet açıklayıcı ve yararlı bir cevap oldu fakat ben biraz daha başındayım sanırım.
Ben şu şekilde sayfanın en üst kısmına aşağıda ki kodları yazdım
Giriş formundan gelen postları $_POST metoduyla aldım kontrol ettim.
veritabanında ki "kadi" sütunu kullanıcı adını tutuyor. Session'ı da kadi ye atadım. Sessionlara da "deger1" değerini verdim. Ancak aşağıda ki satırlardan başka kod olmamasına rağmen 60. satırda hata gösteriyor.
session_start();
$cikis=$_GET["cikis"];
include"config/database.php";
if($girisyap) {
$kulad = $_POST["kul_ad"];
$kulpar= $_POST["kul_par"];
if((isset($kulad)) and (isset($kulpar))) {
$kontrol = "select * from uyeler where kadi='$kulad' and parola='$kulpar' and onay='E'";
$sorgula = @mysql_query($kontrol);
$say = @mysql_fetch_array($sorgula);
if($say>0) {
$_SESSION["deger1"]=$kadi;
echo"<script>location.href='index.php?sayfa=ilkadimlar';</script>";
} else {
echo"Kullanıcı bilgileri yanlış!";
}
}
else if($cikis==1){
unset($_SESSION["deger1"]);
session_destroy();
}
}//Bu parantezi eklemezsem 66 da eklersem 2. sırada (session_start();) hata gösteriyor ve en altta ki hatayı veriyor.
?>
Hata: Warning: Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp\www\kurumsal\earn\index.php:16) in c:\program files\easyphp\www\kurumsal\earn\girisyap.php on line 2
Nerede yanlış yaptım acaba?
Ek Olarak:
Ertug adlı üyeden alıntı
Ben kayıt olduktan sonra ya da giriş yaptıktan sonra kullanıcı bilgilerini $_SESSION['uye'] oturumuna fetch ediyorum. Daha sonra herhangi bir bilgiye erişmek için $_SESSION['uye']['rutbe'] gibi kodlar yazmama yarıyor. Kolaylık sağlıyor yani. Kontrol oluşturmak da bir o kadar basit.
if (isset($_SESSION['uye']))
{
if ($_SESSION['uye']['rutbe'] == 10)
{
// Sayfaya erişebilir.
}
else
{
// Yetkisiz üye, 404 e yönlendir.
header("Location: /404");
exit();
}
}
else
{
// Yetkisiz üye, 404 e yönlendir.
header("Location: /404");
exit();
}
Umarım yardımcı olabilmişimdir.
Teşekkür ederim hocam, dikkate alıcam ve eğer başara bilirsem ilk önce sorunları halledip sizin dediğinize de bir değineceğim. Çok teşekkürler.
Ek Olarak: Ek olarak:
session_start();
$cikis=$_GET["cikis"];
include"config/database.php";
if($girisyap) {
$kulad = $_POST["kul_ad"];
$kulpar= $_POST["kul_par"];
if((isset($kulad)) and (isset($kulpar))) {
$kontrol = "select * from uyeler where kadi='$kulad' and parola='$kulpar' and onay='E'";
$sorgula = @mysql_query($kontrol);
$say = @mysql_fetch_array($sorgula);
if($say>0) {
$_SESSION["reklamci"]=$kadi;
echo"<script>location.href='index.php?sayfa=ilkadimlar';</script>";
} else {
echo"Kullanıcı bilgileri yanlış!";
}
}
else if($cikis==1){
unset($_SESSION["reklamci"]);
session_destroy();
}
}
//İki parantez ile kapattım ve denedim şu an giriş yapıyor eğer bilgiler //yanlışsa hata da veriyor fakat giriş yap sayfasına girdiğim zaman, direkt hata //gösteriyor. 2. satırda olduğunu söylüyor.
?>