Autor Zpráva
WordpressKokos
Profil
Zdravím:

Potřeboval bych poradit jak prodloužit generování náhodných čísel v javaskriptu:

<script>
function randomIntFromInterval(100,200)
{
    return Math.floor(Math.random()*(max-min+1)+min);
}
document.getElementById("number").innerHTML = randomIntFromInterval();

</script>
<h2 id="number"></h2>

1. Vůbec se mi negeneruje číslo :(
2. Vážně bych potřeboval aby se to chvíly jako kdyby točilo ty čísla náhodně a až pak se ukázalo náhodné číslo,
3. Pokud je číslo víc jak 5000 tak se spustí php vyhráls.

Vážně děkuju komukoliv kdo mi pomůže
Keeehi
Profil
Živá ukázka

Ale stejně jako minule - kdokoli se může podívat do kódu a nafejkovat výhru.
WordpressKokos
Profil
Keehi si fakt borec díky. Kdyby jsi měl nějaký zajímavý článek jak chránit ten javascript dej mi vědět.

Právě teď mi to vygeneruje číslo a já ho potřebuju vzít abych s ním mohl pracovat v php:

<form id="Ano" align="center" method="post">
<form id="Ne" align="center" method="post">
<script>

function randomIntFromInterval(min, max)
{
    return Math.floor(Math.random()*(max-min+1)+min);
}

var number;
function generateNumber () {
    document.getElementById("number").innerHTML = number = randomIntFromInterval(0, 10000);
}

function finishGeneration () {
    clearInterval(timer);
    if (number > 5000) {
        document.getElementById("Ne").submit();
    } else {
        document.getElementById("Ano").submit();
    }
}

var timer = setInterval(generateNumber, 50);

setTimeout(finishGeneration, 2500);

</script>
<input type="button" value="Ano" onclick="generateNumber ()"/>
<input type="button" value="Ne" onclick="generateNumber ()"/>
</form>
</form>

Jak mám udělat aby se celý tento javaskript spustil po stisknutí jednoho z těch dvou tlačítek?
Keeehi
Profil
WordpressKokos:
Kdyby jsi měl nějaký zajímavý článek jak chránit ten javascript dej mi vědět.
Javascript nejde nikdy chránit protože běží u uživatele a tudíž si s ním může dělat co chce.

Můžeš si v PHP vygenerovat číslo, uložit si ho do session a vypsat ho i JS části javascriptu. Ten generátor bude fungovat jak teď, jen když se zastaví, vrazí tam to číslo co má od PHP v proměnné.
Když pak JS bude serveru oznamovat výhru/nevýhru, bude server vědět, jak to mělo doopravdy dopadnout. Takže mu tu hodnotu nemusí JS ani posílat a stačí, že ho jen zavolá. Když mu ale tu hodnotu i pošle, můžeš kontrolovat, zda hodnota sedí a pokud ne, tak víš že se ten někdo pokouší podvádět. A můžeš ho za to třeba nějak penalizovat. Ovšem v tom případě si musíš být jistý, že tu práci se session máš dobře. Je totiž potřeba ke každému generování přiřadit unikátní identifikátor, protože jinak to bude jako podvodníka vyhodnocovat i obyčejného uživatele, který má stránku otevřenou ve více tabech.
WordpressKokos
Profil
Takže v podstatě udělat ten "rotátor" čísel jen pro efekt ale generovat výsledek v php a potom ho dosadit pomocí <?php echo>:

Promiň fakt nerozumím javaskriptu, můžeš mi pomoct jak to myslíš s tím vypsáním, fakt ne vím jak:

PHP:

$ranges = Array(
    Array(1,15,95), // [0-15] on 95% chance
    Array(16,50,3),
    Array(51,80,1),
    Array(81,100,1)
                    );
$sel = rand(0,99);
do {
    $pick = array_shift($ranges);
    $sel -= $pick[2];
} while($pick && $sel >= 0);
$random = rand($pick[0],$pick[1]);

Jak číslo co tohle vyhodí vložím do toho javaskriptu aby věděl že na tomto čísle se má zastavit.

A ješte poslední otázka, jak udělat aby ten javaskript jen jen když kliknu na tlačítko Ano nebo Ne, ne hned po načtení stránky.

Díky moc!
WordpressKokos
Profil
Okay už mám že se načte číslo jen když kliknu na jedno s těch tlačítek jenom ted bez animace což nechápu proč, okamžitě se tam ukáže číslo i když mám
setTimeout(finishGeneration, 2500);

Všechno funguje až na tu linku timeout, takže se číslo ukáže hned.
WordpressKokos
Profil
if (isset($_POST['High'])) {
    
    $ranges = Array(
    Array(0001,5000,75), 
    Array(5001,1000,25),
);
$sel = rand(0,10000);
do {
    $pick = array_shift($ranges);
    $sel -= $pick[2];
} while($pick && $sel >= 0);
$random = rand($pick[0],$pick[1]);
    

    
    mysqli_close($conn);}
    
    
if (isset($_POST['Low'])) {

    $ranges = Array(
    Array(0001,5000,25), 
    Array(5001,1000,75),
);
$sel = rand(0,10000);
do {
    $pick = array_shift($ranges);
    $sel -= $pick[2];
} while($pick && $sel >= 0);
$random = rand($pick[0],$pick[1]);

    mysqli_close($conn);}
    
    
    
if($_SERVER["REQUEST_METHOD"] == "POST")
{
    if (isset($_POST['win'])){
        
        $coins = 10*2;
        
        
    $winmessage = "<div class=isa_success>Yes !! You just won $coins Coins!</div>";
        
    } 
    

    if (isset($_POST['lose'])){
        
    $coins = 10;
        
    $losemessage = "<div class=isa_error>Nope :/, You lost $coins...</div>";
}

}


<script>
var btnHigh = document.getElementById("High");
var btnLow = document.getElementById("Low");

btnHigh.addEventListener("click", generatorHigh);
btnLow.addEventListener("click", generatorLow);

function generatorHigh () {

function randomIntFromInterval(min, max)
{
    return Math.floor(Math.random()*(max-min+1)+min);
}

var number = document.getElementById("random");

function getNumber () {
    document.getElementById("number").innerHTML = number;
    

function finishGeneration () {
    if (number > 5000) {
        document.getElementById("winForm").submit();
    } else {
        document.getElementById("loseForm").submit();
        
        
    }
    
    setTimeout(finishGeneration, 2500);
}
}

}



function generatorLow () {

function randomIntFromInterval(min, max)
{
    return Math.floor(Math.random()*(max-min+1)+min);
}

var number = document.getElementById("random");

function getNumber () {
    document.getElementById("number").innerHTML = number;
    

function finishGeneration () {
    if (number < 5000) {
        document.getElementById("winForm").submit();
    } else {
        document.getElementById("loseForm").submit();
        
        
    }
    
    setTimeout(finishGeneration, 2500);
}
}

}


</script>
<form id="winForm" target="HiddenIframe" name="win" action="" method="post">
<?php echo $winmessage ; ?>
</form>
<form id="loseForm" target="HiddenIframe" name="lose" action="" method="post">
<?php echo $losemessage ; ?>
</form>

<iframe name="HiddenIframe" style="width: 100%; height: 200px; display: none;"></iframe>
<h1 id="number"></h1>
<input type="submit" name="submit" value="High" id="High" />
<input type="submit" name="submit" value="Low" id="Low"/>


Vím že je to nezabezpečené, ale chci aby to fungovalo a pak to vymislím jinak :)

Je to tvuj Generátor Čísel Keeni + vygenerování čísla v php použitím tlačítka a iframu aby se zastavil na čísle s nějakou pravděpodobností.

Teď když kliknu na jekékoliv tlačítko začne se něco načítat ale nezačne se generovat číslo, žádna animace jenom prázdno.

Pls help!

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: