Autor Zpráva
Smoother
Profil *
Mám tento kód pro kontrolu CAPTCHY, je to ok. Z SESSION dostanu stejné hodnoty jako z POST (po správném opsání obrázku). Pokud to proběhne v poho, chci dát do $test hodnotu ok. Pokud nedojde k opsání obrázku, chci zastavit zpracování kódu.

PHP:
$test='spatny';
if (isset($_POST['opis']) && isset($_SESSION['captcha'])){
if (strtolower($_POST['opis'])==strtolower($_SESSION['captcha'])) {$test='ok';}
else {
die('Neopsali jste přesně pole s kontrolou proti SPAMU !!!');}
}
//výpis pro kontrolu
echo 'captcha je '.$captcha.'<br>';
echo 'opis je '.$opis.'<br>';
echo 'test je '.$test.'<br>';

if ($test=='ok') { $kontrola='vpoho';
} else {die('Neopsali jste pole s kontrolou proti SPAMU !!!');}


no a po zadání správných údajů vypíše:

captcha je f8e917
opis je f8e917
test je spatny
Neopsali jste pole s kontrolou proti SPAMU !!!

Díky předem za jakoukoliv konstruktivní radu. PHP se učím, ale koukám už do toho půl dne a zkouším vše možné, takže rady typu "nauč se..., koukni do manuálu..." ne.
Díky za pomoc.
Smoother
tiso
Profil
Nikde tam nevidím session_start();
Smoother
Profil
sorry, neskopnul jsem to, ale je tam hned nad $test='spatny';
Mastodont
Profil
$_SESSION['captcha'] skutečně existuje? Odkud bereš $captcha?
Smoother
Profil
$_SESSION['captcha'] existuje - tahám z ext. souboru, který generuje náhodné obrázky... session je tam taky zapnuté.. Ten výpis pro kontrolu mi tam vždy vypíše správný kód obrázku, takže tam problém nevidím. Prostě mi to nevyhodnotí strtolower($_POST['opis'])==strtolower($_SESSION['captcha']) jako pravdivé a v $test zůstane hodnota 'spatny'...
Díky za reakci
S.
tiso
Profil
Smoother - podľa toho výpisu sa nevykoná tá prvá podmienka if(isset... nemáš chybu tam?
Smoother
Profil
tiso: Tak jsem to trochu upravil aby to bylo zřetelnější... if(isset... se mi zdá dobré, protože kontrolní výpis mi vypíše obě proměnné...

PHP:
session_start();
$test='spatny';
if (isset($_POST['opis']) && isset($_SESSION['session'])){
//porovnáme odeslanou hodnotu se záznamem v session
if (strtolower($_POST['opis'])==strtolower($_SESSION['session'])) {$test='ok';}
else { die('Nevyhovuje podmince 1');}
}
//kontrolni vypis
echo 'session je '.$session.'<br>';
echo 'opis je '.$opis.'<br>';
echo 'test je '.$test.'<br>';

if ($test=='ok') { $kontrola='vpoho';
} else {die('Nevyhovuje podmince 2');}

vypíše:

kod je b1efc6
kod2 je b1efc6
test je spatny
Nevyhovuje podmince 2

Opravdu nevím, díky...
tiso
Profil
Smoother - hovorím že toto sa vôbec nevykoná:
if (isset($_POST['opis']) && isset($_SESSION['session'])){

echo 'tu si píšem čo len chcem, ale vo výpise sa to nezobrazí, skús to!<br>';
//porovnáme odeslanou hodnotu se záznamem v session
if (strtolower($_POST['opis'])==strtolower($_SESSION['session'])) {$test='ok';}
else { die('Nevyhovuje podmince 1');}
}
Smoother
Profil
Tiso: máš pravdu, ale co s tím, přiznám se že jsem v koncích... Data tam přece jsou shodná, tak proč to neporovná? Proč je nenajde 'isset', když kontrolní výpis je vypíše???

zpracovani.php
session_start();
$test='spatny';
if (isset($_POST['opis']) && isset($_SESSION['captcha'])){
echo 'Tiso má pravdu :o)';
if (strtolower($_POST['opis'])==strtolower($_SESSION['captcha'])) {$test='ok';}
else { die('Nevyhovuje podmince 1');}
}
// kontrolní výpis
echo 'Hodnota captcha je '.$captcha.'<br>';
echo 'Opsaný kód je '.$opis.'<br>';
echo 'test je '.$test.'<br>';

if ($test=='ok') { $kontrola='vpoho';
} else {die('Nevyhovuje podmince 2');}


Vypíše:
Hodnota captcha je 41969c
Opsaný kód je 41969c
test je spatny
Nevyhovuje podmince 2
Mastodont
Profil
Zkus to upravit na

echo 'Hodnota captcha je '.$_SESSION['captcha'].'<br>';
echo 'Opsaný kód je '.$_POST['opis'].'<br>';

Co to vypíše?
tiso
Profil
Smoother - neviem kde je chyba
<?php

session_start();
//podmienka:
if(isset($_POST["opis"]) && isset($_SESSION["captcha"])){
echo "Mne to funguje.";
}
//inicializacia:
if(!isset($_POST["submit"])){$val=md5("val");}
else{
$val=md5($_POST["opis"]);
echo '<pre>'.print_r($_POST, TRUE).print_r($_SESSION, TRUE).'</pre>';
}
$_SESSION["captcha"]=$val;
?>
<form action="" method="post">
<input type="text" name="opis" value="<?php echo $val; ?>">
<input type="submit" name="submit" value="submit">
</form>


btw. som tiso, nie Tiso, platí i pre začiatok vety...
Smoother
Profil
sorry tiso :o)
Mastodont: - trefa:
vypíše:
Hodnota captcha je 9c4afd
Opsaný kód je
test je spatny
Nevyhovuje podmince 2
Mastodont
Profil
No vidíš, takže dál už víš, kde je problém.
Smoother
Profil
přesně, díky moc - jsem Máňa
tiso - díky za snahu a nakopávání
Mastodont - díky za trefu a nakopnutí :o)
kluci jste skvělí
už to fachá:

Tiso má pravdu :o)Hodnota captcha je dedaf9
Opsaný kód je dedaf9
test je ok


Díky
Smoother

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