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> 
Budu rád za pomoc.
Keeehi
Profil
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
A jak použít sessions?
Keeehi
Profil
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
Dík.
Daniel47
Profil
Moc to nechápu u javacriptu je to jednodušší.
Tomášeek
Profil
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
Není ještě něco jednoduššího?.
Tomášeek
Profil
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
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
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
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
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.
CZechBoY
Profil
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0