Autor Zpráva
kukweb
Profil
chtel bych udelat opis kodu z obrazku do formulare, neco jsem nasel tady:
http://firstpage.profitux.cz/?page=captcha

Jen to nejak nefunguje :(
Mohl by to nekdo proverit, kde je tam chyba ( obrazku jsem dal prava pro zapis CHMOD 777 )
bohyn
Profil
Jen to nejak nefunguje :(
Tak to mas rozbity

Mas na serveru nahrany font?
kukweb
Profil
jj, ten jsem nahral. Tim to nebude
imploder
Profil
kukweb
Vyprdnout se na to! Tisíciletej brouk a záprtek!
kukweb
Profil
Neco jsem nasel, ale je potiz v tom, ze to dany obrazek prepisuje :(
Rad bych aby to dany obrazek jen nacetlo a ulozilo do jineho.
Pote co by bylo overeni OK, dal by se obrazek smazat

unlink("./2.png");

;)

$zdroj ="1.png";
$obrazek=ImageCreateFromPNG($zdroj); 
// Naètení uloženého obrázku 

    $zme = imagecreatetruecolor(121,50);

    imagecopyresampled($zme, $obrazek, 0, 0, 0, 0, imagesx($zme), imagesy($zme), imagesx($obrazek), imagesy($obrazek));

    $textcolor = imagecolorallocate($zme, 0, 0, 0);
  
 




    imagestring($zme, 5, 6, imagesy($zme)-20, "$komentar", $textcolor);
$textcolorr = imagecolorallocate($zme,99, 99, 02);

        
    ImagePNG($zme,$zdroj);

   echo "<img src=".$zdroj." alt=test>";
igamenir
Profil
ten odkaz co jsi dal mi fungoval dobře, tak nevím, proč hledáš dál. spíš to zkus odladit. Jinak jsem si s tím na základě tvého příspěvku hrál a taky zkoušel a tady je výsledek: http://captcha.igamenir.net/test.php

V souboru test.php
includuju captcha.php, které mi vygeneruje kód a zkontroluje pokud již byl v minulé stránce zadaný a výsledek vrátí v $captchaOK což pak porovnávám. Obrázek je volaný opět z captcha.php
<?php include "captcha.php"; ?>
<html><head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Test CAPTCHA</title>
</head><body>
<?php
if (isset($captchaOK) and $captchaOK):
	echo '<h2>Zadáno správně</h2>';
else:
	if (isset($captchaOK)) echo '<p>Zadáno chybně, zadejte znovu:</p>';
?>
<form action="" method="post">
<b>Kontrolní kód:</b> <img src='captcha.php' alt='Kontrolní kód'>
<b>Opište kód:</b>&nbsp;
<input type="text"  maxlength="5" name="captchaentry" size="10">
<input type="hidden" name="captchacoded" value="<?php echo md5($_SESSION['captcha']); ?>">
<input type="submit" value="Zadej">
</form></body></html>
<?php endif; ?>


A captcha.php:
<?php
// site of captcha image & charcount
$sizeX = 100;		$sizeY = 25;
$charcount = 5;
// session
session_start();
// IF THE IMAGE IS ABOUT TO BE PAINTED
if ($_SERVER['SCRIPT_NAME']=='/captcha.php'):
	// show it as png
	header("Content-type: image/png");
	// create image
	$output = imagecreate($sizeX, $sizeY);
	// ranges
	$bgr_min = 255;			$bgr_max = 255;   // background color
	$line_min = 96;		$line_max = 255;   // line color
	$linecount = 10; // count of line on background
	$font_min = 0;			$font_max = 128;   // font color
	// background
	imagerectangle($output, 0, 0, $sizeX, $sizeY,
		imagecolorallocate($output, rand($bgr_min,$bgr_max), rand($bgr_min,$bgr_max), rand($bgr_min,$bgr_max)));
	// lines in background
	for ($i = 0; $i < $linecount; $i++):
		$start = rand(0,3);
		$end = rand(0,2); if ($end >= $start) $end = $end+1;
		if ($start < 2) {	$x1 = rand(0, $sizeX);		$y1 = ($start == 0?rand(0,10):rand($sizeY-10,$sizeY));
			}else{					$Y1 = rand(0, $sizeY);		$x1 = ($start == 2?rand(0,10):rand($sizeX-10,$sizeX));	}
		if ($end < 2) {	$x2 = rand(0, $sizeX);		$y2 = ($end == 0?rand(0,10):rand($sizeY-10,$sizeY));
			}else{				$Y2 = rand(0, $sizeY);		$x2 = ($end == 2?rand(0,10):rand($sizeX-10,$sizeX));	}
		imageline($output, $x1, $y1, $x2, $y2,
			imagecolorallocate($output, rand($line_min,$line_max), rand($line_min,$line_max), rand($line_min,$line_max)));
	endfor;
	$chars = $_SESSION['captcha'];
	$font = "./AtoZ.ttf"; // FONT FILE
	for ($i = 0; $i < $charcount; $i++)
		ImageTTFText($output, rand(14,16), rand(-20,20), $i*18+5, 20,
			ImageColorAllocate($output, rand($font_min,$font_max), rand($font_min,$font_max), rand($font_min,$font_max)), $font, $chars[$i]);
	ImageJpeg($output);
	ImageDestroy($output);
else: // including the captcha file
if (!empty($_POST['captchaentry'])):
	$e = md5(strtoupper(strtr($_POST['captchaentry'], '1250', 'IZSO')));
	$captchaOK = ($e==$_POST['captchacoded']);
endif;
$_SESSION['captcha'] = ''; /// generates new code
for ($i = 0; $i < $charcount; $i++)
	$_SESSION['captcha'] .= $chr(rand(ord('A'),ord('Z')));
endif;
?>
kukweb
Profil
diky perfekt, otestuju.

Fatal error: Function name must be a string in /home/www/captcha.php on line 46

tak to nejak nejde :( asi chbka, ale vse jsem jen okopcil
davef6
Profil
je to sice už starý, ale zkoušel jsem to a stejná chybka...........poradí někdo?
Joker
Profil
davef6
Já bych poradil se na opisování kódů z obrázků vykašlat.
Podle mě je to na nic, otravuje to návštěvníky a většinu typů CAPTCHA dneska roboti zvládnou přečíst lépe než skutečný člověk.
jokerxyz
Profil *
S tim souhlasim, lepe je zeptat se napriklad ktery den jen a ktery den v tydnu je
Watchick
Profil
Přesně tak...
nasadil jsem jednoduchou Captchu na svůj web, kdyz se vyrojili spameři, a nic, robůtky to neastavilo...
Nakonec jsem to vyřešil, tak, že jsem dal do Captchy příklad, který se musel vyřešit... třeba když se tam dá 12 + 3 tak to není o moc větší problém spočítat, oproti opisování 5ti zdeformovaných písmen...
A další varianta, která mi přišla celkem jednoduchá ale účinná (používá jí OpenID) že nechá vypsat 5 znaků, každý jinou barvou, a napíše: vypište Červená písmena z obrázku (jeden znak)...

IMHO cituji Jokera "většinu typů CAPTCHA dneska roboti zvládnou přečíst lépe než skutečný člověk", spíše než deformovat písmena a kreslit přes ně čáry, tak použít buďto některoé z řešní http://www.dreamface.net/michal/?face=zajimavost&c=31 (velice se mi osvědčily ty hidden inputy "text","mail",... které robot vyplní,a člověk je nevidí)

Watchick

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: