Tekil Mesaj gösterimi
  #1
Alt 20.03.2007, 18:54
SeyFull@H
 
SeyFull@H - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: 29.07.2005
Mesajlar: 971
Teşekkür etti: 0
4 Teşekkür 2 Mesaja aldı
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- Kodu:
<?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();
    }
}
? >





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.
<?phpfunction 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- Kodu:
<?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 "kbdemir@mutasyon.net"//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- Kodu:
<?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($sorgu0"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'");
$sorgumysql_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- Kodu:
<?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 ){
                
$user_name mysql_result($sorgu0"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- Kodu:
<?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.
SeyFull@H isimli Üyemiz şuan sistemimize bağlı değildir. (Offline)   Alıntı ile Cevapla