PHP ile Oturum Yönetimi

PHP'de oturum(session) yönetimini kullanarak, şifreleri md5 ile şifreleyerek bir kullanıcı paneli hazırlayacağız

Öncelikle merhaba arkadaşlar,
PHP ile oturum yönetimi benim kafama takılan bir konuydu. Forumda bu konuyu okuduktan sonra biraz uğraştım ve sonucu gördüm.

Not: Ben xampp serverda sorun yaşadığım için " @session_start(); " bu şekilde kullandım. O satırları sorun yaşamayanlar " session_start(); " bu şekilde kullanabilir.
Şimdi derse geçelim.

İlk önce uye_oturum adında bir veritaban oluştuyoruz. Ve id, k_adi, sifre olmak üzere 3 sütunlu tablomuzu uye adında oluşturuyoruz.


-- Tablo yapısı: `uye`

DROP TABLE IF EXISTS `uye`;

CREATE TABLE IF NOT EXISTS `uye` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`k_adi` varchar(50) COLLATE utf8_turkish_ci NOT NULL,

`sifre` varchar(50) COLLATE utf8_turkish_ci NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci AUTO_INCREMENT=1;



2. Adımda veritabanı bağlantımızı yapıyoruz.

<?php  

$dbhost 
"localhost";

$dbuser "root";

$dbpass "";

$dbdata "uye_oturum";



if (!@
mysql_connect($dbhost$dbuser$dbpass)) {

  die(
"Veritabanına bağlanılamadı.<br>HATA: ".mysql_error());

}



if (!@
mysql_select_db($dbdata)) {

  die(
"Veritabanı seçilemedi.<br>HATA: ".mysql_error());

}

?> ?>



3. Adımda ekle.php ile tablomuza kullanıcı adı ve şifresi ekliyoruz. Ben deneme olarak admin 123456 olarak ekliyorum.

<?php 

include('ayar.php');

?>

<form action="ekle.php?islem=kaydet" method="post">

<fieldset> 

        <legend>Kullanıcı Adı</legend>

        <input type="text" name="k_adi" id="k_adi"/>

</fieldset> 

<fieldset> 

        <legend>Şifre</legend>

        <input type="password" name="sifre" id="sifre" />

</fieldset> 

     <fieldset> 

             <legend>Ekle</legend>

              <input type="submit" value="Ekle" class="gonder"/>

     </fieldset>

</form>



if($_GET['islem'] == 'kaydet')

{    

    $k_adi = $_POST['k_adi']; // formdan gelen veriyi k_adi altında değişkene atıyoruz.

    $sifre = md5($_POST['sifre']); // formdan gelen veriyi md5 ile şifreliyoruz.

    $ekle = mysql_query("INSERT INTO uye (id, k_adi, sifre) VALUES ('', '$k_adi', '$sifre')");

    if($ekle) // veri ekleme işlemini yaptıktan sonra ekrana yazdırıyoruz.

    {

        echo "Veri ekleme işlemi başarıyla gerçekleşmiştir.";      

    }else {

        echo "Veri ekleme işlemi gerçekleşemedi.";

    }     

}

?> ?>



4. Adımda giris.php ile bir önceki adımda oluşturduğumuz kullanıcı adı ve şifre ile giriş yapıyoruz.

<?php 

@session_start();

include(
'ayar.php');

?>

 <form action="giris.php?islem=giris" method="post">

<fieldset> 

        <legend>Kullanıcı Adı</legend>

        <input type="text" name="k_adi" id="k_adi"/>

</fieldset> 

<fieldset> 

        <legend>Şifre</legend>

        <input type="password" name="sifre" id="sifre" />

</fieldset> 

     <fieldset> 

             <legend>Giriş</legend>

              <input type="submit" value="Giriş Yap"/>

     </fieldset>

</form>



   if($_GET['islem']=='giris')

    { 

            $uye = mysql_query("SELECT * FROM uye");

            $uye_cek = mysql_fetch_assoc($uye);

            $sifre= md5($_POST['sifre']); // formdan gelen veriyi şifreliyoruz

            $k_adi= $_POST['k_adi'];

            if (($k_adi == $uye_cek['k_adi']) and ($sifre == $uye_cek['sifre'])){ // formdan gelen verileri veritabanındaki veriler ile karşılaştırıyoruz doğru ise

                $_SESSION["giris"] = "true";

                $_SESSION["k_adi"] = $k_adi;

                $_SESSION["sifre"] = $sifre;

                echo 'Kullanıcı adı ve şifre doğru. Panele yönlendirliyorsunuz..';

                echo '<META HTTP-EQUIV="Refresh" CONTENT="2;URL=index.php">';

            }else{ // yanlış ise

                echo 'Kullanıcı Adı veya Şifre Yanlış.';    

            }

}

?> ?>



5. Adımda index.php ile yönetim panelini kontrol edeceğiz.

<?php 

@session_start();

if(!isset(
$_SESSION["giris"])){ // !isset ile login değişkenin durumunu kontrol ediyoruz eğer true değeri yok ise

    
echo 'Giriş yapmadan bu sayfayı göremessiniz.';

    echo 
'<META HTTP-EQUIV="Refresh" CONTENT="2;URL=giris.php">';

}else{ 
// else ile tek ihtimal kaldığı için true değeri var ise

?>

    Yönetim paneline hoşgeldiniz.

    <a href="cikis.php">Çıkış yap.</a>



}

?> ?>



6. Adımda çikis.php ile çıkış yapacağız.

<?php 

@session_start();

@
session_destroy(); // oturumu yok ediyoruz

echo 'Yönetim panelinden çıkış yaptınız.';

echo 
'<a href="giris.php">Giriş yap.</a>';

?> ?>


  • Etiketler;
LvntAyn LvntAyn
LeventAyan.Com
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

[code]Undefined index: islem in[/code] diye bir hata var
Tekrar tekrar deniyorum ama bi hata göremedim. Sorunu tam yazarsan iyi olucak.
Merhaba , bir sorum olacaktı üye ekleme , veritabanı kaydı , bağlanma noktalarında sorun oluşmadı yalnız , giriş işlemlerinde bir pürüz var , girişi yapamıyorum , form elemanları değişkenler ile ilgili bir sıkıntı yok neyden kaynaklanıyor olabilir ?
Tam olarak ekrana verdiği çıktı ne
Sorunu çözdüm if($_GET['islem']=='giris') { $uye = mysql_query("SELECT * FROM uye"); benim veritabanındaki tablo ismim de "giris" di if koşulundaki giris ile sanırım bi sorun yarattı. Düzellttim , çalıştı bu seferde veri tanı ile ilgili kafasına estiği zaman veri ekleme sorunu yaşıyorum ama o hususda da bir yanlışım vardır bir yerlerde ders için teşekkürler.
Rica ederim iyi çalışmalar.
Selamın Aleyküm Üstad bende şöyle bir hata veriyor ; [code]Notice: Undefined index: islem in C:xampphtdocshtmlAdmingiris.php on line 56[/code] ben sana Formun kodunuda yazayım bi bakarmısın nerde yanlış yapmısım [code]<?php @session_start(); include('baglan.php'); ?> <form action="giris.php?islem=giris" method="post"> <table> <tr> <td width="130" height="40"valign="top"><p>Kullanıcı Adı<span>:</span></p></td> <td width="220" align="center"><input name="Kadi" type="text" /></td> </tr> <tr> <td width="130" height="40" valign="top"><p>Şifre<span>:</span></p></td> <td width="220" align="center"><input name="KSifre" type="password" /></td> </tr> <tr> <td width="130" height="40" valign="top" colspan="2" align="right"><input type='submit' class="button" value='Giriş' /></td> </tr> </table> </form>[/code] Buraya Sığmadığı için </form> kısmından sonraki kodu altta yeni bir yoruma yazıcam...
[code]Sorunlu Kodun Devamı... <?php if($_GET['islem']=='giris') { $uye = mysql_query("SELECT * FROM admin"); $uye_cek = mysql_fetch_assoc($uye); $sifre= md5($_POST['Ksifre']); // formdan gelen veriyi şifreliyoruz $k_adi= $_POST['Kadi']; if (($k_adi == $uye_cek['Kadi']) and ($sifre == $uye_cek['Ksifre'])){ // formdan gelen verileri veritabanındaki veriler ile karşılaştırıyoruz doğru ise $_SESSION["giris"] = "true"; $_SESSION["Kadi"] = $k_adi; $_SESSION["Ksifre"] = $sifre; echo 'Kullanıcı adı ve şifre doğru. Panele yönlendirliyorsunuz..'; echo '<META HTTP-EQUIV="Refresh" CONTENT="2;URL=index.php">'; } else{ // yanlış ise echo 'Kullanıcı Adı veya Şifre Yanlış.'; echo '<META HTTP-EQUIV="Refresh" CONTENT="2;URL=giris.php">'; } } ?>[/code] Şimdiden Çok Saol Üstad

Yukarı Git