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 |
#2 · Zasláno: 28. 10. 2017, 16:47:19
Živá ukázka
Ale stejně jako minule - kdokoli se může podívat do kódu a nafejkovat výhru. |
||
WordpressKokos Profil |
#3 · Zasláno: 28. 10. 2017, 17:53:20
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 |
#4 · Zasláno: 28. 10. 2017, 18:20:53
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 |
#6 · Zasláno: 28. 10. 2017, 22:08:07
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. |
||
Časová prodleva: 4 dny
|
|||
WordpressKokos Profil |
#7 · Zasláno: 1. 11. 2017, 17:17:17
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! |
||
Časová prodleva: 6 let
|
0