Autor Zpráva
zeldacz
Profil
Ahoj chtěl bych se zeptat na tento antispam skript, který mi vždy ukáže jen:
Warning: Cannot modify header information - headers already sent by (output started at C:\ComplexWebServer\http_docs\mail.php:16) in C:\ComplexWebServer\http_docs\mail.php on line 102
‰PNG  IHDR<�ćݟ3PLTE˙˙˙rrr(dáäë1BwN]ŠCMkÄÉ؉“±1elxž+:gZ_n¦ŸÄfhpNVl7Ci’:ˇîqIDATxśuS[‚Ă dkbkŇűźvŤŃvËG˘

<?php

ob_start(); 

$font = 'arial.ttf';

$charset = '0123456789';

$code_length = 4;

$height = 20;

$width = 60;


$code = '';
for($i=0; $i < $code_length; $i++) {
$code = $code . substr($charset, mt_rand(0, strlen($charset) - 1), 1);
}

$font_size = $height * 0.7;
$image = @imagecreate($width, $height);
$background_color = @imagecolorallocate($image, 255, 255, 255);
$noise_color = @imagecolorallocate($image, 114, 114, 114);

for($i=0; $i < ($width * $height) / 4; $i++) {
@imageellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
}

$text_color = @imagecolorallocate($image, 20, 40, 100);
@imagettftext($image, $font_size, 0, 7,17,
$text_color, $font , $code)
or die('Cannot render TTF text.');

header('Content-Type: image/png');
@imagepng($image) or die('imagepng error!');
@imagedestroy($image);

$_SESSION['AntiSpamImage'] = $code;
exit();

?>
zeldacz
Profil
nevím co tam dělám špatně
zeldacz
Profil
nefunguje mi to pouze když to dám do HTML stránky a do té to potřebuju dát jinak když to mám jako samotný skript tak mi to jde bez problému, ale mohli byste mi poradit ještě s ověřením jestli byl kód opsán správně
předem díky zedlacz
Radek9
Profil
zeldacz:
Mně script funguje vpořádku, chyba bude jinde.

Jak to tam vkládáš?
Davex
Profil
zeldacz:
Skript vytváří obrázek, takže ho nemůžeš includovat do jiného skriptu. Vypadá to, že jsi opsal jen část řešení a zbytek ti chybí.
zeldacz
Profil
Vkládám to tam pomocí include, ale jiná část scriptu tam nebyla
joe
Profil
Uvedený kód dej do obrazek.php a do html pak dej
<img src="obrazek.php">
zeldacz
Profil
a jak mám potom udělat ověření
Radek9
Profil
zeldacz:
Přidej k formuláři textové políčko a po odeslání ověř, zda se shoduje s $_SESSION['AntiSpamImage'].
Ben
Profil *
Proč obtěžovat návštěvníka opisováním obrázků, kdyz to jde udělat i bez toho. Moje jednoduché a funkční řešení k diskuzi.
<?php
// $prispevek je obsah zpravy
// tato podminka overuje retezec $prispevek na pritomnost http
if(!ereg("http",$prispevek)){ //ulozeni prispevku  do MySQL}
?>
Radek9
Profil
Ben:
Ale fuj! :-! To ti může tak jako tak nějaký robot zaspamovat a navíc používáš zastaralou funkci.
joe
Profil
Ben:
Takže když uživatel pošle nějakou zprávu s url odkazem, tak ji neuložíš?

Lepší řešení je například 2+2 = ....
Ben
Profil *
Použil jsem to jen jako příklad, že to jde udělat i bez obtěžování uživatele opisováním textu z obrázků, počítáním příkladů, atd...
Radek9
Profil
Ben:
Jak už psal joe: Tím, že uživateli zakážeš přidávat odkazy? Aby to byl opravdu funkční antispam bez ověřování, musel bys napsat aplikaci, která by dokázala pochopit, co autor napsal a vyhodnotit, zda je to spam, nebo ne. To ale zatím umí jen IBM Watson a i tam to chvílemi drhne. :-)
joe
Profil
Ben:
počítáním příkladů
To jde samozřejmě taky bez obtěžování uživatele... předvyplněním pomocí JavaScriptu a potom se políčko skryje, takže o tom uživatel ani neví. Stejný způsob je použitý tady na diskusi.
pcmanik
Profil
Radek9:

Watson sem prosim nemiesaj, absolutne to s tou problematikou nema nic spolocne, ale ked sme uz pri tom to vyhodnotovanie ti spravy aj priemerny programator, nechapem preco by si na to chcel pouzit zrovna taky velky stroj...
Radek9
Profil
pcmanik:
To jsem napsal jen tak pro zajímavost. Jasně, dá se to udělat mnoha jinými způsoby, například těmi, které popisuje joe. Já chtěl jen Benovi naznačit, že pokud by to chtěl dělat nějakým textovým rozborem a chtěl by co nejvyšší spolehlivost, musel by napsat šíleně složitou aplikaci a ne jen jeden řádek. Proto je lepší použít captchu nebo podobné věci.
Ben
Profil *
Radek9
Samozřejmě data se neověřují jen funkcí ereg(); Je vhodná kombinace například se skrytými poli, porovnáním časů spuštěním scriptu vs. odesláním formu, atd... Fantazii se meze nekladou. Používat captcha obrázky je vhodné jen proti aplikacím napsaným speciálně pro váš web na zautomatizování stahování např. z ulozto, atd...
zeldacz
Profil
už se v tom začínám ztrácet mohl byste mě nekdo udělat jen tak pro představu kod i s ověřením
a zatím všem díky
zeldacz
Profil
Tak už sem si ten script sehnal ale všem moc díííky!!!

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: