Exponentenschreibweise ausgrenzen

Anubis1982

Grünschnabel
Hallo, hab mal wieder eine Frage...

ich habe ein node.js script und in einer funktion möchte ich die exponentenschreibweise ausgrenzen (z.B. 1e+1) ergibt 10

mein Problem ist, auf meiner Seite kann man coins setzen und damit ein Spiel spielen, doch wenn man in einem Javascript von der Seite

Javascript:
$(".betButton").on("click", function() {
       var lower = $(this).data("lower");
       var upper = $(this).data("upper");
       var amount = str2int($("#betAmount").val());
       if ($("#settings_dongers").is(":checked")) {
           amount = amount * 1000;
       }
       amount = Math.floor(amount);
       var conf = $("#settings_confirm").is(":checked");
       if (conf && amount > 10000) {
           var pressed = false;
           bootbox.confirm("Are you sure you want to bet " + formatNum(amount) + " credits?<br><br><i>You can disable this in settings.</i>", function(result) {
               if (result && !pressed) {
                   pressed = true;
                   send({
                       "type": "bet",
                       "amount": amount,
                       "lower": lower,
                       "upper": upper,
                       "round": ROUND
                   });
                   LAST_BET = amount;
                   $(this).prop("disabled", true);
               }
           });
       } else {
           send({
               "type": "bet",
               "amount": amount,
               "lower": lower,
               "upper": upper,
               "round": ROUND
           });
           LAST_BET = amount;
           $(this).prop("disabled", true);
       }
       return false;
   });

bei den beiden "amount": amount, es zu "amount": "1e+1", ändert dann setzt man 1 coin aber die Seite denkt man setzt 10 Coins

so und nun die dazugehörige funktion in dem Node.js script...

Javascript:
function setBet(m, user, socket) {
    if((usersBr[user.steamid] !== undefined) && (usersBr[user.steamid] == br)) {
        socket.emit('message', {
            type: 'error',
            enable: true,
            error: 'You have already placed '+usersBr[user.steamid]+'/'+br+' bets this Round.'
        });
        return;
    }
    if((m.amount < minbet) || (m.amount > maxbet)) {
        socket.emit('message', {
            type: 'error',
            enable: true,
            error: 'Invalid bet Amount.'
        });
        return;
    }
    if(pause) {
        socket.emit('message', {
            type: 'error',
            enable: false,
            error: 'Betting for this Round are closed.'
        });
        return;
    }
    var start_time = new Date();
    query('SELECT `balance` FROM `users` WHERE `steamid` = '+pool.escape(user.steamid), function(err, row) {
        if((err) || (!row.length)) {
            logger.error('Failed to find DB');
            logger.debug(err);
            socket.emit('message', {
                type: 'error',
                enable: true,
                error: 'You are not DB'
            });
            return;
        }
if((m.lower == 0 && m.upper == 0) || (m.lower == 1 && m.upper == 7) || (m.lower == 8 && m.upper == 14)) {
           if(row[0].balance >= m.amount) {
           query('UPDATE `users` SET `balance` = `balance` - '+parseInt(m.amount)+' WHERE `steamid` = '+pool.escape(user.steamid), function(err2, row2) {
               if(err2) {
                   logger.error('Error in Withdraw');
                   logger.debug(err);
                   socket.emit('message', {
                       type: 'error',
                       enable: true,
                       error: 'You don\'t have enough Diamonds!'
                   });
                   return;
               }
               query('INSERT INTO `bets` SET `user` = '+pool.escape(user.steamid)+', `amount` = '+pool.escape(m.amount)+', `lower` = '+pool.escape(m.lower)+', `upper` = '+pool.escape(m.upper), function(err3, row3) {
                   if(err3) {
                       logger.error('Error in DB');
                       logger.debug(err);
                       return;
                   }
                   var end = new Date();
                   if(usersBr[user.steamid] === undefined) {
                       usersBr[user.steamid] = 1;
                   } else {
                       usersBr[user.steamid]++;
                   }
                   if(usersAmount[user.steamid] === undefined) {
                       usersAmount[user.steamid] = {
                           '0-0': 0,
                           '1-7': 0,
                           '8-14': 0
                       };
                   }
                   usersAmount[user.steamid][m.lower+'-'+m.upper] += parseInt(m.amount);
                   currentSums[m.lower+'-'+m.upper] += m.amount;
                   socket.emit('message', {
                       type: 'betconfirm',
                       bet: {
                           betid: row3.insertId,
                           lower: m.lower,
                           upper: m.upper,
                           amount: usersAmount[user.steamid][m.lower+'-'+m.upper]
                       },
                       balance: row[0].balance-m.amount,
                       mybr: usersBr[user.steamid],
                       br: br,
                       exec: (end.getTime()-start_time.getTime()).toFixed(3)
                   });
                   users[user.steamid].balance = row[0].balance-m.amount;
                   io.sockets.emit('message', {
                       type: 'bet',
                       bet: {
                           amount: usersAmount[user.steamid][m.lower+'-'+m.upper],
                           betid: row3.insertId,
                           icon: user.avatar,
                           lower: m.lower,
                           name: user.name,
                           rollid: currentRollid,
                           upper: m.upper,
                           user: user.steamid,
                           won: null
                       },
                       sums: {
                           0: currentSums['0-0'],
                           1: currentSums['1-7'],
                           2: currentSums['8-14'],
                       }
                   });
                   currentBets.push({
                       amount: m.amount,
                       betid: row3.insertId,
                       icon: user.avatar,
                       lower: m.lower,
                       name: user.name,
                       rollid: currentRollid,
                       upper: m.upper,
                       user: user.steamid,
                   });
                   logger.debug('Bet #'+row3.insertId+' Ammount: '+m.amount);
                   checkTimer();
               })
           });
           } else {
               socket.emit('message', {
                   type: 'error',
                   enable: true,
                   error: 'You don\'t have any Coins'
               });
           }
       } else {
               socket.emit('message', {
                   type: 'error',
                   enable: true,
                   error: 'Nice try to hack this Game, but sorry you are banned NOW !!!'
               });
               
            query('UPDATE `users` SET `balance` = 0 WHERE `steamid` = '+pool.escape(user.steamid));
            query('UPDATE `users` SET `ban` = 1 WHERE `steamid` = '+pool.escape(user.steamid));
       
           }
   });
}

Wie kann ich dort verhindern, das man diese hintertür benutzen kann?

ich vermute das das irgendwo in diesem Teil

Javascript:
if((m.amount < minbet) || (m.amount > maxbet)) {
        socket.emit('message', {
            type: 'error',
            enable: true,
            error: 'Invalid bet Amount.'
        });

hinterlegt werden muss....
 
Ahoi. Du kannst Number oder parseInt benutzen um den Wert in eine richtige Zahl zu parsen. Ich habe das mit 1e+1 getestet mit Number(1e+1) und parseInt(1e+1) und der Rückgabewert war in beiden Fällen 10. Ich denke, dass sollte dir helfen. Anschließend kannst du den Rückgabewert natürlich noch weiter prüfen.

Code:
var amount = 1e+1;

Number(amount); // 10
parseInt(amount); // 10
 

Neue Beiträge

Zurück