Javascript a šifrování || jak proměnnou z javascriptu do PHP

Ahoj všichni!
Hele, potřeboval bych poradit. Mám stránku s fórem. Chci si udělat ochranu proti spambotům - takové to opisování kódu z obrázku.

Ok, mám stránku s formulářem a fórem a phpkem do ní vkládám náhodný obrázek. V php mám také vytvořenou proměnnou která obsahuje správnou odpověď (správný kód).

Tak teď bych potřeboval, abych v takové té funkci, kterou volám onSubmit a ověřuju, jestli bylo zadáno jméno, email atd. atd., ověřil i správnost kódu. To bych pořád zvládl, protože výstup správného kódu z php do javascriptu na ověření bych uměl.

ALE problém je ten, že takhle bude správný kód vidět ve zdrojáku stránky.

Proto bych potřeboval nějak udělat, aby nebyl. Buď zašifrováním toho kódu (jednosměrným, nějaká obdoba md5() ) nebo výstupem kódu zadaného uživatelem z javascriptu do php (kde bych to ověřil aniž by to bylo vidět ve zdrojáku).

Omlouvám se, že je to tak blbě napsané, ale je to složité. Umíte někdo prosím poradit? Dík moc ;)
Vida, po čase konečně zajímavý dotaz.

Skript md5.js si stáhni z http://pajhome.org.uk/crypt/md5/md5.js

Tady máš ukázku:



<head>
<script src="md5.js"></script>
<script language="JavaScript"><!--
function validate() {
if (document.myForm.hash.value != hex_md5(document.myForm.cislo.value))
{alert("Chybny kod"); return false;}
else
return true;
}
//--></script>

</head>

<body>
<?php

$cislo = rand(1,999);
$hash = md5($cislo);

echo "
<form name='myForm' onSubmit='return validate()'>
<input type='hidden' name='hash' value=$hash>
Zadej kontrolni kod: $cislo
<input type='text' name='cislo'>
<input type='submit' value='Submit'>
</form>
";
?>

</body>
Díky, vyzkouším :)
Kua, nevím proč, ale nefunguje to :(
Hodím sem tedy zdroják, i kdaž je dost nepřehledný - podstatné části najdete sami - je to ta funkce zkontroluj(formular) a php část. Vím, že je to prasácky napsaný, ale nepsal jsem to já, já tam mám jen dodělat tu věc s tím obrázkovým kódem.


<head>
<LINK href="styl.css" rel="stylesheet" type="text/css">
<title>Kniha návštěv</title>

<meta http-equiv="Content-Language" content="cs">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"/>

<script src="md5.js"></script>

<SCRIPT LANGUAGE="JavaScript"><!--

function zkontroluj(formular)
{



if (document.formular.hash.value != hex_md5(document.formular.cislo.value))
{alert("Chybny kod"); return false;}
else if (formular.jmeno.value=="")
{
alert("Vaše jméno (přezdívku) musíte vyplnit!");
formular.jmeno.focus();
return false;
}
else if (formular.email.value=="")
{
alert("Adresu elektronické pošty musíte vyplnit!");
formular.email.focus();
return false;
}
else if (formular.zprava.value=="")
{
alert("Text zprávy musíte vyplnit!");
formular.zprava.focus();
return false;
}
else if (window.RegExp)
{
re = new RegExp("^[^.]+(\.[^.]+)*@([^.]+[.])+[a-z]{2,3}$");
if (!re.test(formular.email.value))
{
alert("Zadaná adresa není správnou adresou elektronické pošty!");
formular.email.focus();
return false;
}
}
else
return true;
}
// -->
</SCRIPT>

</head>

<body>
<table width="50%" align="center">
<tr>
<td width="100%" class=nadpis>
<center>Kniha hostů</center>
<br>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<form action="insert.php" method="post" onSubmit="return zkontroluj(this)">
<tr>
<td width=120 class=povinne>
Jméno:
</td>
<td>
<input type="text" name="jmeno" size="30" maxlength="60" class="inputbook">
</td>
</tr>
<tr>
<td width=120 class=povinne>
E-mail:
</td>
<td>
<input type="text" name="email" value="@" size="30" maxlength="60" class="inputbook">
</td>
</tr>
<tr>
<td width=120 class=nepovinne>
Web (i s http://):
</td>
<td>
<input type="text" name="web" value="http://" size="30" maxlength="60" class="inputbook">
<input type="hidden" name="odeslano" value="ano">
</td>
</tr>
<tr>
<td valign=top width=120 class=povinne>
Text zprávy:
</td>
<td>
<textarea cols="45" rows="10" class=inputbook name="zprava"></textarea>
</td>
</tr>
<tr>
<td valign=top width=120 class=povinne>
Vložte kód z obrázku:
</td>
<td>
<?php
$nahodne_cislo = round(rand(0,1));
switch($nahodne_cislo):
case "0":
$src = "123.bmp";
$spravna_odpoved = "123";
$hash = md5($spravna_odpoved);
break;
case "1":
$src = "456.bmp";
$spravna_odpoved = "456";
$hash = md5($spravna_odpoved);
break;
endswitch;
?>
<img src="codes/<?php echo $src; ?>" alt="Obrázek s kódem">   
<?php echo "<input type='hidden' name='hash' value=$hash>"; ?>
<input type="text" name="cislo">
</td>
</tr>
<tr>
<td width=120>
 
</td>
<td>
<center>
<input type="submit" class=bluebutton value="Odeslat">
   
<input type="Reset" class=bluebutton value="Vymazat">
</center>
</form>
</td>
</tr>
</table>


<hr color="#00008B">
</table>


<?
function Odkaz()
{
if (File_Exists ("book.dat")):
echo "<center><font class=cas>Zobrazit příspevky:<br><br>";

$prispevek = File("book.dat"); //načte obsah souboru do pole
$strana = Ceil(Count($prispevek)/20); //vypocita kolik zaberou příspěvky stran (po 20)

for ($x=1;$x<=$strana;$x++): //zobrazí tolik odkazů kolik je stran
echo "<a href=kniha.php?idprispevek=$x>" . ($x*20-19) . "-" . $x*20 . "</a>  &nbsp";//do ka·dého odkazu přidá číslo strany a jaké příspěvky budou zobrazovány
endfor;
echo "</center>";
endif;
}
Odkaz();
?>
<hr color="#00008B">
<?
if (File_Exists ("book.dat")): //existuje soubor book.dat
if (!IsSet($idprispevek)) $idprispevek=1; //je zinicializována proměnná id, pokud ne přiřadí standartní jedničku
$pocatek = $idprispevek*20-20; //podle id spočítá od kolikátého
$konec = $idprispevek*20-1; //... do kolikáté příspěvku se bude zobrazovat

$prispevek = File("book.dat"); //načte do pole obsah book.dat
for ($i=$pocatek;$i<=$konec;$i++):
echo $prispevek[$i]; //vypí‘e příspěvky mezi $prispevek a $konec
endfor;
endif;

Odkaz();
?>
<hr color="#00008B">
</td>
</tr>
</table>
Dobré, už mi to funguje. Měl jsem tam document.formular.hash.value (a cislo.value) a ten document. tam neměl co dělat, protože formular je argument zadaný fci a vrací document.formular (asi) :)

Díky za radu, fakt...