Php ile Oturum Yönetimi
Üyelik sistemlerinin temelini oturum yönetimi oluşturur. İlk olarak sql adında veritabanımızı oluştururuz. veritabanımızı oluşturduktan sonra 3 sütunlu uyeler isimli tablomuzu oluşturuyoruz. Bunun için aşağıdaki sql sorguyu kullanıyoruz.
CREATE TABLE `uyeler` ( `uyeno` SMALLINT( 6 ) NOT NULL AUTO_INCREMENT , `uyead` VARCHAR( 20 ) NOT NULL , `uyesifre` VARCHAR( 50 ) NOT NULL , PRIMARY KEY ( `uyeno` ) ) TYPE = MYISAM ; INSERT INTO `uyeler` ( `uyeno` , `uyead` , `uyesifre` ) VALUES ( '', 'deneme', '8cb2237d0679ca88db6464eac60da96345513964' );
Üyemizin adı “deneme” şifresi ise “12345” tir. Üyemizin adını kodumuzda deneme olarak görüyoruz. Fakat şifremizi karışık rakamlar ve harfler şeklinde görüyoruz. Bu güvenliğimiz için alınmış bir önlemdir. Veri tabanına bizim iznimiz olmadan bir erişim olursa üyelerimizin şifreleri elde edilemez.
İlk olarak index.php sayfamızı oluşturalım:
<?php
session_start(); // oturumu başlatıyoruz
if(!isset($_SESSION['uye'])) { // eğer üye giriş yapmamış ise
/*
html komutlarını rahat bir şekilde yazmak için
php etiketini kapatıyoruz.
*/
// sayfanın içeriğini görmek için buradaki girişleri yapmalıdır.
?>
Bu sayfanın içeriğini görebilmek için üye girişi yapmalısınız.
<form action="giris.php" method="post">
<input type="text" size="20" name="uyead" id="uyead" /><br />
<input type="password" size="20" name="sifre" id="sifre" /><br />
<input type="submit" id="giris" value="Giriş Yap" />
</form>
<?php
exit();
} else {
/* üye giriş yapmışsa hoşgeldin diyelim */
echo "Hoşgeldiniz Değerli Üyemiz " . $_SESSION['uye'] . "";
/*çıkış yapmak için tıklayınız*/
echo 'Çıkış Yapmak İçin <a href="cikis.php">Tıklayın</a><br/>'; //cikis.php ye yönlendiriliyorsunuz
}
?>
Bu sayfa içeriği olarak ziyaretçimiz üye girişi yapmış ise hoş geldin diyoruz. Üye girişi yapmamış ise üye girişi yapması gerektiğini belirterek giriş yapması için üye giriş formumuzu gösteriyoruz.
Kodlarda yaptığımız açıklamalardan da yola çıkarak ilk olarak session_start(); ile oturum başlatıyoruz. Eğer mevcut bir oturum varsa oturumun devam etmesini sağlıyoruz. Sonra isset() fonksiyonu ile oturum değişkenimizi kontrol ediyoruz. Oturum yoksa üye giriş formu, varsa hoşgeldiniz diyerek oturumu başlatıyoruz.
Sırada giris.php sayfamızı oluşturmaya geldi. giris.php sayfamızı oluşturalım:<>
<?
session_start(); //oturum başlatılıyor
mysql_connect("localhost","root","") or die("mysqle bağlanılamıyor"); //root adlı kullanıcı yok ise mysqle bağlanamıyorsunuz
mysql_select_db("sql") or die("veritabanı seçilemiyor"); //veri tabanınızda böle bir veritabanı oluşturulmadığından veritabanı seçilemiyor
$uyead = strip_tags(mysql_real_escape_string($_POST['uyead'])); //üye adını kötü huylu kişilerden korumak için alınmış bir önlemdir(-->,",' bu tür saldırıları engellemek için)
$sifre = strip_tags(mysql_real_escape_string($_POST['sifre']));// şifreyi kötü huylu kişilerden korumak için alınmış bir önlemdir(<,>,",' bu tür saldırıları engellemek için)
if($sifre == "" || $uyead == "") {
echo "Lütfen Tüm Alanları Doldurun"; // eğer üye adı ve şifre boş işe boş alanları doldurunuz
} else {
$sifre = sha1($sifre); //şifreyi şifreliyor
$sql = mysql_query("select uyead from uyeler where uyead='$uyead' and uyesifre='$sifre'"); //girilen üye adı ve şifre ile veritabanındaki ad ile şifre eşleştiriliyor
$uyevarmi = mysql_num_rows($sql); // böyle bir üye varmı sorgusu yapılıyor
if($uyevarmi == 0) { //eğer eşleşmiyorsa böyle bir üye yok ise
echo "üyelik bilgileri bulunamadı, tekrar deneyin"; //üyelik bilgileri bulunamadı tekrar deneyin
} else { //eşleşiyorsa
$uyebilgi = mysql_fetch_assoc($sql); // veri tabanındaki bilgiler çözülür
$_SESSION['uye'] = $uyebilgi['uyead']; //oturum başlatılır
echo "admin sayfasına yönlendiriliyorsunuz";
echo "<script>location.href='admin.php';</script>"; // admin.php sayfasına yönlendiriliyorsunuz
} // if($uyevarmi == 0) kontrolü bitişi
} // if($sifre == "" || $uyead == "") kontrolü bitişi
?>
giris.php sayfamızda ilk olarak oturumun devam etmesi için session_start() kullanıyoruz. Daha sonra mysql bağlantımızı yaparak veritabanımızı seçiyoruz. Form alanından gelen değişkenleri strip_tags() ve mysql_real_escape_string() fonksiyonlarını kullanıyoruz. Strip_tags() fonksiyonu etiketlerini temizlemek için kullanılır. mysql_real_escape_string() ise mysql için zararlı olabilecek kodları filtreler. Güvenlik önlemlerinden sonra uyead ve sifre kontrollerini yaparız. Eksik alan varsa uyarı verir. Şifremiz veritabanında sha1() ile şifrelenmiş halde kayıtlı olduğundan şifremizi yine sha1() çevirmek zorundayız. Yoksa kullanıcı doğru şifre girse bile şifreler birbirinden farklı olacağından yanlış şifre girdi olarak kabul edilir. Şifremizi sha1’e çevirdikten sonra mysql sorgumuzu oluşturduk.
Daha sonra yeni bir sayfa oluşturarak admin.php olarak kaydederiz.içerik olarak:
<?
include("index.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
<title>Untitled Document</title>
</head>
<body>
BURASI ADMİN SAYFASI
</body>
</html>
Son adım olarak üyemizin çıkış yapabilmesi için cikis.php sayfamıza ihtiyacımız var.
<?php session_start(); unset($_SESSION['uye']); // oturumda olan değişkenimiz siliniyor session_destroy(); // oturumları siler echo "<script>location.href='index.php';</script>"; // index.php sayfasına yönlendiriliyorsunuz ?>
Böylelikle basit bir üyelik sistemi oluşturmuş olduk. Yardım almak için forumlarımızdan yararlanabilirsiniz. Kolay gelsin.

güzel anlatım ellerinize sağlık çok işime yaradı
rica ederim işinze yaradıysa ne mutlu bana
giris.php kısmında javascript yönlendirme kodunu nasıl dahil edeceğiz bilgi verebilirmisiniz
yonlendirme için
echo “location.href=’admin.php’;”;
yazılabilir…
eğer javascript engellenmişsede html destekli yonlendirme yapılabilir…
elinize sağlık güzel paylaşım birde bu paylaşıma md5 ile şifrenebilen üye kayıt sistemi eklenebilirse süper olur.
@tansu
bu da işin güzel tarafı… o yüzden sadece sitemize özel kodlama keyleri kulanmamız gerekiyor…
aslında şu an bende yeni oturum yönetimimle uğraşıyordum. bu yorum üstüne geldi. evet şifreleri md5 yaptıktan sonra, sha1 de yapıyorum, sonrada substr ile sadece belli yerlerini alıyorum. sanırsam artık şifreyi çözmek isteyenin eline kodlanmış şifremizi versek bile vatandaşlar uğraşmadan çözemezler
$sifre=substr(sha1(md5($sifre)),15,5); gibi…
bu arada eğer aynı sunucuda aynı programı kullanan birileri varsa bizim şifremize gerek kalmadan kendi sitelerinde açtıkları şifrelerlede sitemizde oturum açabiliyorlar
bunların ayrıntısını sonra anlatırım…
Merhaba,ben aşağıdaki kodlarda oturumu şifre sormadan direk mysql’e bağlanarak başlatmak istiyorum,nasıl yapabilirim.
—————————-
0) {
header(“Location: giris.php”);
}
$tablo_login = “SELECT * FROM login”;
$sorgu_login = mysql_query($tablo_login);
if(empty($HTTP_POST_VARS)) {
include “head.php”;
————————
@Marif
Merhabalar… Açıkcası sorunuzu tam olarak anlayamadım.
Eğer; oturum direk başlatmak istiyorsanız mysqle ihtiyacınız yok.
$_SESSION['oturum']=”oturum açtık”;
demeniz yeterlidir.
Farklı bir bilgi için yeniden sorarsanız size yardımcı olmaya çalışırım.
İyi günler…
Benim anlatmak istediğim mysqlim var.ama
——————-
ben direk kullanıcı adı ve şifre sormadan oturumu başlatmak istiyorum.aşağıdaki kodlar üzerinden yorum yaparsanız memnun olurum.
———————-
0) {
header(\”Location: giris.php\”);
}
$tablo_login = \”SELECT * FROM login\”;
$sorgu_login = mysql_query($tablo_login);
if(empty($HTTP_POST_VARS)) {
include \”head.php\”;
—————————-
@marif
Eğer kullanıcı adı ve şifre sormadan oturum başlatmak istiyorsanız mysqle bağlanmanızı gerek yok… aşağıdaki komutu yazdığınızda oturum açılmış olur.
$_SESSION['oturum']=”oturum açtık”;
Ama mysqle bağlanmadan nasıl oturum açılıyor.ben direk oturum açmadan haber ekle diyorum eklemiyor.Sanırım oturum açılmadığından eklemiyor olabilir mi?
Teşekkürler
@Marif
Oturum açmak ile habere kayıt eklemek farklı şeylerdir. Kullandığınız haber ekleme scripti içerisinde oturum kontrolü varsa mutlaka o oturum şartlarına uymanız gerekir.
benim sitemde anlattığım basit bir haber ekleme scripti var… onda oturum kontrolü gerekmiyor… ancak oturum kontrol için yer ayrılmış durumda inceleyebilirsiniz..
dediğim gibi haber eklemek ayrı bir şey, oturum kontrol etmek ayrı bir şey…
http://www.dahiweb.com/php-haber-scripti-2
günlerdir böyle bir örnek arıyorum. çok teşekkürler yazı için.
hocam çok teşekkürler. bu konu o kadar yardım etti ki bana. size attığım maillerdeki sorunu çözdüm sonunda.
@acipinarli2
sevindim… yardımcı olabildiysek ne mutlu bize…
Teşekkürler Güzel bir çalışma olmuş. Fakat admin girişi yapıldıktan sonra tekrar index.php dosyasına girmek istediğimde boş sayfa ile karşılaşıyorum. Ben direk giriş yapılmışmı kontrol edilip giriş yapılmışsa anasayfama yönlendirmek istiyorum. Nasıl yapabilirim.
@Cengizhan
i f(!isset($_SESSION['uye']))
{ // eğer üye giriş yapmamış ise kodlar burada olacak}
el se
{ec ho ” (b) script (k) location.href=’index.php’; (b) /script(k)”; }
aradaki boşlukları almayı ve (b) > (k) < yapmayı unutmayın…
Çok Teşekkürler Mustafa Bey.
PHP5 üzerinde bu kodlar sorunsuz çalışıyor mu arkadaşlar? Paylaştığınız için teşekkür ederim.
@havacılık haberleri
evet kodlar çalışıyor…