To bez sensu, bo można stworzyć robota, który odczyta jaka jest zawartość polu hidden. Ja to rozwiązałem w taki sposób:
<?php
function create_token() {
$token_id = rand(0
,99999
); mysql_query("DELETE FROM tokens WHERE token_date<'".$date."'"); mysql_query("INSERT INTO tokens (token_id, token_pass, token_date) VALUES ('".$token_id."', '".rand(1000,9999)."', '".time()."')");
return $token_id;
}
function check_token($pass, $id) {
$wykonaj = mysql_query("SELECT token_pass FROM tokens WHERE token_id='".$id."' LIMIT 1"); mysql_query("DELETE FROM tokens WHERE token_id='".$id."'");
if ($pass == $wiersz['token_pass']) return true;
else return false;
}
?>
w miejscu gdzie ma sie pojawić obrazek:
<img src="token.php?id=
<? echo create_token
(); ?>" alt="">
i plik który go obsługuje:
token.php<?
include 'includes/configure.php';
include 'includes/app_top.php';
$wykonaj = mysql_query("SELECT token_pass FROM tokens WHERE token_id='".$HTTP_GET_VARS['id']."' LIMIT 1");
$tekst2 = rand(1000
,9999
); $tekst = $wiersz['token_pass'];
$czcionki= array('includes/fonts/freemono.ttf'); //definiujemy czcionki za pomocą tablicy header("Content-type: image/png"); //ustawiamy nagłówek HTTP na obrazek png $obraz = ImageCreate(100, 20); //tworzymy obrazek o wysokości 40 i szerokości 250
$kolor['1'] = ImageColorAllocate($obraz, 255, 255, 255); //definiujemy kolor 1 (biały)
$kolor['2'] = ImageColorAllocate($obraz, 169, 169, 169); //definiujemy kolor 2 (darkgray)
$kolor['3'] = ImageColorAllocate($obraz, 220, 220, 220); //definiujemy kolor 3 (gainsboro)
ImageFilledRectangle($obraz, 0, 0, 300, 50, $kolor['1']);
ImageFilledArc($obraz, 25, 25, 40, 40, 180, 360, $kolor['3'], 1);
for($i = 0; $i < 60; $i++) //w pętli
{
imageellipse
($obraz, rand(0
, 250
), rand(0
, 40
), rand(2
, 30
), rand(2
, 30
), $kolor['2']); //tworzymy losowo rozmieszczone elipsy o kolorze darkgray
}
for($i = 0; $i < 3; $i++)
{
ImageTTFText
($obraz, rand(15
,20
), 0
, rand(15
,20
), rand(15
,20
), $kolor['3'], $czcionki[rand(0
, count($czcionki) - 1
)], $tekst2); //dodajemy do rysunku tekst o losowym położeniu, kolorze gainsboro, losowej czcion
ce (losowanej z tablicy)
}
ImageTTFText
($obraz, rand(15
,20
), 0
, rand(15
,20
), rand(15
,20
), $kolor['2'], $czcionki[rand(0
, count($czcionki) - 1
)], $tekst); //dodajemy do rysunku tekst o losowym położeniu, kolorze darkgray, losowej
//czcionce (losowanej z tablicy) oraz tekście, który przekażemy za pomocą sesji
Imagepng($obraz); //wyświetlamy obrazek za pomocą funkcji ImagePNG
ImageDestroy($obraz); //niszczymy identyfikator pliku
include 'includes/app_bottom.php';
?>
sprawdzamy czy dobrze ktoś wpisał tak:
<?php
if (check_token($HTTP_POST_VARS['token_code'], $HTTP_POST_VARS['token_id']))
...
?>