Avatar billede steen-h Mester
31. december 2007 - 07:47 Der er 4 kommentarer og
1 løsning

hkb-x captcha

Hej

Jeg har været ved at prøve hkb-x ´s captcha
http://www.eksperten.dk/artikler/1106

Jeg har gjordt næsten som der stod.

Jeg har puttet det hele i en fil som hedder captcha.php,
hkb-x bruger phps men det kan jeg ikke få til at virke,ved ikke hvad forskellen er.

Jeg har lige nogle spørgsmål:

Øverst i filen captcha.php har jeg en session start, virker ikke uden, men det har jeg også i min index.php, jeg troede ikke man måtte have det flere gange ?

Der er også 3 header:
header("Content-type: image/png");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
Jeg troede ikke man kunne / måtte sende header efter man har skrevet til skærmen, men det virker fint ?

Så er der noget jeg overhoved ikke forstår:
Har brugt følgende kode under test.
echo $_SESSION['tekst']."<br>";
?>
<img src="php/CAPTCHA.php" title="" id="CAPTCHA"></img>
<br />
Er billedet for utydeligt? så
<a href="#" onclick="document.getElementById('CAPTCHA').src='php/CAPTCHA.php?' + Math.random();">klik her</a>

<?
echo "<br>Her ".$_SESSION['tekst'];

Jeg ville mene at den første echo $_SESSION['tekst'] indeholder teksten fra sidste gang og den sidste echo $_SESSION['tekst']indeholder den nye.
Men det gør de ikke, de er ens og indeholder begge forige tekst hvis man opdatere med F5.
Jeg har så lavet en form hvor man kan indtaste teksten og bliver sendt til en ny side hvor det bliver udskrevet, og der er det indtastede og det fra session ens.

Er der nogle som kan svare på mine spørgsmål ?

MVH Steen
Avatar billede nielle Nybegynder
31. december 2007 - 08:15 #1
> Jeg har gjordt næsten som der stod.

Jeg kan ikke helt forstå om du har fået din CAPTCHA til at fungere eller ej, og om du bare har nogle gennerelle spørgsmål til det forståelsesmæssige?

> hkb-x bruger phps men det kan jeg ikke få til at virke,ved ikke hvad forskellen er.

"php2" er bare en fil som viser kildekoden. Han har kun inkluderet den fordi at han ikke er tilfreds med formateringen her i artikelsystemet.

> Øverst i filen captcha.php har jeg en session start, virker ikke uden, men det har jeg også i min index.php, jeg troede ikke man måtte have det flere gange ?

Du skal have en session_start() i toppen af hver fil som skal have fat på den session der køre.

> Der er også 3 header:
> header("Content-type: image/png");
> header("Cache-Control: no-cache, must-revalidate");
> header("Pragma: no-cache");
> Jeg troede ikke man kunne / måtte sende header efter man har skrevet til skærmen, men det virker fint ?

Der er nu heller ikke blevet udskrevet noget til skærmen. header() kommandoerne giver input til HTTP-headeren - ikke til HTML-koden.

> echo $_SESSION['tekst']."<br>";
> ...
> <img src="php/CAPTCHA.php" title="" id="CAPTCHA"></img>
> ...
> echo "<br>Her ".$_SESSION['tekst'];

> Jeg ville mene at den første echo $_SESSION['tekst'] indeholder teksten fra sidste gang og den sidste echo $_SESSION['tekst']indeholder den nye.

Serveren laver altid en fil færdig af gangen:

Først beder browseren om dinFil.php. Dernæst fortolker den koden, og ser at den skal have fat på et billede (<img src="php/CAPTCHA.php" title="" id="CAPTCHA">). Dernæst beder den om billede.

> Jeg har så lavet en form hvor man kan indtaste teksten og bliver sendt til en ny side hvor det bliver udskrevet, og der er det indtastede og det fra session ens.

Værdien i sessionen bliver ændret. Problemet er blot at begge dine udskrivninger sker før at ændringen er lavet.
Avatar billede steen-h Mester
31. december 2007 - 08:37 #2
Jeg har fået min CAPTCHA til at fungere, kunne bare ikke forstå det hele.

Der er stadig det med header.

Jeg har en index fil som styre cookie og includer menuen, og til sidst min test.php
Så er det at jeg mener at huske noget om at man skal sende headeren som noget af det første, og det gør jeg jo ikke her.

Og session.

Jeg troede at browseren tog det slavisk.
udskriv session
og ser at den skal have fat på et billede (<img src="php/CAPTCHA.php" title="" id="CAPTCHA">). Dernæst beder den om billede.
og udskriver session igen,

men det gør den altså ikke ?
Avatar billede nielle Nybegynder
31. december 2007 - 08:53 #3
> Der er stadig det med header.

Det er pr. request til serveren at den regel gælder.

Den request som laver CAPTCHA billedet er ikke dne sammen som den/dem som laver alt det andet.

> men det gør den altså ikke ?

Nej. Du overser browserens rolle:

Det er browseren som beder om de enkelte filer. Først beder den om at fp dinFil.php. Dernæst kigger den alt igennem i HTML koden som den har modtaget. På det tidspunkt ser den at der bl.a. skal inkluderes et billede på siden (CAPTCHA'en). Der er måske også andre billeder, eller musik, eller en iframe osv., der skal hentes. Breowseren beder så om at få dem en af gangen. Det er først på det tidspunkt at CAPTCHA'en bliver lavet og sessionen bliver opdateret.
Avatar billede steen-h Mester
31. december 2007 - 09:31 #4
Nu er jeg med, tak for din forklaring.

Læg et svar.
Avatar billede nielle Nybegynder
31. december 2007 - 09:32 #5
Svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester