PHP+MySQL sistemler için üye giriş-çıkış-kayıt

Dikkat: Bu yazının yazılma tarihinin üzerinden en az 60 gün geçmiş. İçerisindeki bilgiler güncelliğini yitirmiş olabilir. Yorumları ve güncellemeleri göz önünde bulundurarak yazıyı takip ediniz.

Neden bahsediyorum ? :-)


Artık neredeyse her sitede olan üyelik, bazı web uygulamaları için vazgeçilmez oldu. Çünkü üyelere ait özelleştirilmiş siteler her zaman daha popülerleşti. Bunu bir gerekli yanı da sistem güvenliği ve hizmet takibi. Mesela yaptığınız projede yapılacak saldırılarda 1-1 KİŞİ tespiti yapabilmenizi sağlayan mekanizma da aslında üye takibidir. Bazı projelerde ise hizmetinizi sınırlamak istediğiniz insanlar olabilir. Üye statü'leri izinleri veya kayıta kapalı (veya davetli) üyelikler ile hizmetinizi hedef kitlene sınırlayabilirsiniz.
Neyse üyeliğin yararlarını geçelim. Buraya öğrenmeye geldik :-)

Neye ihtiyacımız var?

Tabiki bir veritabanına, mysql kullandığımızı varsayarak kod örnekleyeceğim. Ama postgresql fln kullanan arkadaşlar da var ise bu dökümandaki algoritmayı izleyerek kolayca kendileri de kod yazabilirler. Aşağıda veritabanında kullanacağımız üye tablosuna ait veri yapısını import ederek kolayca oluşturabileceğiniz SQL sorgusunu koyuyorum, bu sorgudan hangi alanlar ve özelliklerinin neler olduğunu da kolayca görebilirsiniz.
CREATE TABLE `uyeler` (
  `no` int(10) NOT NULL auto_increment,
  `kadi` varchar(50) NOT NULL default '',
  `sifre` varchar(100) NOT NULL default '',
  `izin` varchar(20) NOT NULL default '',
  `adi` varchar(100) default NULL,
  `eposta` varchar(255) default NULL,
  PRIMARY KEY  (`no`)
) ENGINE=MyISAM AUTO_INCREMENT=1 ;
gördüğünüz gibi basitçe 6 alanım var, burada no, izin, adi ve eposta alanları sistemin düzgün çalışması için şart olan alanlar değiller fakat üyeniz hakkında küçük bir bilgi tutmanızı sağlar. Eğer isterseniz buradaki alan sayınızı artırarak yeni üye detayları ekleyebilirsiniz. Mesela MSN adresi, web sitesi, ev adresi, cep telefonu, kimlik bilgileri mesleği falan fişman.

Şimdilik kayıtlı bir kullanıcının giriş yapmasını vae sayfalarda kullanının giriş yapıp yapmadığını yani oturumunu kontrol etmeyi göstereceğim. Bildiğiniz gibi kayıt işlemi basitçe bir formdan mysql'e veri kaydetme işlemi.. Buna dökümanın sonunda değineceğim.

Giriş işlemi

Giriş işlemini yapcağımız bir form hazırlayın. Kullanıcı adı ve şifre giriş alanları olacak olan 2 input'luk bir form. “kadi” ve “sifre” gibi pratik alan adları belirlerseniz işiniz kolaylaşır. Bu formu giris.php diye bir işlem sayfanıza post methodu ile göndereceğiz. Şuna benzer bir form olacaktır :
<form name="giris" action="giris.php" method="post">

 <table cellpadding="8" cellspacing="0" align="center">
   <tr>
     <td width="100">Kullanıcı Adı</td>
     <td><input type="text" name="kadi"></td>
   </tr>
   <tr>
     <td width="100">Şifre</td>
     <td><input type="password" name="sifre"></td>
   </tr>
   <tr>
     <td colspan="2" align="right">
       <input type="submit" value="Giriş">
     </td>
   </tr>
 </table>

</form>
Giriş işlemi sayfamızın (giris.php) koduna bakacak olursak :
<?php

# mysql baglantisi, sesion_start yapilmis varsayiyoruz

# bilgiler
  $kadi  = $_POST["kadi"];
  $sifre = $_POST["sifre"];

# kullanici bilgisi alalim
  $sorgu = mysql_query("select sifre from uyeler where kadi = '".$kadi."'");
  if( mysql_num_rows($sorgu) != 1 ){
    print '<script>alert("Kullanıcı bulunamadı!");history.back(-1);</script>';
    exit;
  }else{
    # veriyi alıyoruz
      $bilgi = mysql_fetch_assoc($sorgu);
  }

# sifre eslestirmesi
  if( md5( trim($sifre) ) != $bilgi["sifre"] ){
    print '<script>alert("Yanlış şifre girdiniz!");history.back(-1);</script>';
    exit;
  }

# başarılı giriş yapıldı
# oturuma kaydedip anasayfaya gidelim
  $_SESSION["giris"] = md5( "kullanic_oturum_" . md5( $bilgi["sifre"] ) . "_ds785667f5e67w423yjgty" );
  $_SESSION["kadi"]  = $kadi;

?>
<script>
  alert("Başarıyla giriş yaptınız! Şimdi anasayfaya yönlendiriliyorsunuz.");
  window.top.location = './';
</script>
gördüğünüz gibi kontrol kısmında çok karmaşık bir kod yok. MySQL'den kullanıcıya ait veri alıyoruz. Eğer gelen kayıt kümesinin boyutu 1 değilse üye adı yok demektir. Hata veriyoruz. Eğer 1 ise kayıt kümesini $bilgi dizisine alıyoruz. Alt kısımda da girilen şifrenin md5'ini veritabanındaki string ile karşılaştırıyoruz. Çünkü veritabanında şifrelerimizi md5'leyip saklıyoruz. Çünkü birisi veritabanımızı araklarsa md5'i çözemesin diye. Üye bilgilerinin güvenliğini sağlamış oluyoruz.

