Header ("Content-type: image/png") čitanje nakon ajax

Eto, nemam ideje kako doći do te slike u odgovoru nakon ajax upita. …a google me baš ne služi :s

A? Kakve slike, pojasni bolje

Znači generiram sliku na strani servera. Želim raditi svoju captchu, i šaljem ju naravno k klientu:

zadnji dio koda u komentaru sprema sliku u folder, ali to ne želim nego direktno poslati sliku na client stranu. To sam skužio da radi ova header linija…ali varijabla koja dodje kao odgovor kad se ispiše je neka šifra simbola…neznam kako tu varijablu primiti da iz nje prikažem tu sliku koju sam generirao

Evo kako sam ja to izveo sa svojom captchom.
Slika se uništava nakon 2 sekunde (ne sprema se na disk).
Podaci odgovora nalaze se u session-u (“sesid”)

Ajmo reć da se file zove slika_iz_sessiona.php:

<?php
error_reporting(0);
session_start();
header ("Content-type: image/gif");

// prikazi code iz session-a u slici

$string= $_SESSION["sesid"];

ob_start();
$font = 7;
$width = ImageFontWidth($font)* strlen($string);
$height = ImageFontHeight(($font*2)+5);
$im = ImageCreate($width,$height);

$x=imagesx($im)-$width ;
$y=imagesy($im)-$height;
$background_color = imagecolorallocate ($im, 242, 242, 242); //white background
$text_color = imagecolorallocate ($im, 0, 0,0);//black text
$text_color2 = imagecolorallocate ($im, 100,100,100);//black text
$trans_color = $background_color;//transparent colour
imagecolortransparent($im, $trans_color);

// malo zasaraj pozadinu iza brojki

for ($n=0;$n<29;$n++)
	{
		
		$xra=rand(0,$width);
		$yra=rand(0,$height);
		$color1=rand(90,200);
		$color2=rand(90,200);
		$color3=rand(120,200);
		$text_color_rand=imagecolorallocate ($im, $color1,$color2,$color3);
		imagestring ($im, 1, $xra,$yra, "/", $text_color_rand);
	}

// dodaj jos malo distorzije u pozadinu
// (odaberi koji pattern i na kojoj poziciji u backgroundu)

imagestring ($im, 1, 0, 0, " +-+-+-+-+-+-+-+-+-+-+", $text_color2);
//imagestring ($im, 1, 0, 4, "-/-/-<->-{-/-+->-<--+--", $text_color2);
//imagestring ($im, 1, 0, 9, "/-/-+-/-+-/-/-+-/-+-/-/", $text_color2);

// razbacaj code po slici (da nije u istom redu)

$ss=str_split($string);
foreach ($ss as $value)
	{
		$offs=rand(-2,2);
		$offs2=rand(0,50);
		$text_color = imagecolorallocate ($im, (20+($offs*4)), (20+($offs*2)),(20+($offs2*2)));
		imagestring ($im, $font, $x, ($y+$offs), $value, $text_color);
		$x+=9;
	}

// napravi sliku i pusti je na prikazivanje

imagegif($im);
ob_flush();

sleep(2);
ob_end_flush();

// unisti sliku
ImageDestroy($im);

?>

Ajmo sad reć da se taj file nalazi u rootu.
Onda kad želiš pozvat tu sliku, u stranici gdje trebaš pozoveš je sa sljedećim (pretpostavka je da je stranica također u rootu sa datotekom slika_iz_sessiona.php).

<?php 
session_start();

// ovo je u biti security code koji se generira, moze i bilo koja druga varijanta, bitno je samo da je u ovom sessionu

$_SESSION["sesid"]=rand(1000,9999);
?>

ANTISPAM Code: <img src="slika_iz_sessiona.php" alt="code">

Retype: <input type="text" name="antispamcode" value="">

I naravno, kad se šalje forma, neka provjeri da li je vrijednost polja “antispamcode” jednaka sessionu sesid…

Dodatak: kako bi bio siguran da se uvijek šalje nova slika (a ne iz cache-a browsera, jer IE zna imat problema sa tim) onda prilikom poziva slike dodaš:

<img src="slika_iz_sessiona.php?t=<php echo date ("YmdHis");?>" alt="code">

Hvala na detaljnom objašnjenju svega…a ja samo pitao kako prosljediti generiranu sliku :).

Ako može još jedno pitanje…vezano uz smisao captche. Ne smisao općenito, nego baš kod registracije.

Što ima netko od toga da probije captchu i ulogira svojih n vritualnih profila?

Vidio sam po nekim forumima i blogovima rasprave da su im probijali i da su morali otežavati čitljivost captche, recimo na mi3dot.org su stavili da se prepisuje obrnutim redosljedom iz tog razloga. Što netko ima od toga da naseli taj forum s virtual profilima ??

Osoba kao osoba nema ništa specijalno osim što puni bazu onoga na koga se namjerio. Ukoliko ne brišeš redovito takve “korisnike” uskoro baza korisnika postaje jako velika, što u slučaju loše organizirane baze i koda dovodi do problema.

Aha, znači radi se jedino o podmetanju noge drugima. Niš čudno za ljude xd


Copyright © 2022 WM Forum - AboutContact