Mehmet Fatih YILDIZ (mfyz.com)

Menü



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

Kategori : PHP ve Pear Dökümanları
Eklenme Tarihi :
20 Ağustos Pazar ´06
login, logout, mysql, session




Dikkat : Dökümanın yazılma tarihi üzerinden en az 60 gün (2 ay) geçmiş. İçerisindeki bilgiler güncelliğini yitirmiş olabilir, uygulamada ufak sorunlar oluşabilir. Yorumları ve güncellemeleri göz önünde bulundurarak dökümanı 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.

  1. CREATE TABLE `uyeler` (
  2.   `no` int(10) NOT NULL AUTO_INCREMENT,
  3.   `kadi` varchar(50) NOT NULL DEFAULT '',
  4.   `sifre` varchar(100) NOT NULL DEFAULT '',
  5.   `izin` varchar(20) NOT NULL DEFAULT '',
  6.   `adi` varchar(100) DEFAULT NULL,
  7.   `eposta` varchar(255) DEFAULT NULL,
  8.   PRIMARY KEY  (`no`)
  9. ) 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 :

  1. <form name="giris" action="giris.php" method="post">
  2.  
  3.  <table cellpadding="8" cellspacing="0" align="center">
  4.    <tr>
  5.      <td width="100">Kullanıcı Adı</td>
  6.      <td><input type="text" name="kadi"></td>
  7.    </tr>
  8.    <tr>
  9.      <td width="100">Şifre</td>
  10.      <td><input type="password" name="sifre"></td>
  11.    </tr>
  12.    <tr>
  13.      <td colspan="2" align="right">
  14.        <input type="submit" value="Giriş">
  15.      </td>
  16.    </tr>
  17.  </table>
  18.  
  19. </form>

Giriş işlemi sayfamızın (giris.php) koduna bakacak olursak :

  1. <?php
  2.  
  3. # mysql baglantisi, sesion_start yapilmis varsayiyoruz
  4.  
  5. # bilgiler
  6.   $kadi  = $_POST["kadi"];
  7.   $sifre = $_POST["sifre"];
  8.  
  9. # kullanici bilgisi alalim
  10.   $sorgu = mysql_query("select sifre from uyeler where kadi = '".$kadi."'");
  11.   if( mysql_num_rows($sorgu) != 1 ){
  12.     print '<script>alert("Kullanıcı bulunamadı!");history.back(-1);</script>';
  13.     exit;
  14.   }else{
  15.     # veriyi alıyoruz
  16.       $bilgi = mysql_fetch_assoc($sorgu);
  17.   }
  18.  
  19. # sifre eslestirmesi
  20.   if( md5( trim($sifre) ) != $bilgi["sifre"] ){
  21.     print '<script>alert("Yanlış şifre girdiniz!");history.back(-1);</script>';
  22.     exit;
  23.   }
  24.  
  25. # başarılı giriş yapıldı
  26. # oturuma kaydedip anasayfaya gidelim
  27.   $_SESSION["giris"] = md5( "kullanic_oturum_" . md5( $bilgi["sifre"] ) . "_ds785667f5e67w423yjgty" );
  28.   $_SESSION["kadi"]  = $kadi;
  29.  
  30. ?>
  31. <script>
  32.   alert("Başarıyla giriş yaptınız! Şimdi anasayfaya yönlendiriliyorsunuz.");
  33.   window.top.location = './';
  34. </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 :

  1. <?php
  2.  
  3. # uye oturum degiskenleri
  4.   $giris_yapilmis = false;
  5.   $uye = false;
  6.  
  7. # kontrol ederek bilgileri dogrulayalim
  8.   if( !empty($_SESSION["giris"]) && !empty($_SESSION["kadi"]) ){
  9.  
  10.     # kulanici bilgisini alalim
  11.       $sorgu = mysql_query("select * from uyeler where kadi='".$_SESSION["kadi"]."'");
  12.       if( mysql_num_rows($sorgu) == 1 ){
  13.      
  14.         $uye = mysql_fetch_assoc($sorgu);
  15.         # anahtar kontrol
  16.           if( $_SESSION["giris"]  ==  md5( "kullanic_oturum_" . md5( $uye["sifre"] ) . "_ds785667f5e67w423yjgty" ) ){
  17.             $giris_yapilmis = true;
  18.           }else{
  19.             # giris yanlis. $uye'yi silelim
  20.             $uye = false;
  21.           }
  22.       }
  23.   }
  24.  
  25. ?>

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;

  1. if( !$giris_yapilmis ){
  2.   print 'Bu sayfa üyelere özeldir! Lütfen giriş yapın!';
  3.   exit;
  4. }

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 (47 yorum/ping var)