En altta ise giriş kontrolü için oturuma 2 değişken attım birisi şifre ile oluşturulmuş karışık bir cümlenin md5'li hali. Bunu giriş kontrolünde oturumda olup olmadığını kontrol etmek için kullanacağız. Sadece kullanıcı adı kullanmamamın nedeni ise sunucu yönetimindeki birinin oturumları oynayıp giriş yapmış kullanıcı hakkını değiştirememesi için oldukça basit bir engel o kadar. İsterseniz daha karmaşık kriptografik anahtarlar da oluşturabilirsiniz. Bu sitede sadece anahtar tutulur mesela. Oturum bilgileri veritabanında saklanır.. Bu tarz gelişmiş şeyler için de beyin fırtınası yapıp güzel şeyler yazabilirsiniz.

Şimdi giriş yapıldıktan sonra anasayfa'ya yönlendirildi üye, peki biz sayfalarımızda oturumu gezen misafirin üye olup olmadığını nasıl anlayacağız?

Üye kontrolü, üye oturumu yönetimi

Benim site geliştirme yoluma göre ilk önce sitenin statik sayfasını hazırlayıp parçalardık hatırlarsanız. Ve her işlem/modül dosyamızın başında mysql.php veya ayar.php gibi bir include edilen dosyamız vardır. İşte buna giris_kontrol.php diye bir dosya daha ekleyin. Yani; üye'lere ait bilgileri alacağınız sayfalarda (üye kontrolü, üye alanları fln) giris_kontrol.php diye bir php include ettirin. Her sayfanıza. giris_kontrol.php dosyamızın kodunu verip açıklayayım :
<?php

# uye oturum degiskenleri
  $giris_yapilmis = false;
  $uye = false;

# kontrol ederek bilgileri dogrulayalim
  if( !empty($_SESSION["giris"]) && !empty($_SESSION["kadi"]) ){
  
    # kulanici bilgisini alalim
      $sorgu = mysql_query("select * from uyeler where kadi='".$_SESSION["kadi"]."'");
      if( mysql_num_rows($sorgu) == 1 ){
      
        $uye = mysql_fetch_assoc($sorgu);
        # anahtar kontrol
          if( $_SESSION["giris"]  ==  md5( "kullanic_oturum_" . md5( $uye["sifre"] ) . "_ds785667f5e67w423yjgty" ) ){
            $giris_yapilmis = true;
          }else{
            # giris yanlis. $uye'yi silelim
            $uye = false;
          }
      }
  }

?>
Tabiki bu sayfadan önce mysql ve ayar dosyanızın fln include edildiğini ve session_start yapılmış olduğunu düşünüyoruz çünkü bu sayfayı her sayfanın başında include ediyoruz.

Oturumdaki kadi değişkeni boş değilse veritabanından bilgileri alıyoruz. Eğer kullanıcı yoksa oturum açılmıyor zaten. Eğer şifre ile oluşturulan karışık cümlenin md5'i oturumdaki giris degişkeninin içeriğine eşitse bizim mantıksal koyduğumuz anahtar da doğrudur. Şimdi “giris_yapilmis” değişkenini true yapıyoruz ve $uye dizisine mysql sonuç kümesini atıyoruz. Neden bunu yapıyoruz çünkü, sayfalarımızda doğrudan $giris_yapilmis'i if yapılarımızda giriş yapılmış yapılmamış olduğunu hızlıca alabileceğiz. Mesela üyelere özel bir sayfanız var ise bu sayfanın başında;
if( !$giris_yapilmis ){
  print 'Bu sayfa üyelere özeldir! Lütfen giriş yapın!';
  exit;
}
diyerek giriş yapmamış kullanıcıların o sayfaya erişimini engelleyebilirsiniz.
Eğer üyeye ait bilgilere ihtiyacınız var ise zaten doğrudan $uye dizisinden alabilirsiniz.
Mesela giriş formunun yerine Hoşgeldin X dedirtmek için ile X yerine kullanıcı adını basabilirsiniz.

Kayıt işlemi

Kayıt işleminin mysql'e veri kaydetmek dışında bir kısmı olmadığından örneklemeye gerek duymuyorum. Sadece şifreyi veritabanına md5 fonksiyonundan geçirip kaydediyoruz. Onun dışındaki kontroller ve veri kayıdını yapamayacağınızı düşünmüyorum.


Hazırlayan : Mehmet Fatih YILDIZ

Yorumlar

Üye Resmi Engin
19 Ocak Cumartesi ´08 22:57
Peki üyeler kendi aralarında mesjalaşması için gereken koduda paylaşabilirmisiniz?
14 Haziran Cumartesi ´08 00:28
İstersen istediğin siteyi yapsın, sana direk öyle versin?

Fatih abi, yine döktürmüşün =) yeni baktım buraya.. Gayet güzel olmuş..
Üye Resmi NeTHaLiL
25 Ağustos Pazartesi ´08 13:26
Site içi mesajlaşma için sadece kodu yapıştırmayla bitseydi herşey kolay olurdu   :-)
Bu arada Session kullanmanız çok iyi çoğu üyelik sistemleri Cookie (Çerez) kullanıyor hala...
Üye Resmi Taner Macit
27 Eylül Cumartesi ´08 01:31
Mesela sadece üye olanların görebileceği bir sayfanın son hali bu durumda ne oluyor anlayamadım.Yani üye olanlar neye ulaşıyor bu durumda
Üye Resmi Forum
8 Ekim Çarşamba ´08 23:53
Tskler detayLı bir anLatım oLmuŞ..
Üye Resmi s.akcan
22 Ekim Çarşamba ´08 12:54
Arkadaş şifreli giriş anlatımın güzel, ellerine, emeğine, bilgine ve bileğine sağlık. Yalnız buradaki şifrelerin çalınması riskini en aza düşüren md5 tekniğindeki veriler.
MD5 ile üretilen karakterler Sistem tarafından mı üretiliyor, yoksa site sahibi tarafından karmaşık karakterler mi oluşturuluyor?
Burdaki sql dokumaninda, kadi ve sifre alanlarında BINARY kullanılsa olmaz mı?

