• 29-07-2010, 13:32:00
    #1
    Merhaba arkadaşlar,
    Local'de bir sistem üzerinde çalışmaktayım.

    <?php
    echo wordwrap(strtoupper(md5('2000')),4,'-',true); 
    ?>
    Yukardaki kodun karşılığı : 08F9-0C1A-4171-5536-1A5C-4B8D-297E-0D78

    Bu kodu admin tarafından bir kullanıcıya verilecek. Ve Kullanıcı bunu sadece 1 sefer kullanabilecek? Yani kullandıktan sonra kullanıcının hesabına 2000 Kredi eklenecek ve bu kod bir daha kullanılmayacak ?

    Bunu nasıl yapabiliriz?

    İyi günler.
  • 29-07-2010, 13:46:54
    #2
    veritabanına kaydet sonra bu kodu çalıştırmadan önce veritabanında varmı yokmu diye kontrol ettir
  • 29-07-2010, 15:02:01
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    <?php 
    //Aşağıdaki tablo, kolon ve post verileri tamamen hayal ürünüdür
    $kullaniciya_ait =  wordwrap(strtoupper(md5('2000')),4,'-',true);  
    $mysql_query("INSERT INTO kullanici_sifreleri ('kullanici_id','ozel_sifre','kullanildimi') VALUES ('$_POST[kullanici_idsi]','$kullaniciya_ait','1');
    //kişi ilk kullanımda bunu UPDATE ile son veriyi 0 yaparsan
    
    $mysql_query("UPDATE kullanici_sifreleri SET kullanildimi='0' where ozel_sifre='$_POST[ozel_kodu]'");
    
    //alttaki sorguylada kullanıcının sıfresı kullanılmıs mı
    
    $dogru_mu = mysql_num_rows(mysql_query("SELECT id FROM kullanici_sifreleri where ozel_sifre ='$_POST[ozel_kod]' and kullanici_id='$_SESSION[kullanici_idsi]' and kullanildimi='1'"));
    if($dogru_mu>0){
    echo "Kullanabilirsin";
    }
    else{
    echo "Kullanamazsın"; die();
    }
    ?>
  • 29-07-2010, 15:34:12
    #4
    Peki herşey çok güzel. Bu Kod kullanıldı ve gitti diyelim. Başka bir kullanıcıya 2000 Kredi nasıl vereceğim ? yine aynı 8 haneli kod çıkıyor ortaya.
  • 29-07-2010, 15:50:40
    #5
    random kod oluştur o zamanda aynısı gelmez her seferinde farklı bir kod gelir
  • 29-07-2010, 16:02:54
    #6
    Kimlik doğrulama veya yönetimden onay bekliyor.
    <?php
    
    /*
    	Tablo adı: promasyon_kodları :D
    	Yapı:
    		id => (int) 10,
    		kod => (varchar) 50,
    		bakiye => (int) 10,
    		kullanilmis => (tinyint) 3
    */
    
    // Formdan kodu gönderdi...
    $sorgu = mysql_query("
    	SELECT id, bakiye
    	FROM promasyon_kodları
    	WHERE kod = $_POST[kod]
    		AND kullanilmis = 0");
    list ($id_promasyon, $bakiye) = mysql_fetch_row($sorgu);
    mysql_free_result($sorgu);
    
    if (!empty($bakiye))
    {
    	mysql_query("
    	UPDATE kullanicilar
    	SET kredi = kredi + $bakiye
    	WHERE uye_id = $uye");
    
    	mysql_query("
    	UPDATE kullanicilar
    	SET kullanilmis = 1
    	WHERE id = $id_promasyon");
    }
    else
    	echo 'YürüGitLahn!';
    
    ?>
  • 29-07-2010, 17:24:47
    #7
    Üyeliği durduruldu
    <?php
    echo wordwrap(strtoupper(md5('2000')),4,'-',true);
    ?>

    bunu zaten yeniden çözemeyeceğine göre 2000 değeri ile üretmek gereksiz bence. şöyle bir şey tavsiye ederim.

    2000 kredi kodu üret:

    $id = rand(1000,9999);
    wordwrap(strtoupper(md5($id)),4,'-',true);

    5000 kredi kodu üret:
    $id = rand(1000,9999);
    wordwrap(strtoupper(md5($id)),5,'-',true);

    10000 kredi kodu üret
    $id = rand(1000,9999);
    wordwrap(strtoupper(md5($id)),6,'-',true);

    gibi...

    çözerken kaç karakterli ise ona göre değer verir. mesela kod tutuyorsa ve 30 karakterse 2000 kredi, kod tutuyorsa ve 36 karakterse 5000 kredi gibi...

    ya da direk db ye kaydederken 'degeri' diye bir satır açarsın. kod oluşturur ve degerini elle girerek db ye kaydedersin. kod çözülürken 'degeri' sütunundaki miktar kredi olarak kullanıcı tablosuna eklenir...