• 25-05-2010, 20:31:49
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba arkadaşlar;

    1-2 saat önce bir sorum vardı o sorunumda bir id eksilterek sonuca ulaştım. Fakat şimdi veritabanına yüklediğim verilerle oturum açma işlemini gerçekleştirmek istiyorum. Bunun için googlede birkaç araştırma yaptım ve bazı kaynaklar buldum fakat bunların içinden en mantıkıma uygun aşağıdaki kodu gördm fakat koddu kendime göre düzenlediğimde "yanlis sifre girdiniz" adlı hatayı veriyor önüme.

    Bunun hatasını anlamış değilim. tüm gereken bölümleri anlamaya çalıştım fakat şu bölümü pek anlamış değilim.
     if( mysql_num_rows($sorgu) != 1 ){
    birde phpde md5 die bi fonksiyon var imiş. onu neden kullandığımızı anlamış dğeilim.

    Neyse dosyalarım ve kodlarım şu şekilde:

    giris.php adlı dosyam:

    <?php
    
           @mysql_connect("localhost","root","123456") or die("HATA");
    @mysql_select_db("futbol") or die(" VERITABANI HATASI");
    
         
    
            $kadi  = $_POST["nick"];
    
            $sifre = $_POST["sifre"];
    
           
    
         
      
            $sorgu = mysql_query("select sifre from uyeler where nick = '".$kadi."'");
    
            if( mysql_num_rows($sorgu) != 1 ){
    
              echo "kullanıcı bulunamadı";
    
              exit;
    
            }else{
     
          
     
                $bilgi = mysql_fetch_assoc($sorgu);
    
            }
    
           
    
          # sifre eslestirmesi
    
            if( md5( trim($sifre) ) != $bilgi["sifre"] ){
    
              echo " yanlış şifre girdiniz";
    
              exit;
    
            }
    
           
    
      
    
            $_SESSION["giris"] = md5( "kullanic_oturum_" . md5( $bilgi["sifre"] ) . "_ds785667f5e67w423yjgty" );
    
            $_SESSION["nick"]  = $kadi;
    
           
    echo "başarılı bir şekilde giriş yaptınız";
          ?>

    Ve uyegiris.php adlı sayfam:

    <form id="form1" name="form1" method="post" action="giris.php">
                            <table width="452" border="0" cellspacing="0" cellpadding="0">
                              <tr>
    						  
                                <th width="113" scope="col">Kullanıcı adı </th>
                                <th width="13" scope="col">:</th>
                                <th width="213" scope="col"><label>
                                  <input name="nick" type="text" id="nick" />
                                </label></th>
                                <th width="113" scope="col">&nbsp;</th>
                              </tr>
                              <tr>
                                <th scope="col">Şifre</th>
                                <th scope="col">:</th>
                                <th scope="col"><label>
                                  <input name="sifre" type="password" id="sifre" />
                                </label></th>
                                <th scope="col">&nbsp;</th>
                              </tr>
                              <tr>
                                <th scope="col">&nbsp;</th>
                                <th scope="col">&nbsp;</th>
                                <th scope="col"><label>
                                  <input type="submit" name="Submit" value="Giriş Yap" />
                                </label></th>
                                <th scope="col">&nbsp;</th>
                              </tr>
                            </table>
                                                </form>
    Not: Veri tabanında gereken tablom ve alanlarım mevcut. artı olarak session_start(); işlemini gerçekleştirmiş bulunmaktayım..

    Şimdiden herkese teşekkürler...
  • 25-05-2010, 22:19:46
    #2
    Arkadaşlar ilk kod biraz karışık geldi galiba diğer bir kod buldum o daha mantıklı geldi ama yine giriş başarısız uyarısı alıyorum ben mi bi yeri atlıyorum. xS

    Kod şu şekilde:
    <?
    session_start(); //oturum başlatılıyor
    
    mysql_connect("localhost","root","123456") 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['nick'])); //ü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 * from uyeler where nick='$uyead' and sifre='$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
    ?>
  • 25-05-2010, 23:18:59
    #3
    Veritabanında şifreyi orjinal haliyle mi saklıyorsunuz yoksa md5 ile şifrelenmiş şekilde mi? Eğer normal haliyle saklıyorsanız aşağıdaki kodları giris.php ye yapıştırıp dener misiniz?

    <?php
    	session_start();
    	
    	@mysql_connect("localhost","root","123456") or die("HATA");
    	@mysql_select_db("futbol") or die(" VERITABANI HATASI");
    
    	$nick = strip_tags($_POST['nick']);
    	$sifre = strip_tags($_POST['sifre']);
    	$sql = mysql_fetch_array(mysql_query("SELECT * FROM uyeler WHERE nick='$nick'"));
    
    	if (($nick != '' || $sifre != '') && ($nick == $sql['nick'] && $sifre == $sql['sifre'])) 
    	{
    		$_SESSION['nick'] = $nick;
    		header('location: index.php');
    	}else
    	{
    		echo 'Kullanıcı adı veya Şifre hatalı!';
    	}
    ?>
  • 25-05-2010, 23:23:19
    #4
    bayGaReZ adlı üyeden alıntı: mesajı görüntüle
    Veritabanında şifreyi orjinal haliyle mi saklıyorsunuz yoksa md5 ile şifrelenmiş şekilde mi? Eğer normal haliyle saklıyorsanız aşağıdaki kodları giris.php ye yapıştırıp dener misiniz?

    <?php
    	session_start();
    	
    	@mysql_connect("localhost","root","123456") or die("HATA");
    	@mysql_select_db("futbol") or die(" VERITABANI HATASI");
    
    	$nick = strip_tags($_POST['nick']);
    	$sifre = strip_tags($_POST['sifre']);
    	$sql = mysql_fetch_array(mysql_query("SELECT * FROM uyeler WHERE nick='$nick'"));
    
    	if (($nick != '' || $sifre != '') && ($nick == $sql['nick'] && $sifre == $sql['sifre'])) 
    	{
    		$_SESSION['nick'] = $nick;
    		header('location: index.php');
    	}else
    	{
    		echo 'Kullanıcı adı veya Şifre hatalı!';
    	}
    ?>

    Ne kadar teşekkür etsem azdır.. Çok minnettarım. Neler yaptık olmadı biraz kodu yorumlamaya çalışayım ben o zaman.

    Tekrar dan teşekkürler.

    Saygılarımla
  • 26-05-2010, 20:31:37
    #5
    sifreleri veritabaninda sifrelemeden direk olarak kaydetme. cok ama cok buyuk bir guvenlik acigi olusur. veritabanina ulasan biri ilave hic bir seye ihtiyac duymadan sifrelerine ulasmis olur.
  • 26-05-2010, 21:55:28
    #6
    Eposta Aktivasyonu Gerekmekte
    mysql_real_escape_string() ile gelen verileri escape et, sql injectiona karşı.

    http://www.php.net/manual/tr/functio...ape-string.php
  • 27-05-2010, 00:20:51
    #7
    $sorgu = mysql_fetch_row(mysql_query("SELECT * FROM uyeler WHERE nick='$nick' AND sifre='$sifre'"));
    if($sorgu){
    devam_et();
    }else{
    dolas_gel();
    }