CREATE TABLE `uyeler` (
  `no` int(10) NOT NULL AUTO_INCREMENT,
  `kadi` varchar(50) binary NOT NULL DEFAULT '',
  `sifre` varchar(100) binary NOT NULL DEFAULT '',
  `izin` varchar(20) NOT NULL DEFAULT '',
  `adi` varchar(100) DEFAULT NULL,
  `eposta` varchar(255) DEFAULT NULL,
  PRIMARY KEY  (`no`)
) TYPE=MyISAM AUTO_INCREMENT = 1;
22 Ekim Çarşamba ´08 22:19
md5 php'de hazır bir fonksiyondur diyebiliriz.. $sifre_md5=md5($sifre); yaparsın.. Veritabanına şifrenin md5'li halini kaydedersin, olur biter... Yani bu çeviri php tarafından yapılıyor.
Üye Resmi --
24 Ekim Cuma ´08 13:50
güzelll.
Üye Resmi Süleyman Özbek
2 Kasım Pazar ´08 13:45
selamlar,
benim nacizane bir sorum olacaktı.
şimdi :

      $sorgu = mysql_query("select sutun1 sutun2 sutun3 from tablo_adi where sutun1='".$_POST["sutun1"].", sutun2="'.$_POST["sutun2"].", sutun3='".$_POST["sutun3"]."'");
      if( mysql_num_rows($sorgu) == 1 ){
        $uye = mysql_fetch_assoc($sorgu);

şeklinde kod parçam var yapmak istediğim ise veri tabanının tablosundan istediğim sütunları seçtirmek bunları html formdan girilen verilerle karşılaştırmak eğer veritabanında aynı veriler varsa hata mesajı almak yoksa veriyi kaydetmek ama sanırım syntax da bir sorun var istediğim şekilde çalışmıyor. sytax konusunda yardımcı olursanız sevinirim. şimdiden teşekkürler.
2 Kasım Pazar ´08 22:04
$sorgu = mysql_query("select sutun1 sutun2 sutun3 from tablo_adi where sutun1='".$_POST["sutun1"].", sutun2="'.$_POST["sutun2"].", sutun3='".$_POST["sutun3"]."'");

bunu

$sorgu = mysql_query("SELECT sutun1, sutun2, sutun3 FROM tablo_adi WHERE sutun1='".$_POST["sutun1"]." AND sutun2="'.$_POST["sutun2"]." AND sutun3='".$_POST["sutun3"]."'");
2 Kasım Pazar ´08 22:04
aaah... Düzeltme olanağım yok.. onu 2. gösterdiğim şekilde yazarsan sorun çıkacağını zannetmiyorum..
2 Kasım Pazar ´08 22:38
post ile aldığın verileri safyabaşında

$sutun1 = $_POST["sutun"];

şeklinde kısa değişken olarak  alırsan böyle uzun sorgularda hata ayıklaman daha kolay olur bence.
Üye Resmi Sinan Pos
14 Kasım Cuma ´08 22:27
Merhaba, teşekkür ederim örneğiniz için.
Sql injection için ne yapabiliriz? Md5'lediğimiz zaman çözülüyor mu yoksa sorun?
15 Kasım Cumartesi ´08 15:19
PEAR kullanabilirsin.Dökümanlar kısmında bununla ile ilgili bir makale var.
Üye Resmi Sinan Pos
17 Kasım Pazartesi ´08 12:21
php4 ile pear kullanabiliyormuyuz? paketlerinin server'a kurulu olması gerekli sanırım. Sunucumda pear paketleri yok malesef. Html_special_chars gibi bir fonksiyon vardı. Google'da aradım lakin tatmin edici bir dökümana erişemedim.
17 Kasım Pazartesi ´08 19:56
Bildiğim kadarıyla php4 ten itibaren kullanılabiliyor. Paket şeklinde kullanmak zorunda değilsin. Kullanmak istediğin paketleri sunucunda bir klasöre atıp set_location_path ile o klasörü ayarlayarak kullanabilirsin. Dökümanlar kısmındaki makalenin yorumlarında mfyz bunun örneğini verdi. Ordan bakabilirsin.
19 Kasım Çarşamba ´08 20:40
php4 bağımlılığı ile çalışan eklentilerde sorunlar yaşarsın ama evet kullanabilirsin. ayrıca php4 eskimedi, yani halen popüler şekilde kullanılıyor sunucularda.
Üye Resmi Barış
26 Kasım Çarşamba ´08 09:08
cok güzel olmus saolun
Üye Resmi dfgdfg
22 Ocak Perşembe ´09 11:24
dont play tennis with my pennis diyorum yani
Üye Resmi sedat
4 Şubat Çarşamba ´09 16:30
arkadaslar ben donem odevi için bi site yapıcam bunda üyelikde olucak üyelik için php dosyalarım hazır ama veritabanı eksik veritabanı buldum ama uzantısı ne olucak ben ne olarak kaydedicem mesela index.php olarak kaydediyom ya mysql dosyasının uzantısı ne olucak ben bunu bulamadım yardım ederseniz sevinirim.
5 Şubat Perşembe ´09 00:52
Hazır elinde üyelik sys için php kod var sanırım sql dosyasını database.sql olarak kaydedip Cpanel>PhpMyAdmin>İçeri Akatardan pcndeki sql dosyasını upload etceksin sonrada config.php settings.php database.php artık database bilğileini çağıran dosyan hanigi ise ona DB adressi, Adı, Kullanıcı Adı,Şifresini Kaydedeceksin.

İçeri Akatarmayı Yapamadıysan PhpMyadmin den SQL Sorgusuna Tıklayıp SQL kodlarını yapışturup çalıştır de.
Plesk Panelde de aynı PhpMyadmin e girceksin
Üye Resmi Sohbet
16 Şubat Pazartesi ´09 01:58
Harika bir anlatım müdaviminiz olacağım sanırım. Sizi izlemeye devam ediyorum ve yukarıda verdiğiniz kodların testlerini şu an yapmaktayım. Çok çok teşekkürler üstad.
Üye Resmi viaria
15 Nisan Çarşamba ´09 09:35
primery key olayı doğrumu en üstte
Üye Resmi fatih duygun
23 Nisan Perşembe ´09 14:38
meraba arkadaşlar ben html olarak bi anasayfa yaptım o anasayfaya php kodlarıyla yapılmış bi kayıt işlemi lazım yani üye olup olduktan sonra giriş yapıp anasayfaya gircegiz acaba nasıl yapabiliriz eger bilen varsa bana yardımcı olabilirmisin lütfen biraz acilde
Üye Resmi Türkiye ilan
18 Haziran Perşembe ´09 10:16
elinize sağlık. çok işime yaradı.
Üye Resmi Gökhan
6 Temmuz Pazartesi ´09 15:44
Yani md5 uygulanmış bir metni, kötü niyetli biri alıp çözemez mi? Örneğin mfyz'yi md5'e göre şifrelediğimizde bize 'sda5da2s23r' değerini veriyor diyelim. Biri bu 'sda5da2s23r' değerini alıp ters bir md5 işlemi yürütürse yine mfyz'ye ulaşamaz mı? Yoksa md5 oluşturma işlemi sadece o sayfaya özgü bir şey midir? Şifreleme ve çözme algoritması sürekli değişiyor mu? Nedir bu işin aslı?

Bir de bu gibi üye giriş-çıkış işlemlerinde güvenlik için neler yapılabilir? Bahsettiğiniz beyin fırtınasına 1-2 örnek verebilir misiniz?
7 Temmuz Salı ´09 09:49
md5 matematiksel olarak geri çevrilemez bir algoritmaya sahip. Yani aslında "sda5da2s23r" bunu geri çevirmek gibi bir method yoktur.

Fakat olabilecek her türlü şifre-sel kelimeyi, mesela :
1234
12345
deneme123
fatih123
mfyz
mfyz123
mfyz000
fatihyildiz
fatih.yildiz
fatihyildiz123
...
bunun gibi şifreleri md5'e çevirip bir veritabanına kaydediyorlar. Ama bu alternatiflerin rakamı milyonlarca hatta milyarlarca alternatif şifreden oluşuyor.

md5'i kırdığını iddia eden yerler bu veritabanlarında sizin verdiğiniz o "sda5da2s23r" şifresini tarayıp aslında neyin md5'i olduğunu bulabiliyorlar. Tabiki birkaç milyar şifre içinden biri tutabiliyor.
 
Yani pratikte olan şey : seçebileceğiniz basit şifrelerin tahmin edilebiliyor olduğudur. Yoksa algoritmik olarak md5'i geri çeviremezsiniz.
Üye Resmi Gökhan
7 Temmuz Salı ´09 11:18
Tekrar teşekkür ederim. O halde rahatlıkla bunları kayıt edebiliriz. Aynı şekilde XML dosyasında bir alanda gözükmesinde de sorun yoktur o halde. Peki md5 özetin bir kere de sha1 özetini alsak?   :-)  Yoksa asıl güvenlik burada değil, kullanıcıdan gelen verilerin iyi süzülmesi ve dizin güvenliğinde midir?
Bir de veritabanında (MySQL'de bu özellik var mı?) password tipinde alanlar oluyor. Bunların string'ten farkı ne oluyor acaba? Özel bir şekilde mi tutuyor verileri?
Üye Resmi qplot
13 Ağustos Perşembe ´09 21:18
pekı benım bı sorum olucak ben dıyelımkı bu kodlarla yapılmıs bıır sıteye uye oldum sonra profıl guncelleme sayfasına grdım ve textbox ları ornek alarak kendım bı form yaptım ve atıyorum admının id sını atayıp sorma actıons yolunada sıenın guncelleme sayfasını verdım ve localhostumda calıstırıp gonder tusuna bastım form u dolruup ee ne oldu admının adını sıfresını vs ne varsa degıstırdım bunu nasıl engellerız
Üye Resmi taner şenel
20 Eylül Pazar ´09 15:03
giris_kontrol.php sayfasını include ettiğim sayfa üye girişi yapılmasa da görünüyor. acaba nerde hata yapıyor olabilirim teşekkürler...
Üye Resmi program
10 Ocak Pazar ´10 23:48
Selamun Aleykum...
Hocam çok güzel bir paylaşım yapmışsınız ancak benim sormam gereken bir konu var bununla bağlantılı.

şimdi biz uye girişi yaptırdık ya

git?id=1  mesela bu şekilde güncelleme paneline girdi ve kendi bilgileri geldi update dedi güncelledi...

ama adam kendi oturumunda iken git?id=2 dediğinde bu sefer diğer uyenin bilgileri geliyor   :-(

ya bu belki basit bir sorun ama çözemedim. Yani kendi panelinde iken diğer üyenin paneline ulaşıyor nasıl aşarım bunu ?
12 Ocak Salı ´10 03:30
Dosya başında giriş yapmış olan kullanıcı id'si ile parametre olarak gelen id'yi karşılaştırman gerekiyor. Eğer farklı ise hata verdirmen gerekir.

Böyle bir şey için genel bir dosya ile parametrik çalışmak yerine bu profil dosyasında id'yi parametreden değil, oturuma yazdığınız "giriş yapmış kullanıcı id"sinden alıp veritabanından o şekilde sorgulatmanız gerekir.
Üye Resmi bahri
4 Şubat Perşembe ´10 00:20
teşekrürler xD
Üye Resmi memet aslan
21 Mart Pazar ´10 18:07
hocam uye sayfası hazırladık ornegin uyede giris yaptı uye sayafasında giris yapan uyenin bilgilerini nasıl sayfaya basabiliriz. yardımcı olurmusnuz
28 Mart Pazar ´10 08:06
iyi gunler hocam
Ben mezuniyet projem icin web sayfası olusturuyorum.konu is bulma
sitesi.veritabanımda uyeler adında bir tablom var ve o uyeye ait ozgecmis tablosu yanlız
ozgecmis tablosunada ait egitim bilgileri,kariyer hedefi,sertifikalar,beceriler,
hobiler....vb gib 8 tablom daha var.Bu toplaları nasıl birbiryile iliskilendiririm yani
uye giris yaptıktan sonra kendisine ait ozgecmis bilgilerini gormesini saglamam gerek.Artı
ozgecmisin altındaki tablolarida ozgecmisle ilsikilendirmem gerek.Sanırım ben işi cok
karıstırdım bunu halldebilecegim daha pratik bir  yol varmı.Birde tablolar icin form olusturmam gerek uye bilgilerini girsin diye.ben bu kadar
tabloya nasıl bilgi girebilirim.Soyle bisey dusunuyorum.Ilk adım ozgecmis adi girdiktan
sonra ileri tıklayım egitim bilgilerine gelsin tekrar ileri kariyer hedefi diye ilerlesin
en sonra kaydet bitir olsun.Buna benzer siteler bu sekilde yapmıslar ama ben nasıl
yapabilirm yardımıcı olurmusunuz( MYSQL de birbiryle iliskili tablo olusturmasını
bilmiyorum.FK,Left,Join ve References kullanmasını bilmiyorum.Mezuniyet projem oldugu icin fazla
zaman yok umarım yardımlarınızı esirgemezsiniz.İyi calısmlar
19 Nisan Pazartesi ´10 15:55
Teşekkürler .
23 Nisan Cuma ´10 20:57
Bilgi ve tecrübelerinizi bizlere açmanıza, bunun için emek ve zaman sarfetmenize teşekkür ederim.
Sitemdeki probleme yol gösterebilir misiniz?
Problem, site frarklı alt domainlerde çalışan scriptlerden oluşuyor,
herhangi bir alt domainde giriş yapan üye( örn. emlak.bursailan.com) oto alt domaininde tanınmıyor.
işlem session ile yapılıyor.
Teşekkür ederim
24 Nisan Cumartesi ´10 01:39
Bunu doğrudan bu dökümanda anlatılan methodlarla yapamazsınız. Crossdomain cookie veya session taşıyamazsınız. Bunun için openid veya oauth gibi kullanılan teknikleri uygulayabilir veya cross domain receiver methodları ile bunu yapabilirsiniz.

Fakat bu konuda benim de çok net bilgim yok. Ben de çok net yönlendiremem sizi.
Üye Resmi aylin kurt
24 Nisan Cumartesi ´10 11:32
anlatımınız süper ama benm şifre eşlestirmesinde kalıo hep yanliş şifre dio sürekli ne yapmam gerekio?? yardımcı olursanız sefinirim
Üye Resmi hayal
29 Nisan Perşembe ´10 21:21
SQL sorgusu:

CREATE TABLE  `uyeler`.`uyeler` (

`no` INT( 10 ) NOT NULL DEFAULT NULL AUTO_INCREMENT PRIMARY KEY ,
`kadi` VARCHAR( 50 ) NOT NULL DEFAULT NULL ,
`sifre` VARCHAR( 100 ) NOT NULL DEFAULT NULL ,
`izin` VARCHAR( 20 ) NOT NULL DEFAULT NULL ,
`adi` VARCHAR( 100 ) NOT NULL DEFAULT NULL ,
`eposta` VARCHAR( 255 ) NOT NULL DEFAULT NULL
) ENGINE = MYISAM ;

MySQL çıktısı:

&#35;1067 - Invalid default value for 'kadi' ya of hep hata veriyo ya bu bi yardm edin arkadaşalar önemli
Üye Resmi Murat Ferdi
2 Mayıs Pazar ´10 16:33
CREATE TABLE  `uyeler`.`uyeler` (

`no` INT( 10 ) NOT NULL DEFAULT NULL AUTO_INCREMENT PRIMARY KEY ,
`kadi` VARCHAR( 50 ) NOT NULL ,
`sifre` VARCHAR( 100 ) NOT NULL  ,
`izin` VARCHAR( 20 ) NOT NULL ,
`adi` VARCHAR( 100 ) NOT NULL ,
`eposta` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM ;

Bu şekilde dene bakalım.
Üye Resmi Cüneyt
5 Mayıs Çarşamba ´10 01:10
$_SESSION["giris"] = md5( "kullanic_oturum_" . md5( $bilgi["sifre"] ) . "_ds785667f5e67w423yjgty" )

Bu kısımda _ds ile başlayan kısıma ben ne yazacağım?
6 Mayıs Perşembe ´10 10:24
Buradaki md5 içerisindeki string tamamen karışık bir md5 çıktısı için yapılmıştır. Normal parametrelerle, sadece kullanıcı şifresiyle veya sadece statik bir keyword ile hareket etmemek için yapılmıştır. Burada dikkat edeceğiniz şey bu string'i ileride tekrar üretebilecek şekilde statik birşey olmasıdır. Yani içine tarih veya o anki sessionid gibi değerler yazmayın.

Çünkü bu md5'i tekrar üretip bu token'ı kontrol için kullanacaksınız.
Üye Resmi Cüneyt
7 Mayıs Cuma ´10 23:45
Cevabınız için teşekkür ederim, peki kullanıcı daha önceden kayıt olmuşsa ve aynı isimle tekrar birisi kayıt olunca "böyle bir kullanıcı var" cinsinden uyarı veren kodları nasıl yazabiliriz?
8 Mayıs Cumartesi ´10 12:34
Daha önceden öyle bir üyenin kayıt olup olmadığını kontrol ettirmek için bir değişkeni sorguya eşitlersin. Sonra satır sayısını alıp if le kontrol ettirirsin. Neyse koda geçeyim daha iyi anlaşılır inşAllah.

Aşağıdaki kodda $kullaniciadi adlı bir değişken olduğunu varsayıyorum ve tabloda da kullaniciadi adlı bir sütun olduğunu varsayıyorum. Bu sütundan da değişkeni sorgulatıyorum.
<?php
$varmi=mysql_query(" SELECT * FROM uyeler WHERE kullaniciadi='$kullaniciadi' ");
/* Yukarıdaki kodda uyeler adlı tablodan kullaniciadi sütunundan $kullaniciadi değişkenine eşit olan satırları seçiyoruz. */

$kayitsayisi=mysql_num_rows($varmi);
/* Yukarıdaki kodla da daha önceden tablodan seçtiğimiz satır sayısını buluyoruz. Eğer daha önceden $kullaniciadi değişkeninin içeriğindeki değerle üye olunmuşsa satır sayısı en az 1 olacaktır. Satır sayısının 1 veya daha fazla olması demek bu kullanıcı adının alındığı anlamına gelmektedir */

if($kayitsayisi>0){
echo "Bu kullanıcı adı daha öncede alınmış";
}else{
/* Bu bölüm eğer kullanıcı adı kullanılmaMAKtaysa geçerli olacaktır. Buraya üye olma kodlarını ve diğer işlemleri yazabilirsiniz */
}
?>
Üye Resmi boranjudge
4 Ağustos Çarşamba ´10 17:04
Merhaba, güzel olmuş yalnız session kısımlarını tekrardan elden geçirmek lazım, sessionları md5lemesi güzel ama oluşan session'u çıkış fonksiyonu oluşturulmadığı için yok edip çıkış işlemi gerçekleştiremiyoruz orası kötü.
Üye Resmi Ahmet Suny
19 Ağustos Perşembe ´10 15:54
Merhaba! Lütfen MD5 Li Biçimde  Üyelik Kaydının Kodlarını Yazarsanız Bir Çıkış İşlemi İçin Çıkış MD5 Kafamı karıstırıyor anlamıyorum malesef!
Üye Resmi gerger
14 Eylül Salı ´10 20:15
Hocam anlatmınız için teşekkür ederim ama yeni ve acemi birisi için
session_start();
ob_start();

fonksiyonlarında koysanız çok iyi olurdu. zorlandım. KOnuya koytarsanız iyi olur.

Kolay gelsin.
Üye Resmi Çağrı
17 Eylül Cuma ´10 13:17
Merhabalar fatih hocam anlatım için teşekkürler, birşey sormak istiyorum formda kullanıcı adı ve şifresiyle girş yapan üyenin adını veritabanından "adi" tablosundaki bilgiyi çekip ekrana nasıl basabilirm?

birde $_REQUEST ve $_POST arasında bir fark varmı? yada $_GET...

Şöyle bir kod yazıyorum ama uygulamıyor;

$kullaniciadi = $_REQUEST["kullanici"]
$sqlsorgu = mysql_query("SELECT adi FROM uye WHERE kullanciadi = '".$kullaniciadi."'");
while ($liste = mysql_fetch_array($sqlsorgu)){

ile tabloyu seçip, "$liste[ad]"; ile ekrana basmak istiyorum...
Üye Resmi Çağrı
17 Eylül Cuma ´10 14:46
Düzenleme yokmuş, bir üst mesajımdaki hatayı aştım ";" ü unutmuşum $_REQUEST["kullanici"]dan sonra.. bariz ufak bir hata nelere mal oluyor...
21 Eylül Salı ´10 14:28
Evet bu tarz syntax hataları çok zaman kaybettirebiliyor. İleride koddan direk okuyabilir hale geliyor insan.

Soruna gelince, GET ve Post dizileri o methodlardan gelen verileri işlemeye yarayan dizidir. Eğer nereden daha  doğrusu hangi methodla geldiğinin önemi olmadan okumanı sağlar. Bu dizide aynı zamanda $_COOKIE dizisi içeriği de vardır.

Yani sen $_GET[sayfa] şeklinde almaya çalıştığın değer sadece get methodu ile gelirse ulaşılabilir olacaktır. $_REQUEST[sayfa] ise get methodu, post methodu veya cookie'de yazılmış bir değer olabilir. eğer her dizide de varsa hangisinin en son değer olarak sana iletileceğini php.ini'deki request_order adlı değerle ayarlayabilirsin.
Üye Resmi Ali
20 Aralık Pazartesi ´10 19:02
Gayet güzel anlatılmış ve yararlı bir paylaşım olmuş.
Ellerinize sağlık.
Üye Resmi ihsan
31 Ocak Pazartesi ´11 21:29
kardeş bna direk kodu wersen kopyala yapıştır yaptığımda olacak üye olanın üyelik onayalaması bna gelecek birde eror404 hatası ewriyo o olmasa   :-D  iyi olur
şimdiden teşekkürler
Üye Resmi jquerturkiye
23 Şubat Çarşamba ´11 11:56
teşekkür ederim. Gerçekten yararlı bilgiler sunuyorsunuz.
Üye Resmi Hüseyin
25 Mart Pazar ´12 08:32
Süper bi paylaşım olmuş ellerinize sağlık fakat bi sorunum var. Sürekli yanlış şifre hatası alıyorum. Kullanıcı adı doğrulanıo fakat şifreyi bi türlü doğrulayamıyor. Yardımcı olursanız çok sevinirim. Teşekkürler.
Üye Resmi Gürhan ŞİŞMANLAR
5 Nisan Perşembe ´12 11:17
Hocam her şey iyi güzelde kayıt formu yok ! .s
Üye Resmi src
6 Nisan Cuma ´12 15:22
merhaba ilk öncelikle anlatım için tşk güzel olmuş fakat ben bir türlü giriş yapamadım şifre hatalı k.adi hatalı diyip duruyor büyük ihtimal

$_SESSION["login"] = md5( "kullanic_oturum_" . md5( $bilgi["sifre"] ) . "_ds785667f5e67w423yjgty" );

kısımdan , çözemedim acıklarmısınız
Üye Resmi ismail okut
16 Mayıs Çarşamba ´12 05:26
merhaba ben lise son sınıf öğrencisiyim bir proje ödevim var php ile ilgili ufak bir anket sistesi yapmam gerekiyor.yazacağım mail adresinden bana ulaşabilirseniz çok memnun olurum .detayları ordan konuşuruz ismailokutt@gmail.com a mail atabilsiniz
14 Haziran Perşembe ´12 06:59
Üyelik sistemi için korsan saldırılardan korunmakla ilgili bir yazı yazdım. Yazı genel olarak ardı ardına hatalı girişlere karşı önlem içeriyor ve session-cookie olarak oluşturduğumuz giriş koduna değiniyor:
http://meteoncu.com/php-uyelik-sistemi-kusursuz-guvenlik-duvari

Bence güvenlik kodu oluşturmak, kullanıcı adına göre şifreyi çekip şifrenin türetilmişiyle sessiondakinin karşılaştırılmasından daha iyi. Çünkü geliştirmeye daha müsayit.

Mesela bir üye girişi yapıldıktan sonra yeni bir üye girişi yapılınca diğer girişi etkisiz kılmak için değişken bir veriye ihtiyacımız var. Bu da tam olarak "zaman" oluyor. Giriş kodunu oluştururken üyeye ait herhangi bir bilginin yanına bir de time() olan zamanı koyarsak giriş kodu değişeceğinden diğer giriş geçersiz kalacaktır.

Yanlış mıyım Mehmet abi?
Üye Resmi lucretius
29 Ekim Pazartesi ´12 12:41
Kayıt işleminide paylaşabilir misin güzel çalışma olmuş bunun videosunu çekerseniz daha iyi olur   :-)
Üye Resmi asdsad sadasd
2 Mart Cumartesi ´13 03:07
abi ben yaptım da profil sayfasında otomatik id tanımlama nasıl olacak ?
Üye Resmi denem
10 Mart Pazar ´13 16:33
aşırı basit hemde çok
(yorum kutunun dandikliği e postamdan belli olduğunu göreceksin)
Üye Resmi Arda şahin
2 Mayıs Perşembe ´13 06:54
Kolay gelsin server bilgisayarıma mysql 2000 kurdum ve içine dataları yükledim kayit.php dosyası yapıcam fakat nasıl olucak form dolduracak web serverde bu mysql server kurulu bilgisayarda bulunuyor kayit olan kişi Lo_db isimli database ye bağlqnmasını istiyorum içindede user No user psw yaş gibi tablolara yazmasını istiyorum?
Üye Resmi Muhammed burak Bağış
2 Mayıs Perşembe ´13 12:45
Güvenliği sağlanmış kullanıcı girişi ? ben bunu nasıl yapabilirim ?
Üye Resmi kaan
20 Mayıs Pazartesi ´13 17:50
fatih bey bir sorunum var yardımcı olabilirmisiniz? ödevim var anasayfanın sağ üst köşesine üüye girişi yaptıktan sonra giriş yapan kişinin kullanıcı adını yazmak istiyorum birtek bu kaldı fakat olmuyor ne şekilde yapabilirim ? yardımcı olursanız sevinirim link vereyim mesaj atarsanız çok mutlu olurum teşekkürler şimdiden.
http://www.facebook.com/kaanguder12
Üye Resmi alper
4 Haziran Salı ´13 12:25
kaan beyin sorusunun cevabına benimde ihtiyacım var.nasıl yapabilirim?
4 Haziran Salı ´13 12:31
Iki yolu var,

print $_SESSION["kadi"];

veya

print $uye['kadi'];

ikinci yontem ile sadece kullanici adi degil, herhangi bir uye detayina ulasabilirsiniz.
Üye Resmi Ahmet faik
17 Temmuz Çarşamba ´13 17:32
arkadaşlar ben bir kod yazdım ama 30. satırda hata var diyor bir yardım eder misiniz?

<?php include("kaynak/mysql.php"); include("kaynak/fonksiyon.php"); ob_start();?>

<?php
$islem=$_GET["islem"];
switch($islem){
case "Giris":
$kullaniciadi=mysql_real_escape_string(strip_tags(trim(kotuculKarakter($_POST["kullaniciadi"]))));
$sifre=mysql_real_escape_string(strip_tags(trim(kotuculKarakter($_POST["sifre"]))));
if ( (empty($kullaniciadi)) or (empty($sifre)) ){bilgi("onay","Hata!","Boş Kutucuk Bırakılamaz.");header("refresh:2;url=index.php");}else{
account();
$kontrol=mysql_query("SELECT login,password FROM account WHERE login='$kullaniciadi' and password=PASSWORD('".$sifre."')");
if (mysql_num_rows($kontrol) > 0){
setcookie("Kullanici","$kullaniciadi",time()+24*60*60);
setcookie("Sifre","$sifre",time()+24*60*60);
header("location:index.php?islem=Kullanici");
}{
bilgi("hata","Hata!","Kullanıcı adı yada şifre yanlış");header("refresh:2;url=index.php");
}
}
break;
case "Kullanici":
$kullanici=$_COOKIE["Kullanici"];
$sifre=$_COOKIE["Sifre"];
if ( ($kullanici == "") or ($sifre=="") ){header("location:index.php");}else{
echo "Hoş geldin <b>$kullanici</b><br>";
echo '<a href="index.php?islem=Cikis">Çıkış yap</a>';
}
}
break;
case "Cikis":
setcookie("Kullanici","",time()-10);
setcookie("Sifre","",time()-10);
header("location:index.php");
break;
default:
echo '<form action="index.php?islem=Giris" method="post">
<table>
<tr><td>Kullanıcı adı: </td><td><input type="text" name="kullaniciadi"/></td></tr>
<tr><td>Şifre: </td><td><input type="password" name="sifre"/></td></tr>
<tr><td></td><td><input type="submit" value="Giriş yap"/></td></tr>
</table>
</form>';
break;
}
?>

<?php ob_end_flush(); ?>
Üye Resmi Mehmet mirza altınel
1 Kasım Cumartesi ´14 14:15
Siteme kodu girdim ama üye ol tuşu çıkmadı ne yapmalıyım kısa sürede cevap verirseniz sevinirim facebkktan bana ulaşın
Üye Resmi ihsan özbaş
8 Aralık Pazartesi ´14 06:37
çok güzel bir paylaşım olmuş teşekkür ederim.
Üye Resmi songül yılmaz
3 Şubat Salı ´15 11:00
benımde bır sorum olucak yardım edersenız sevınırım.benım web sıtemde kullanıcı adı ve sifreyı kendım vermek ıstıyorum .kimsenın kafasına gore almasını istemıyorum.yıne aynı bılgıler mı gecerlı
Üye Resmi sudar
26 Mart Perşembe ´15 06:05
kullandığınız sisteme bağlıdır ne gibi bir sistem bu
Üye Resmi fatih tufan
13 Mayıs Çarşamba ´15 14:52
bana siteye kullanıcı kayıt formu olusturma ve buraya kayıt olanlarını admin panelnden aktivite etme kodlarını verebilir misiniz şimdiden çok teşekkür ederim
Üye Resmi Kanvas Tablo
30 Mayıs Cumartesi ´15 02:17
Güzel Anlatım Olmuş biraz geliştirmek gerek
Üye Resmi furkan doner
23 Temmuz Perşembe ´15 05:10
<?php
include_once ("z_db.php");
// Inialize session
session_start();
// Check, if username session is NOT set then this page will jump to login page
if (!isset($_SESSION['username'])) {
        print "
<script language='javascript'>
window.location = '/index.php';
</script>
";
}
$payto=$_SESSION['username'];


gösterge panelinin kodu bu

login panelinden giriş yaptığımda gösterge paneline girmiyor tekrar login paneline giriyor acil yardım
Üye Resmi furkan doner
23 Temmuz Perşembe ´15 05:12
login kodları bunlar

<?php
include_once("z_db.php");
$sql="SELECT maintain FROM  settings WHERE sno=0";
 if ($result = mysqli_query($con, $sql)) {

    /* fetch associative array */
    while ($row = mysqli_fetch_row($result)) {
        $main= $row[0];
    }
if($main==1 || $main==3)
{
print "
<script language='javascript'>
window.location = 'maintain.php';
</script>
";
}

}
include_once("z_db.php");
$sql="SELECT maintain FROM  settings WHERE sno=0";
 if ($result = mysqli_query($con, $sql)) {

    /* fetch associative array */
    while ($row = mysqli_fetch_row($result)) {
        $main= $row[0];
    }
if($main==1 || $main==3)
{
print "
<script language='javascript'>
window.location = 'maintain.php';
</script>
";
}

}
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['username']))
{
$status = "OK"; //initial status
$msg="";
$username=mysqli_real_escape_string($con,$_POST['username']); //fetching details through post method
     $password = mysqli_real_escape_string($con,$_POST['password']);

if ( strlen($username) < 6 ){
$msg=$msg."Kullanıcı adı en fazla 5 karakter olmalı<BR>";
$status= "NOTOK";}

if ( strlen($password) < 6 ){ //checking if password is greater then 8 or not
$msg=$msg."Şifre en fazla 5 karakter olmalı<BR>";
$status= "NOTOK";}

if($status=="OK"){
Üye Resmi Localhost
24 Ekim Cumartesi ´15 10:07
Teşekkürler . emeginize sağlık
Üye Resmi Mehmet
14 Ocak Perşembe ´16 10:54
Abi Ellerine Sağlık ama bir Sorum var..
Mesala Giriş Yerlerine simge fln koymak istiyorum
elimde  giriş paneline benzer bişey var onu atmak için ne yapmam lazım ?
yani nasıl kodlayayım ?
Üye Resmi Koray Aksu
16 Şubat Salı ´16 17:33
Usta çok güzel olmuş çok iyi anlatmışsında şu Kayıt php ve html kodlarını da verirseniz çok makbule geçer.
Üye Resmi Fikret
3 Mart Perşembe ´16 08:00
Merhaba kardeşim.  
İlan scripti kurdum üye girişi yaparak bir ilanı favorilere ekle dediğin zaman jude girişi yapın diye hata veriyor bunun için ne yapmamız gerekiyor.  
Script işinde yeniyim
Yardımcı olursunuz
Üye Resmi lütfen yardım edin??
2 Nisan Cumartesi ´16 12:02
projem var e randevu yardım edebilir misiniz?
Üye Resmi yardımmm!!!
2 Nisan Cumartesi ´16 12:07
bir kullanıcı girişi paneli yapacam yardım eder misiniz? Giriş sayfası olacak  ama kullanıcıları veritabanından alacak. her yanlış girişte limitiniz şu kadar kaldı diyecek.  3 kere yanlış girildiye textler pasif olacak. kullanıcı adı veya şifre girilmediyse kullanıcı adı veya şifrenizi girmediniz diye bilgi verecek.
Üye Resmi Alper Aksoylar
3 Ağustos Çarşamba ´16 05:44
Makale güzel olmuş fakat anlatım sanki biraz devrik ya da normal konuşuyormuş gibi anlatılmış. Bazı yerlerdeki cümleleri anlamak için bir daha okumam gerekti.
Üye Resmi Onur
1 Kasım Salı ´16 01:48
Herşey çok güzel. Ben üye kaydı ve listeme gibi işlemleri kendi başıma yaptım. Sizin bu veritabanından bilgi çekecek üye giriş sisteminizi de entegre ettim. Sorunsuz çalışıyor. Bazı konular eksik. Mesela giris kontrol php yi nasıl kullanırız. Sayfanın üstüne include ederiz ama kontrol mantığını çok basit bir şekilde anlatırmısınız. Mesela X ziyaretçisi admin sayfasına girmeye çalıştı ama giriş yapmadığı için giriş sayfasına yönlensin istiyorum. Sizin giris-kontrol.php dosyanızda bunu pek anlayamadım parametreler karışık geldi. Bu cevaba diğer ziyaretcilerinde ihtiyacı var sanıyorum. Saygılar
Üye Resmi SERHAT AYKUT
31 Mart Cuma ´17 06:51
Çok teşekkürler.
Üye Resmi tuna atesci
13 Mayıs Cumartesi ´17 06:28
şifreyi doğru girdiğim halde yanlış girdin diye uyarı veriyor neden acaba ?
Üye Resmi AHMET CAHAN
17 Temmuz Pazartesi ´17 13:28
Sn. Ahmet faik
php programında baktım. hatayı      case "Cikis": olarak gösterdi. Hatayı düzelt komutunu verincede phpdesigner 8 is unable to start Php and xdebu output: X-Powered-By:PHP/5.3.3  content -type:text/html mesajı vermektedir.
Kolay gelsin.
Yeni Yorum *
İletişim Bilgileri
*
*
E-Posta adresiniz gösterilmeyecektir.
(unut)
Güvenlik Kodu *

Gönderiliyor