• 30-10-2010, 07:09:13
    #1
    Üyeliği durduruldu
    bir türlü login olamadım. nicki yada şifreyi boş bıraktığımda hatayı alıyorum. ama nick ve şifre girdiğimde sayfa "yükleniyor" da takılıyor. bu yüzden kısır döngüye girdiğini düşündüm. ama yazdığım kodlarda bir sorun göremedim. bir de siz bakabilir misiniz ?

    fonksiyonum
    function girisyap()
    {
    	if(empty($_POST['gnick']) || empty($_POST['gsifre']) || $_POST['gnick']=="nick ne?" || $_POST['gsifre']=="sifren?"){
    		echo "tüm alanları doldur";
    	}else{
    		$gnick = $_POST['gnick'];
    		$gsifre = md5($_POST['gsifre']);
    		while($yow = mysql_fetch_assoc(mysql_query("SELECT * FROM uyeler WHERE nick = '$gnick'"))){
    			$yowsifre = $yow['sifre'];
    			$yowcinsiyet = $yow['cinsiyet'];
    		}
    			if($yowsifre == $gsifre){
    				$_SESSION['nick'] = $gnick;
    				$_SESSION['cinsiyet'] = $yowcinsiyet;
    				global $form;
    				$form = "gizle";
    				echo "Vay benim anam babam ! <br>kim gelmiş !<br> $gnick gelmiş ! <br>içeri buyur";
    				echo "<meta http-equiv=refresh  content=3;url=mekan.php>";
    			}else{
    			echo "şifrenden emin misin ?";
    			}
    	}
    }
    formum

    <?
    		if($_GET['uye']=='giris'){
    			girisyap();
    		}else{}
    		
            if($form!="gizle"){
    		?>
            <form action="index.php?uye=giris" method="post">
        	<input class="inp" type="text" name="gnick" value="nick ne?" onclick="if(this.value=='nick ne?') this.value='';" onblur="if(this.value=='') this.value='nick ne?';"/><br />
            <input class="inp" type="text" name="gsifre" value="sifren?" onclick="if(this.value=='sifren?') this.value='';" onblur="if(this.value=='') this.value='sifren?';"/><br />
            <a href="#" class="mavi" style="float:right; font-size:13px; margin-right: 14px;" onClick="alert('Kendinide unutsaydın');">şifremi unuttum</a>
            <input class="butoncan" type="submit" name="submit" value="Ben yabancı değilim" />
        	</form> 
            <? }else{} ?>
  • 30-10-2010, 07:21:22
    #2
    Üyeliği durduruldu
    işin ilginci veritabanında olmayan bir nick girdiğimde "şifrenden emin misin ?" çıktısını alıyorum. fakat veritabanında olan bir nick girdiğimde şifresi doğru da olsa yanlış da olsa takılıyor... ve sanırım bu takılma işleminde bir session falan da atanıyor olmalı ki, ilk denemede "şifrenden emin misin?" çıktısını veren bilgiler, takıldıkdan sonraki denemelerimde takılıyor

    biraz karışık oldu ama... anlatabildiysem ne mutlu bana
  • 30-10-2010, 08:59:29
    #3
    Üyeliği durduruldu
    tek satır almak için while kullanmanın mantıksız olduğuna karar verdim. fakat daha önceden de kullanmıştım sorun çıkmamıştı. döngüyü kaldırınca problem çözüldü.
  • 30-10-2010, 13:33:47
    #4
    SELECT * FROM uyeler WHERE nick = '$gnick' and sifre = '$gsifre'

    bu tarz kullan ve mysql_num_rows 1 ise girisi yaptır yoksa boyle bisi hatalı şifre de geç. bu arada kendine bir kod yazma standartı belirlemeye çalış.

    bütün degiskenlerin aciklayici. 2 tane kelimeden oluşuyorsa aralarında _ vs gibi yazım sürecini hızlandırır.
  • 30-10-2010, 16:43:21
    #5
    Sorguyu while'ın koşul parantezinde kullanırsanız kısır döngü olur. Çünkü sürekli o sorguyu yapar. Doğrusu sorguyu bir değişkene atayıp while($yow = mysql_fetch_assoc($sorgu)) şeklinde kullanmanızdır.
  • 30-10-2010, 19:34:54
    #6
    Hkan adlı üyeden alıntı: mesajı görüntüle
    Sorguyu while'ın koşul parantezinde kullanırsanız kısır döngü olur. Çünkü sürekli o sorguyu yapar. Doğrusu sorguyu bir değişkene atayıp while($yow = mysql_fetch_assoc($sorgu)) şeklinde kullanmanızdır.
    arkadaşın dediği doğru ayrıca burada while kullanılmasınada gerek yok sonuçta veritabanından 1 satır a bakacaksınız 1 sonuç işleyeceksiniz tek bir sorgu yeter.
  • 31-10-2010, 06:08:14
    #7
    Üyeliği durduruldu
    Efe4ka adlı üyeden alıntı: mesajı görüntüle
    SELECT * FROM uyeler WHERE nick = '$gnick' and sifre = '$gsifre'

    bu tarz kullan ve mysql_num_rows 1 ise girisi yaptır yoksa boyle bisi hatalı şifre de geç. bu arada kendine bir kod yazma standartı belirlemeye çalış.

    bütün degiskenlerin aciklayici. 2 tane kelimeden oluşuyorsa aralarında _ vs gibi yazım sürecini hızlandırır.
    üyenin veritabanındaki bir kaç bilgisini daha session'da saklayacağım için bu şekilde yaparsam iki sorgu yapmamış olurum diye düşündüm
  • 31-10-2010, 06:55:39
    #8
    bende mysql_num_rows ile karşılaştırmanı tavsiye ederim.birde mysql_escape_string addslashes ve strip_tags fonksiyonlarınına almanı tavsiye ederim.yoksa iki gün sonra admin paneline sızılma riski olabilir
  • 31-10-2010, 11:43:17
    #9
    Eposta Aktivasyonu Gerekmekte
    Döngüye girmene gerek yok
    <?php
    function girisyap()
    {
        if(empty($_POST['gnick']) || empty($_POST['gsifre']) || $_POST['gnick']=="nick ne?" || $_POST['gsifre']=="sifren?"):
        
            echo "tüm alanları doldur";
            
        else:
        
            $gnick = $_POST['gnick'];
            $gsifre = md5($_POST['gsifre']);
            
            $sql = mysql_query("SELECT COUNT(*) FROM uyeler WHERE nick = '" . $gnick . "' AND sifre='" . $gsifre . "'") or die (mysql_error());
            $yow = mysql_fetch_array($sql);
            
                if($yow[0] > 0):
                
                    global $form;
                    $form = "gizle";
                    echo "Vay benim anam babam ! <br>kim gelmiş !<br> $gnick gelmiş ! <br>içeri buyur";
                    echo "<meta http-equiv=refresh  content=3;url=mekan.php>";
                    
                else:
                
                    echo "şifrenden emin misin ?";
                    
                endif;
                
        endif;
    }
    ?>