Üye Resmi Ziyaretçi : Engin
19 Ocak Cumartesi ´08 22:57 tarihinde yazmış
Peki üyeler kendi aralarında mesjalaşması için gereken koduda paylaşabilirmisiniz?
 


Üye Resmi Üye : the_nobody
14 Haziran Cumartesi ´08 00:28 tarihinde yazmış
İ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 Ziyaretçi : NeTHaLiL
25 Ağustos Pazartesi ´08 13:26 tarihinde yazmış
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 Ziyaretçi : Taner Macit
27 Eylül Cumartesi ´08 01:31 tarihinde yazmış
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 Ziyaretçi : Forum
8 Ekim Çarşamba ´08 23:53 tarihinde yazmış
Tskler detayLı bir anLatım oLmuŞ..
 


Üye Resmi Ziyaretçi : s.akcan
22 Ekim Çarşamba ´08 12:54 tarihinde yazmış
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;
 


Üye Resmi Üye : the_nobody
22 Ekim Çarşamba ´08 22:19 tarihinde yazmış
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 Ziyaretçi : --
24 Ekim Cuma ´08 13:50 tarihinde yazmış
güzelll.
 


Üye Resmi Ziyaretçi : Süleyman Özbek
2 Kasım Pazar ´08 13:45 tarihinde yazmış
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.
 


Üye Resmi Üye : the_nobody
2 Kasım Pazar ´08 22:04 tarihinde yazmış
$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"]."'");
 


Üye Resmi Üye : the_nobody
2 Kasım Pazar ´08 22:04 tarihinde yazmış
aaah... Düzeltme olanağım yok.. onu 2. gösterdiğim şekilde yazarsan sorun çıkacağını zannetmiyorum..
 


Üye Resmi Üye : superselo
2 Kasım Pazar ´08 22:38 tarihinde yazmış
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 Ziyaretçi : Sinan Pos
14 Kasım Cuma ´08 22:27 tarihinde yazmış
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?
 


Üye Resmi Üye : superselo
15 Kasım Cumartesi ´08 15:19 tarihinde yazmış
PEAR kullanabilirsin.Dökümanlar kısmında bununla ile ilgili bir makale var.
 


Üye Resmi Ziyaretçi : Sinan Pos
17 Kasım Pazartesi ´08 12:21 tarihinde yazmış
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.
 


Üye Resmi Üye : superselo
17 Kasım Pazartesi ´08 19:56 tarihinde yazmış
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.
 


Üye Resmi Üye : mfyz
19 Kasım Çarşamba ´08 20:40 tarihinde yazmış
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 Ziyaretçi : Barış
26 Kasım Çarşamba ´08 09:08 tarihinde yazmış
cok güzel olmus saolun
 


Üye Resmi Ziyaretçi : dfgdfg
22 Ocak Perşembe ´09 11:24 tarihinde yazmış
dont play tennis with my pennis diyorum yani
 


Üye Resmi Ziyaretçi : sedat
4 Şubat Çarşamba ´09 16:30 tarihinde yazmış
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.
 


Üye Resmi Üye : depo2
5 Şubat Perşembe ´09 00:52 tarihinde yazmış
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 Ziyaretçi : Sohbet
16 Şubat Pazartesi ´09 01:58 tarihinde yazmış
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 Ziyaretçi : viaria
15 Nisan Çarşamba ´09 09:35 tarihinde yazmış
primery key olayı doğrumu en üstte
 


Üye Resmi Ziyaretçi : fatih duygun
23 Nisan Perşembe ´09 14:38 tarihinde yazmış
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 Ziyaretçi : Türkiye ilan
18 Haziran Perşembe ´09 10:16 tarihinde yazmış
elinize sağlık. çok işime yaradı.
 


Üye Resmi Ziyaretçi : Gökhan
6 Temmuz Pazartesi ´09 15:44 tarihinde yazmış
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?
 


Üye Resmi Üye : mfyz
7 Temmuz Salı ´09 09:49 tarihinde yazmış
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 Ziyaretçi : Gökhan
7 Temmuz Salı ´09 11:18 tarihinde yazmış
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 Ziyaretçi : qplot
13 Ağustos Perşembe ´09 21:18 tarihinde yazmış
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 Ziyaretçi : taner şenel
20 Eylül Pazar ´09 15:03 tarihinde yazmış
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 Ziyaretçi : program
10 Ocak Pazar ´10 23:48 tarihinde yazmış
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 ?

 


Üye Resmi Üye : mfyz
12 Ocak Salı ´10 03:30 tarihinde yazmış
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 Ziyaretçi : bahri
4 Şubat Perşembe ´10 00:20 tarihinde yazmış
teşekrürler xD
 


Üye Resmi Ziyaretçi : memet aslan
21 Mart Pazar ´10 18:07 tarihinde yazmış
hocam uye sayfası hazırladık ornegin uyede giris yaptı uye sayafasında giris yapan uyenin bilgilerini nasıl sayfaya basabiliriz. yardımcı olurmusnuz
 


Üye Resmi Üye : teo84
28 Mart Pazar ´10 08:06 tarihinde yazmış
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
 


Üye Resmi Üye : freematter
19 Nisan Pazartesi ´10 15:55 tarihinde yazmış
Teşekkürler .
 


Üye Resmi Üye : acadmax
23 Nisan Cuma ´10 20:57 tarihinde yazmış
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
 


Üye Resmi Üye : mfyz
24 Nisan Cumartesi ´10 01:39 tarihinde yazmış
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 Ziyaretçi : aylin kurt
24 Nisan Cumartesi ´10 11:32 tarihinde yazmış
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 Ziyaretçi : hayal
29 Nisan Perşembe ´10 21:21 tarihinde yazmış
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 Ziyaretçi : Murat Ferdi
2 Mayıs Pazar ´10 16:33 tarihinde yazmış
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 Ziyaretçi : Cüneyt
5 Mayıs Çarşamba ´10 01:10 tarihinde yazmış
$_SESSION["giris"] = md5( "kullanic_oturum_" . md5( $bilgi["sifre"] ) . "_ds785667f5e67w423yjgty" )

Bu kısımda _ds ile başlayan kısıma ben ne yazacağım?
 


Üye Resmi Üye : mfyz
6 Mayıs Perşembe ´10 10:24 tarihinde yazmış
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 Ziyaretçi : Cüneyt
7 Mayıs Cuma ´10 23:45 tarihinde yazmış
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?
 


Üye Resmi Üye : alone123
8 Mayıs Cumartesi ´10 12:34 tarihinde yazmış
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 Ziyaretçi : boranjudge
4 Ağustos Çarşamba ´10 17:04 tarihinde yazmış
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 Ziyaretçi : Ahmet Suny
19 Ağustos Perşembe ´10 15:54 tarihinde yazmış
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!
 


Yeni Yorum

Önce Okuyun Yorumlarınızda sosyal, dini ve politik taraflı mesajlar, başkalarına saldırı sayılabilecek laflardan kaçının. Argo kelimeler, küfürler otomatik olarak silinecektir. Bu kural ihlalleri ip, üyelik, isiminizin banlanmasına yol açabilir.

Lütfen yardıma yönelik, konuyu uzatacak sorularınızı/yorumlarınızı forumda yazınız. Burası konu dahilindeki kısa soluklu öneri/yorumlar içindir. Aksi halde yorumunuzu göremeyebilir, uyarı alabilirsiniz.

Hatırlatmak amacıyla : html kodlarının, link yapmak, vb amacıyla gireceğiniz ekstra bilimum şeylerin çalışmayacağını belirteyim. Yorumlayıcı zaten linklerinizi otomatik çevirecek, gülücüklerinizi dönüştürecektir. Zengin metin özellikleri için araç çubuğundaki butonları kullanın.


İletişim Bilgileri


E-Posta adresiniz gösterilmeyecektir.

(unut)

Üye iseniz, giriş yapıp bu bilgileri girmeden hızlıca yorum yapabilirsiniz. Yorumunuzda resminiz/ikonunuz ve profil bağlantınız görüntülenecek, aynı zamanda güvenlik kodu girmek zorunda da kalmayacaksınız.
Üye olmak için buraya tıklayın.

Güvenlik Kodu
Güvenlik kodunu göremiyorsanız sayfayı yenileyin!


Yukarıdaki güvenlik kodunu bu kutuya yazın.

Yorum   
- +

Ad soyad, eposta ve yorum alanları
(⊗ işaretli alanlar) zorunludur.





mfyz.com'da şu an 11 ziyaretçi geziniyor. Toplam 114 makale, 208 yazı, 2999 gönderi var



  • RSS mfyz.com'u RSS beslemeleri ile takip edebilirsiniz
  • ServerTR Hosting Sponsoru ServerTR.com'a çok teşekkür ederiz
  • CC 2.5 Sitedeki materyalleri Creative Commons 2.5 Lisansı çerçevesinde kullanabilirsiniz. Lisans hakkında bilgi almak için tıklayın
  • İstatistikler Site ziyaret istatistikleri, konu, eğilim gibi ilginç istatistikler hakkında
  • Site Hakkında Site altyapısı, hazırlanışı, kurallar ve felsefesi hakkında
  • İletişim İletişim formu, iletişim bilgileri

mfyz.com Türk Programcılığının Gelişmesine Adanmıştır
HTML Standartlarına Uygundur

CSS Standartlarına Uygundur