Pokaż wyniki od 1 do 2 z 2

Wątek: [Oszustwo] battle.php, turnfight.php, turnfight1.tpl

  1. #1
    Bugolog Vallheru'owski Awatar McFly
    Dołączył
    Feb 2008
    Posty
    414

    Domyślnie [Oszustwo] battle.php, turnfight.php, turnfight1.tpl

    1. Opis błędu
    Przechowywanie wartości uników oraz ilości walk z potworem w ukrytych polach formularza.
    2. Zagrożenie
    Wygrywanie każdej walki i walka z wieloma potworami za 1 punkt energii.
    3. Rozwiązanie
    [OTWÓRZ]
    templates/turnfight1.tpl
    [ZNAJDŹ I USUŃ]
    Kod html:
    <input type="hidden" name="miss" value="{$Myunik}" />
    <input type="hidden" name="razy" value="{$Amount}" />
    [OTWÓRZ]
    battle.php
    [ZNAJDŹ]
    Kod php:
            if (!isset($_POST['razy']))
            {
                
    error(ERROR);
            }
            if (!
    ereg("^[1-9][0-9]*$"$_GET['fight1']) || !ereg("^[1-9][0-9]*$"$_POST['razy']))
            {
                
    error (NO_ID);
            } 
    [ZAMIEŃ NA]
    Kod php:
            if (!isset($_POST['razy']) && !isset ($_POST['action']))
            {
                
    error(ERROR);
            }
            if (!
    ereg("^[1-9][0-9]*$"$_GET['fight1']) || !isset ($_POST['action']) && !ereg("^[1-9][0-9]*$"$_POST['razy']))
            {
                
    error (NO_ID);
            } 
    [ZNAJDŹ]
    Kod php:
            if ($_POST['razy'] > 20)
            {
                
    error($lang['TOO_MUCH_MONSTERS']);
            } 
    [ZAMIEŃ NA]
    Kod php:
            if (!isset ($_POST['action']) && $_POST['razy'] > 20)
            {
                
    error(TOO_MUCH_MONSTERS);
            }
            if (isset(
    $_POST['razy']) && !isset ($_POST['action']))
            {
                
    $_SESSION['razy'] = $_POST['razy'];
            } 
    [ZNAJDŹ]
    Kod php:
            if ($player -> energy $_POST['razy'] && !isset($_POST['action']))
            {
                
    error (NO_ENERGY2);
            } 
    [ZAMIEŃ NA]
    Kod php:
            if (!isset($_POST['action']) && $player -> energy $_POST['razy'])
            {
                
    error (NO_ENERGY2);
            } 
    [ZNAJDŹ]
    Kod php:
            if ($_POST['razy'] > 1)
            {
                for (
    $k 2$k <= $_POST['razy']; $k++)
                {
                    
    $expgain $expgain ceil($expgain1 * (sqrt($k) + 4.5));
                }
            }
            
    $goldgain ceil((rand($enemy1 -> fields['credits1'],$enemy1 -> fields['credits2']) * $_POST['razy']) * $span); 
    [ZAMIEŃ NA]
    Kod php:
            if ($_SESSION['razy'] > 1)
            {
                for (
    $k 2$k <= $_SESSION['razy']; $k++)
                {
                    
    $expgain $expgain ceil($expgain1 * (sqrt($k) + 4.5));
                }
            }
            
    $goldgain ceil((rand($enemy1 -> fields['credits1'],$enemy1 -> fields['credits2']) * $_SESSION['razy']) * $span); 
    [ZNAJDŹ]
    Kod php:
            if (!isset ($_POST['action'])) 
            { 
    [DODAJ PO]
    Kod php:
                unset($_SESSION['miss']); 
    [OTWÓRZ]
    includes/turnfight.php
    [ZNAJDŹ]
    Kod php:
    if (isset($_POST['miss']) && $_POST['miss'] > $myunik
        {
            
    $myunik $_POST['miss'];
        }
        
    $amount 1;
        if (isset (
    $_POST['razy'])) 
        {
            
    $amount $_POST['razy'];
        } 
    [ZAMIEŃ NA]
    Kod php:
        if (isset($_SESSION['miss']) && $_SESSION['miss'] > $myunik
        {
            
    $myunik $_SESSION['miss'];
        }
        
    $amount 1;
        if (isset (
    $_SESSION['razy'])) 
        {
            
    $amount $_SESSION['razy'];
        } 
    [ZNAJDŹ]
    Kod php:
    $smarty -> assign ("Message""<br /><li><b>".YOU_DEFEAT." <b>".$_POST['razy']." ".$enemy['name']."</b>."); 
    [ZAMIEŃ NA]
    Kod php:
    $smarty -> assign ("Message""<br /><li><b>".YOU_DEFEAT." <b>".$_SESSION['razy']." ".$enemy['name']."</b>."); 
    [ZNAJDŹ]
    Kod php:
        $smarty -> assign(array("Rest" => $rest
                                
    "Myunik" => $myunik
                                
    "Amount" => $amount,
                                
    "Aescape" => A_ESCAPE,
                                
    "Arest" => A_REST,
                                
    "Aexhaust" => EXHAUST,
                                
    "Next" => S_FIGHT)); 
    [ZAMIEŃ NA]
    Kod php:
        $_SESSION['miss'] = $myunik;
        
    $_SESSION['razy'] = $amount;
        
    $smarty -> assign(array("Rest" => $rest
                                
    "Aescape" => A_ESCAPE,
                                
    "Arest" => A_REST,
                                
    "Aexhaust" => EXHAUST,
                                
    "Next" => S_FIGHT)); 
    Ostatnio edytowane przez McFly ; 27-03-2010 o 13:30

  2. #2
    Zarejestrowany
    Dołączył
    Sep 2009
    Posty
    177

    Domyślnie

    Dobry pomysł, jednak co do bugu z turnfight.php proponuję zrobić tak:

    1.W bazie danych w tabeli players dodajemy pole o nazwie np. fightile, następnie ustawiamy wartości itp. (podam swoje każdy chyba wie, gdzie co jest):
    Kod:
    `fightile` int(11) NOT NULL default '1',
    2.W turnfight.php odnajdujemy to:

    Kod:
     $gmagia = 0;
        if (!isset($_SESSION['round']))
        {
            $_SESSION['round'] = 1;
          $_SESSION['xxx'] = 0;
             if ($_SESSION['xxx'] == 0)
            {
               $db -> Execute("UPDATE players SET fightile=".$_POST['razy']." WHERE id=".$player -> id);
            }
    
           
        }
    
    
            $_SESSION['xxx'] = $_SESSION['xxx'] + 1;
    
    
        $cos = $db -> Execute( "SELECT fightile FROM players WHERE id=".$player -> id);
    Za tym wklejamy to:

    Kod:
            if ($cos -> fields['fightile'] != $_POST['razy'])
            {
                     $strDate = $db -> DBDate($newdate);
                                                                                         
                $db -> Execute("UPDATE players SET hp=0, fight=0, bless='', blessval=0 WHERE id=".$player -> id);
                unset($_SESSION['round']);
                $strMessage = "Gracz: ".$player -> id."<br/>Poczatkowo: ".$cos -> fields['fightile']."<br/>Na koncu: ".$_POST['razy']."<br/>Potworek: ".$player ->fight;
                $db -> Execute("INSERT INTO mail (sender, senderid, owner, subject, body, `date`) VALUES('Herold','0','1','próba cheatu','".$strMessage."', ".$strDate.")");
                error('BlbyenD!');
                break;
    
            }
    Powinno wyglądać to tak:

    Kod:
        $gmagia = 0;
        if (!isset($_SESSION['round']))
        {
            $_SESSION['round'] = 1;
          $_SESSION['xxx'] = 0;
             if ($_SESSION['xxx'] == 0)
            {
               $db -> Execute("UPDATE players SET fightile=".$_POST['razy']." WHERE id=".$player -> id);
            }
    
           
        }
    
    
            $_SESSION['xxx'] = $_SESSION['xxx'] + 1;
    
    
        $cos = $db -> Execute( "SELECT fightile FROM players WHERE id=".$player -> id);
           
    
           
                
            if ($cos -> fields['fightile'] != $_POST['razy'])
            {
                     $strDate = $db -> DBDate($newdate);
                                                                                         
                $db -> Execute("UPDATE players SET hp=0, fight=0, bless='', blessval=0 WHERE id=".$player -> id);
                unset($_SESSION['round']);
                $strMessage = "Gracz: ".$player -> id."<br/>Poczatkowo: ".$cos -> fields['fightile']."<br/>Na koncu: ".$_POST['razy']."<br/>Potworek: ".$player ->fight;
                $db -> Execute("INSERT INTO mail (sender, senderid, owner, subject, body, `date`) VALUES('Herold','0','1','próba cheatu','".$strMessage."', ".$strDate.")");
                error('BlbyenD!');
                break;
    
            }
    3.Cieszymy się naprawionym bugiem. Czym jest jego rozwiązanie? Otóż po próbie oszustwa przez gracza, admin id 1 (lub inne id, zależy jak sobie wpiszesz w kodzie), dostanie na pocztę w grze wiadomość o treści: nick oszusta, id oszusta i kiedy próbował oszustwa.
    Ostatnio edytowane przez Deze ; 14-05-2010 o 22:32 Powód: Błąd

Informacje o wątku

Użytkownicy przeglądający ten wątek

Aktualnie 1 użytkownik(ów) przegląda ten wątek. (0 zarejestrowany(ch) oraz 1 gości)

Podobne wątki

  1. [Oszustwo] tribearmor.php
    Przez McFly w dziale Bugologia
    Odpowiedzi: 0
    Ostatni post / autor: 04-06-2010, 03:11
  2. [Oszustwo] sedzia.php
    Przez McFly w dziale Bugologia
    Odpowiedzi: 17
    Ostatni post / autor: 01-04-2010, 13:44
  3. [Oszustwo] tribeware.php
    Przez McFly w dziale Bugologia
    Odpowiedzi: 0
    Ostatni post / autor: 25-03-2010, 20:01
  4. [Oszustwo] bank.php
    Przez McFly w dziale Bugologia
    Odpowiedzi: 2
    Ostatni post / autor: 16-03-2010, 19:46
  5. [Oszustwo] house.php
    Przez McFly w dziale Bugologia
    Odpowiedzi: 0
    Ostatni post / autor: 16-03-2010, 17:43

Zakładki

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •