lostyazilim
tr.link

PHP Session, yönetimi hakkında yardım

10 Mesajlar 1.001 Okunma
acebozum
tr.link

oguzhaner oguzhaner WM Aracı Kullanıcı
  • Üyelik 13.12.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Web/Desktop Coder
  • Konum İstanbul Avrupa
  • Ad Soyad O** E**
  • Mesajlar 210
  • Beğeniler 20 / 20
  • Ticaret 3, (%100)
Herkese iyi günler. Ben php ile bir yönetim paneli kodluyorum. Fakat session ile üye girişi yapmayı bir türlü beceremedim. Bu konuda bana yardımcı olabilir misiniz?

"Üye ol" formu tamam, veri tabanına kayıt ekleniyor. Fakat giriş sayfasında session kullanımını bilmiyorum.
 

 

wmaraci
reklam

Batuhan Batuhan Kendine webmaster Kullanıcı
  • Üyelik 08.05.2011
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum Ankara
  • Ad Soyad B** B**
  • Mesajlar 3455
  • Beğeniler 783 / 1009
  • Ticaret 1, (%100)
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 :)
oguzhaner

kişi bu mesajı beğendi.

Ertug Ertug WM Aracı Kullanıcı
  • Üyelik 21.09.2013
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılım geliştiricisi
  • Konum Ankara
  • Ad Soyad E** K**
  • Mesajlar 361
  • Beğeniler 51 / 43
  • Ticaret 0, (%0)
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.
 

 

[freenodeIRC]
PHP = #laravelTurkiye
C++ = #qtTurkiye
Python = #pythonium

oguzhaner oguzhaner WM Aracı Kullanıcı
  • Üyelik 13.12.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Web/Desktop Coder
  • Konum İstanbul Avrupa
  • Ad Soyad O** E**
  • Mesajlar 210
  • Beğeniler 20 / 20
  • Ticaret 3, (%100)

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.
?>
 

 

wmaraci
wmaraci

kramper kramper <?php echo "hi world!" ?> Kullanıcı
  • Üyelik 29.01.2014
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılım &amp; SEO
  • Konum İzmir
  • Ad Soyad M** B**
  • Mesajlar 1196
  • Beğeniler 56 / 168
  • Ticaret 37, (%100)

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 :)

Peki sessionla değişken taşırken nasıl bir kod yazacaz?
 

 

Batuhan Batuhan Kendine webmaster Kullanıcı
  • Üyelik 08.05.2011
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum Ankara
  • Ad Soyad B** B**
  • Mesajlar 3455
  • Beğeniler 783 / 1009
  • Ticaret 1, (%100)

kramper adlı üyeden alıntı

Peki sessionla değişken taşırken nasıl bir kod yazacaz?


Demek istediğiniz bu sessionların sayfalar arasında nasıl taşınacağı ise o konuyu dert etmenize gerek yok. Oluşturduğunuz session'lar tarayıcının önbelleğinde saklanan public değişkenler gibilerdir. Bir sayfada oluşturduğunuz sessionu bir başka sayfada direk olarak çağırabilirsiniz. Yeter ki o sayfada da session_start(); satırı yer alsın.
 

 

kramper kramper <?php echo "hi world!" ?> Kullanıcı
  • Üyelik 29.01.2014
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılım &amp; SEO
  • Konum İzmir
  • Ad Soyad M** B**
  • Mesajlar 1196
  • Beğeniler 56 / 168
  • Ticaret 37, (%100)

Batuhan adlı üyeden alıntı

Demek istediğiniz bu sessionların sayfalar arasında nasıl taşınacağı ise o konuyu dert etmenize gerek yok. Oluşturduğunuz session'lar tarayıcının önbelleğinde saklanan public değişkenler gibilerdir. Bir sayfada oluşturduğunuz sessionu bir başka sayfada direk olarak çağırabilirsiniz. Yeter ki o sayfada da session_start(); satırı yer alsın.


Start satırı yer alacak tabii ki ben sessionla taşırken değişkeni nasıl tanımlayacağız onu sordum. Ve nasıl çağıracağız o değişkeni?
 

 

Batuhan Batuhan Kendine webmaster Kullanıcı
  • Üyelik 08.05.2011
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum Ankara
  • Ad Soyad B** B**
  • Mesajlar 3455
  • Beğeniler 783 / 1009
  • Ticaret 1, (%100)

kramper adlı üyeden alıntı

Start satırı yer alacak tabii ki ben sessionla taşırken değişkeni nasıl tanımlayacağız onu sordum. Ve nasıl çağıracağız o değişkeni?


Bir değişkeni sessiona aktarmak için:
$_SESSION['isim'] = $isim;

Sessiondaki bir değeri değişkene aktarmak için:
$adi = $_SESSION['isim'];
 

 

kramper kramper <?php echo "hi world!" ?> Kullanıcı
  • Üyelik 29.01.2014
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılım &amp; SEO
  • Konum İzmir
  • Ad Soyad M** B**
  • Mesajlar 1196
  • Beğeniler 56 / 168
  • Ticaret 37, (%100)

Batuhan adlı üyeden alıntı

Bir değişkeni sessiona aktarmak için:
$_SESSION['isim'] = $isim;

Sessiondaki bir değeri değişkene aktarmak için:
$adi = $_SESSION['isim'];


Çok teşekkür ederim.

Bir de şu konuma göre cevap yazarsanız çok makbule geçer. http://wmaraci.com/forum/php/radio-buttons-session-sorunum-147161.html
 

 

oguzhaner oguzhaner WM Aracı Kullanıcı
  • Üyelik 13.12.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Web/Desktop Coder
  • Konum İstanbul Avrupa
  • Ad Soyad O** E**
  • Mesajlar 210
  • Beğeniler 20 / 20
  • Ticaret 3, (%100)
Benim derdime de bir çare bulsak çok makbule geçer hocam :)
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al