A
B
C
Ç
D
E
F
G
Ğ
H
I
İ
J
K
L
M
N
O
P
R
S
Ş
T
U
Ü
V
Y
Z
Q
W
X
+ Ekle
Php ile Farklı Bir Oturum Yönetimi

Php ile Farklı Bir Oturum Yönetimi Php`nin Cookkie ve Session komutları dışında birde kendi oturum yönetimimizi kendimiz yapalım.

Mysql de “Oturum” adlı bir database açtığımızı kabul ediyorum.

Öncelikle database bilgilerimizi tutan bir dosya oluşturalım.


<?php
function Baglanti( ){
     $host = "localhost"; // Database adı veya İp
     $database = "oturum"; //database adı
     $user = "root"; // database kullanıcı adı
     $pass = ""; // database şifresi

     $baglanti=mysql_connect("$host", "$user", "$pass" ) or die ("veritabanı ile Bağlantı Kurulamadı" );
     mysql_select_db($database ) or die ("Veritabanı Seçilemedi" );
     if(mysql_error( ) )
     {
          echo mysql_error( );



     }
}
? >

Sonra oturum adlı databasemizin içine bir session bilgilerimizi tutan tablo birde kullanıcı bilgilerimizi tutan tablomuzu yapalım. Ben bunu install.php olarak hazırladım. Direk çalıştırırsanız kendisi kuracaktır.

<?php
include ("database.php" );
include ("fonksiyon.php" );
Baglanti( );

mysql_query("CREATE TABLE session (
id bigint(20 ) NOT NULL auto_increment,
username varchar(255 ) NOT NULL default "",
session_id varchar(255 ) NOT NULL default "",
timer varchar(25 ) NOT NULL default "",
PRIMARY KEY (id )
) TYPE=MyISAM;" );
mysql_query("CREATE TABLE users (
id bigint(20 ) NOT NULL auto_increment,
username varchar(255 ) NOT NULL default "",
pass varchar(255 ) NOT NULL default "",
eposta varchar(255 ) NOT NULL default "",
name varchar(255 ) NOT NULL default "",
PRIMARY KEY (id )
) TYPE=MyISAM;" );

if(mysql_error( ) )
{
     echo mysql_error( );
     echo "db error";
}else{
     echo "Veritabanı Başarıyla Oluşturuldu ";
}
$username = "Sijiero"; //Kullanıcı adınız
$pass = "e10adc3949ba59abbe56e057f20f883e"; //MD5 li hali "123456"
$eposta = "[email protected]
"; //eposta adresiniz
$name = "Kürşat Bünyamin Demir"; //isminiz

mysql_query("INSERT INTO `users` (`id`, `username`, `pass`, `eposta`, `name` ) VALUES
(null, "$username", "$pass", "$eposta", "$name" )" );
if(mysql_error( ) )
{
     echo mysql_error( );
     echo "user error";
}else{
     echo "Kullanıcı Oluşturuldu";
}
? >

Şimdi birde Fonksiyonlarımızı tutacağımız. Fonksiyon.php oluşturalım

<?php
function CreateSession($user_name ){
     global $session;
     $user_name;
     $timer = mktime( );
     $old_ses = mktime( );
     $sorgu = mysql_query("select session_id from session where username="$user_name" order by timer desc limit 0, 1" );
     $sonuc = mysql_num_rows($sorgu );
     if($sonuc>0 ){
          $old_ses = mysql_result($sorgu, 0, "session_id" );
     }
     $session = md5($user.$timer.$old_ses );
     return $session;
}
function KullaniciBilgisi($user_name ){
global $user_name, $Bilgi;
          $sonuc = mysql_query("SELECT * from users where username="$user_name"" );
$sorgu= mysql_fetch_array($sonuc );
$Bilgi = Array(
                     "username" => $sorgu["username"],
                     "eposta" => $sorgu["eposta"],
                     "name" => $sorgu["name"],
                      );
                     return $Bilgi;

}

function SessionKontrol($session ){
global $session, $user_name;
          $sorgu = mysql_query("select * from session where session_id="$session"" );                  
        $sonuc = mysql_num_rows($sorgu );       
     $hadi=mysql_fetch_array($sorgu );
     $user_name=$hadi["username"];       
     return $user_name; }
? >

Şimdi index.php mizi yapalım.

İndex php mizde kullanıcının login olacağı username , password kutucukları ve gönder butonu var.

Ve de,

<INPUT maxLength=18 name=Lusername size=12
<INPUT maxLength=8 name=Lpassword size=8      
Bunlarda username ve password bölümlerinin değerleri.

Form Actionda da gördüğünüz gibi buradan alınan veriyi index2.php ye gönderiyoruz. Şimdi index2.php mizi yapalım

<?php
include ("database.php" );
include ("fonksiyon.php" );
Baglanti( );
if(isset($_GET["action"] ) ) //herhangi bir de?er varsa
{
     if($_GET["action"]=="login" )
     {
          $user_name = $_POST["Lusername"];
        KullaniciBilgisi($user_name );
          $pass = MD5($_POST["Lpassword"] );
          $sorgu = mysql_query("select username, pass from users where username="$user_name" and pass="$pass"" );          
          $sonuc = mysql_num_rows($sorgu );       
          if($sonuc==0 ){
               echo ("Lütfen geçerli bir kullanıcı adı veya şifre girin\n" );
          }
          }
               if($sonuc > 0 ){
                    $user_name = mysql_result($sorgu, 0, "username" );
                    $istime = mktime( );
                    CreateSession($user_name );
                    mysql_query("insert into session values(null, "$user_name", "$session", "$istime" )" );
               }
          }
if(!$_GET["action"] ){
//hiçbir de?er yoksa
     echo ("Sistemde bir hata var." );
}

echo "<table width=\"36%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
<tr>
    <td><span class=\"text\">Sayın </span>";
    echo $Bilgi["name"];
   echo "<span class=\"text\">sayfaya hoş geldiniz... </span> </td>
</tr>
<tr>
    <td><a href=\"bilgi.php?sess=$session\">Kullanıcı Bilgisi </a></td>
</tr>
</table>";? >

index2.php mizi de oluşturduktan sonra. Kullanıcı bilgilerimizi alacağımız başka bir sayfa yapalım ki session modelimizi çalıştırabilelim. Bilgi.php

<?Php
include ("database.php" );
include ("fonksiyon.php" );
Baglanti( );
$session=$_GET["sess"];
SessionKontrol($session );
KullaniciBilgisi($user_name );
echo $Bilgi["username"];
echo $Bilgi["name"];
echo $Bilgi["eposta"];
? >

Görüldüğü üzere sayfalardan sayfalara geçiş yapıldıkça session kodu sizle beraber gezecektir. $_GET metoduyla bu kodu alıp bir fonksiyon içinde kontrol ettikten sonra bu kullanıcıya ait olan bilgileri çekebiliyoruz. Buda farklı bir oturum yönetimi sistemi olarak düşünülebilir. Tabi burada kullanılan session kodunun çözülmesi çok güç hem unix zamanı ve buna ilaveten username yi birleştirip bunların md5 değerini döndürüyor. Siz bunu daha da zor hale getirebilirsiniz.