login  Naam:   Wachtwoord: 
Registreer je!
 Forum

captcha herladen (Opgelost)

Offline pijke - 18/03/2010 18:26 (laatste wijziging 18/03/2010 18:26)
Avatar van pijkeGouden medaille

Lid
hallo.

ik heb een captcha-beveiliging gemaakt.
alleen wil ik nu dat je de captcha kunt herladen, voor als hij onduidelijk is ofzo, zonder de hele pagina te herladen. is hier een of andere functie voor? of iets anders waarmee dit kan?

18 antwoorden

Gesponsorde links
Offline Martijn - 18/03/2010 18:59
Avatar van Martijn Crew PHP ik zou er gewoon voor gaan dat je captcha standaard duidelijker is 

Ik las laatst ergens een stuk, waar in werd gezegd dat een plaatje met een statisch woord erop al 99% van alle spam tegen houd.

Maar als je wilt doorgaan met je idee, met AJAX een nieuwe img laten maken, en die dan terugzetten in je captcha vakje
Offline Koen - 18/03/2010 18:59 (laatste wijziging 18/03/2010 19:03)
Avatar van Koen PHP expert Neem eens een kijkje naar de captcha op http://www.plaatscode.be en je zal zien. 

@hierboven: AJAX..?
Offline Martijn - 18/03/2010 19:21
Avatar van Martijn Crew PHP hmm zo heb ik er nooit naar gekeken, dat is eigenlijk veel makkelijker ja 
Offline pijke - 18/03/2010 19:28
Avatar van pijke Gouden medaille

Lid
@koen
dank je!
zoiets had ik nodig. maar waar is die date() enzo voor nodig?
Citaat:
<a href="#" onclick="var d = new Date(); document.getElementById('image').src = '/image.php?time='+d.getTime()+d.getMilliseconds(); return false;">onleesbaar?</a>
Offline avdg - 18/03/2010 20:04 (laatste wijziging 18/03/2010 20:06)
Avatar van avdg PHP gevorderde Die date is om de request random te maken, zodat browsers geen kans hebben die afbeelding te cachen

Betekenis: je haalt altijd een afbeelding op met een unieke link
Bedankt door: Koen
Offline Jelmerholland - 18/03/2010 20:58 (laatste wijziging 18/03/2010 20:58)
Avatar van Jelmerholland PHP beginner Maar meestal is het toch zo dat php een afbeelding aanmaakt voor jouw, Met wat random cijfers/letters erin? Nou heb je een src naar een afbeelding, maar met allemaal leuke getalletjes (de date() ).. .Ik snap er het nut ook niet van eigenlijk..?

Heeft iemand misschien een betere uitleg?
Offline TotempaaltJ - 18/03/2010 21:05
Avatar van TotempaaltJ PHP interesse @Jelmerhollan: Ja, avdg, die 52 minuten voor jou die uitleg heeft gepost. Lees eens wat 
Offline Jelmerholland - 18/03/2010 22:02 (laatste wijziging 18/03/2010 22:03)
Avatar van Jelmerholland PHP beginner Ja die hebt ik gelezen hoor, wees maar niet bang. Maar ik snap 't niet, wat heeft die date er mee te maken om de src naar een afbeelding te hebben?

