Autor | Zpráva | ||
---|---|---|---|
Daniel47 Profil |
Ahoj mám problém nefunguje mi tento kód a nevím proč, skoušel jsem spousta věci, ale přesto nevím proč nefunguje.
Kód pro opravu: <!DOCTYPE html> <html lang="cs-cz"> <head> <meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="http://dettube-cz.euweb.cz/css/styl.css" type="text/css" /> </head> <body> <?php $NoSpamKodOvereni = $_GET['nospam']; $NoSpamGeneratorKod = mt_rand(1, 1000000); echo ($NoSpamGeneratorKod); if($NoSpamKodOvereni == $NoSpamGeneratorKod) { echo ('<b>Správně</b>'); } else echo ('<b>Špatně</b>'); ?> <form action="" method="GET"> <br /><input name="nospam" style="border: 5px solid blue; background-color: yellow" placeholder="Opište sem kód" size="15px" type="text"><br /> <button class="button-green" type="submit"><b>Odeslat</b></button> </form> </body> </html> |
||
Keeehi Profil |
#2 · Zasláno: 28. 4. 2019, 00:11:06
Proč to nefunguje je celkem jednoduché. Vygeneruješ náhodné číslo a to vypíšeš do stránky. Číslo opíšeš do inputu, odešleš formulář a script se spustí znovu. Vygeneruješ další náhodné číslo a to porovnáváš s původním. Máš šanci jedna ku milionu, že se ti vygeneruje to samé číslo.
Je jasné, že to číslo musíš mezi jednotlivými běhy uložit. A na soubor zapomeň, každý návštěvník by potřeboval vlastní uložiště. Použij sessions. |
||
Daniel47 Profil |
#3 · Zasláno: 28. 4. 2019, 00:47:53
A jak použít sessions?
|
||
Keeehi Profil |
#4 · Zasláno: 28. 4. 2019, 01:06:38
Máš tam odkaz. Případně si můžeš dohledat jiné zdroje, pokud by ti to nevyhovovalo. Je to naprosto běžná věc, článků na to určitě najdeš spoustu.
|
||
Daniel47 Profil |
#5 · Zasláno: 28. 4. 2019, 01:20:43
Dík.
|
||
Daniel47 Profil |
#6 · Zasláno: 28. 4. 2019, 16:40:16
Moc to nechápu u javacriptu je to jednodušší.
|
||
Tomášeek Profil |
#7 · Zasláno: 28. 4. 2019, 16:49:26
Daniel47:
Je to podobne, jen js nerefreshuje stránku, není tedy třeba si původní hodnotu pamatovat, zůstává stejná. Vysvětlení v #2 je dostatečné a kompletní. Snaž se. |
||
Daniel47 Profil |
#8 · Zasláno: 28. 4. 2019, 19:34:06
Není ještě něco jednoduššího?.
|
||
Tomášeek Profil |
#9 · Zasláno: 28. 4. 2019, 19:41:45
Daniel47:
Není, toto je jednoduché az až. Programování je normální zaměstnání, je možné, ze na nej jen nemáš buňky. Anebo jsi do nej zatím nedorostl. Tohle je naprostý základ, který obejít nejde. Mrkni na pehapko.cz, muže ti pomoci. Pokud ani to ne, tak na programování nejsi (neber si to osobně). |
||
Daniel47 Profil |
#10 · Zasláno: 29. 4. 2019, 00:14:47
Dáte mi prosím hotovej kód. Už vážnej nevím, jak to udělat. Nebo na nějáké skvělé články o php, kde je to až do podrobna.
|
||
Keeehi Profil |
#11 · Zasláno: 29. 4. 2019, 00:36:55
„Dáte mi prosím hotovej kód.“
Ne, to tady neděláme. Hlavně z edukačních důvodů. Na práci se session není nic těžkého, ale pokud s tím máš opravdu takové problémy, tak zkus nejdříve něco úplně jednoduchého. Na jedné stránce nejakou hodnotu do session napsat a na jiné ji jen přečíst a vypsat. |
||
Daniel47 Profil |
#12 · Zasláno: 29. 4. 2019, 15:09:04
Nefunguje mi ani tenhle kód.
Kód: <!DOCTYPE html> <html lang="cs-cz"> <head> <meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="http://dettube-cz.euweb.cz/css/styl.css" type="text/css" /> </head> <body> <?php session_start(); $_SESSION["NoSpamKodVstup"] = $_POST['nospam']; $_SESSION["NoSpamKodGenerator"] = mt_rand(1, 1000000); echo $_SESSION["NoSpamKodGenerator"]; if($_SESSION["NoSpamKodGenerator"] == $_SESSION["NoSpamKodVstup"]) { session_destroy(); echo ('<b>Správně</b>'); } else session_destroy(); echo ('<b>Špatně</b>'); ?> <form action="" method="POST"> <br /><input name="nospam" style="border: 5px solid blue; background-color: yellow" placeholder="Opište sem kód" size="15px" type="text"><br /> <button class="button-green" type="submit"><b>Odeslat</b></button> </form> </body> </html> |
||
JakubHekal Profil |
#13 · Zasláno: 29. 4. 2019, 15:19:38
Co píše za chybu?
|
||
Tomášeek Profil |
JakubHekal:
Tipnu si chybějící závorku, samozřejmě navíc i undefined index. A logika kódu, kdy ten antispam nemůže fungovat. Daniel47: Takhle ten kód fungovat nemůže, vysvětlení máš v [#2]. V tomto se chová úplně stejně, ať pracuješ s GET či POST polem. Zkus pochopit, jak se ten kód vykonává, kdy se která proměnná naplňuje. SESSION není nic magického, v posloupnosti zpracování kódu se chová stejně jako jakákoliv jiná proměnná, jen umí navíc podržet hodnotu napříč více načteními stránky/více stránkami. Tvůj problém je ale stále stejný, takže znovu návrat k [#2] (se sessions nesouvisí). |
||
Daniel47 Profil |
Udělám to potom, teď se naučím pořádně php.
Jinák dík. |
||
Mlocik97 Profil |
Daniel47:
áno, radši sa nauč PHP, kup si nejaké knihy, najdi si tutoriály, a uč sa... nebudeš "spamovať" diskusi. |
||
Časová prodleva: 3 dny
|
|||
CZechBoY Profil |
#17 · Zasláno: 2. 5. 2019, 23:03:08
Tipnul bych si na to, že session_start() musí být před jakýmkoliv výstupem do stránky, ale nad php je ještě html.
|
||
Časová prodleva: 6 let
|
0