Ps. Ik had het in mijn vorige post ook over 'betere', dat bekent dat er dus al een voorgaande uitleg was, maar die in mijn ogen niet goed is (of althans, dat ik 'm niet snap).
'Lees eens wat' 
Offline pijke - 19/03/2010 07:35
Avatar van pijke Gouden medaille

Lid
Jelmerhollan schreef:
Maar meestal is het toch zo dat php een afbeelding aanmaakt voor jouw, Met wat random cijfers/letters erin? Nou heb je een src naar een afbeelding, maar met allemaal leuke getalletjes (de date() ).. .Ik snap er het nut ook niet van eigenlijk..?

Heeft iemand misschien een betere uitleg?
klinkt logisch.
ik zal hem gaan proberen.
Offline Koen - 19/03/2010 08:00
Avatar van Koen PHP expert
Jelmerhollan schreef:
Maar meestal is het toch zo dat php een afbeelding aanmaakt voor jouw, Met wat random cijfers/letters erin? Nou heb je een src naar een afbeelding, maar met allemaal leuke getalletjes (de date() ).. .Ik snap er het nut ook niet van eigenlijk..?

Heeft iemand misschien een betere uitleg?


Wanneer je met een image tag verwijst naar image.php zal je browser een request sturen naar die pagina. Omdat image.php een CAPTCHA is zal deze zich voordoen als een afbeelding. Vele browsers zijn hierdoor geneigd om deze afbeelding lokaal op te slaan in de cache, op die manier gaat het laden van een website een pak sneller omdat al die afbeeldingen dan niet meer individueel moeten worden opgehaald.

Nu, omdat het uiteraard niet de bedoeling is dat die afbeelding wordt opgenomen in de cache van de browser moeten we dit tegengaan. Dit doen we door een unieke waarde mee te geven aan de URI van de afbeelding (een GET waarde in de querystring beïnvloedt je script niet en daar zal dus meestal voor gekozen worden). Wat voor betere unieke waarde te gebruiken dan de huidige timestamp plus nog eens die van microseconden? (voor wanneer je binnen minder dan een seconde zou herladen)

Het is eigenlijk heel simpel, ik hoop dat je het nu ook snapt.
Bedankt door: avdg, nick5556, Jelmerholland
Offline pijke - 19/03/2010 08:17
Avatar van pijke Gouden medaille

Lid
hij werkt nog steeds niet.
maar misschien komt dat doordat ik een captcha-class gebruik.
moet het daarvoor anders?
Offline avdg - 21/03/2010 12:53
Avatar van avdg PHP gevorderde Wat werkt niet?
Wat verwachtte je van het script?
Wat doet em fout?
Offline pijke - 21/03/2010 15:51 (laatste wijziging 21/03/2010 15:52)
Avatar van pijke Gouden medaille

Lid
hij doet helemaal niets.
ja, de afbeelding verdwijnt.
en wat ik verwacht van het script, dat hij de captcha herlaad!
Offline avdg - 21/03/2010 18:58
Avatar van avdg PHP gevorderde Al eens de url eens nagekeken?
Offline Jelmerholland - 21/03/2010 21:06
Avatar van Jelmerholland PHP beginner
Koen schreef:
[..quote..] die lange uitleg


Het er dus alleen maar voor zodat je browser 'denkt' dat het een compleet nieuwe afbeelding is. Zodat deze niet wordt opgeslagen. Het is me helemaal helder, bedankt man.

Maar dan is er nog 1 brandende vraag (voor mij dan ), waarom zou je dat willen? Het maakt toch niet uit als de afbeelding in de cache wordt opgeslagen? Of is dit om bepaalde bugs tegen te gaan? Dat als jij de pagina refreshed, dat niet gewoon dezelfde afbeelding blijft staan. Het is dus puur en alleen om tegen te gaan dat ie in je cache komt tegen die bug. Het maakt je script dus niet veiliger bedoel ik te zeggen.. 

(beetje onduidelijk wat ik nou zeg waarschijnlijk, maar dat heb je soms als je in 1 dag 3 boekverslagen en een poëzie iets hebt gemaakt voor school )
Offline TotempaaltJ - 21/03/2010 21:13
Avatar van TotempaaltJ PHP interesse
Jelmerhollan schreef:
(...) Dat als jij de pagina refreshed, dat niet gewoon dezelfde afbeelding blijft staan. Het is dus puur en alleen om tegen te gaan dat ie in je cache komt tegen die bug. (...)
Ja, dat klopt. Alleen is het geen bug. Hoe moet die browser weten of het een captcha is? Hij krijgt van Apache een statuscode door: 304 Not Modified als je gewoon hetzelfde bestand aanroept.
Apache weet niet (of weet?) of dat bestand dynamisch is gemaakt, dus als jij iets van GET of POST mee stuurt geeft hij hem maar opnieuw. Dan neemt de browser aan dat het plaatje veranderd is en verandert hem in de pagina.
Offline Jelmerholland - 21/03/2010 23:12
Avatar van Jelmerholland PHP beginner Oh ok, dan gaat ik dat voortaan ook gebruiken (ik moet er even aan denken dat ik dit in mijn script moet verwerken, ik gaat eerst slapen )
Offline pijke - 22/03/2010 16:33
Avatar van pijke Gouden medaille

Lid
ik heb hem gevonden!
bedankt iedereen!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.198s