captcha opnieuw laden

Status
Niet open voor verdere reacties.

stienoo

Gebruiker
Lid geworden
31 dec 2007
Berichten
315
Ik ben een website aan het maken waar je kan inloggen, en natuurlijk kan een captcha tegenwoordig niet meer missen dus heb ik die er 1 gemaakt, maar nu is het probleem dat als je die niet kan lezen je heel de pagina opnieuw moet laden (en je ingevulde gegevens weg zijn) erg hatelijk dus.
Hoe kan je dus die captcha opnieuw laden (is via een afbeelding) zonder dat je formulier gegevens verloren gaan (en liefst dat er zelfs niet moet vernieuwd worden)?
 
Met Ajax ophalen uit de PHP-pagina.
 
Heu, ik heb nog nooit met ajax gewerkt, kan er iemand wat meer informatie geven?
 
O, maar hoe moet ik dat dan net doen (ik kan geen javascript)
 
Aan de hand van tutorials zorgen dat er een request naar een PHP-pagina wordt gestuurd, om een nieuw Captcha-plaatje op te halen?
 
Als je captcha een php bestand is dan kun je gewoon img.src="captcha.php?onzin=randomstring" doen. Je kunt ook eerst een "Loading" plaatje weergeven

Code:
img.src="loading.gif";
img.src="captcha.php?onzin=randomstring";

Houd er dan wel rekening mee dat je het laad plaatje moet pre-loaden, anders moet het laad plaatje zelf geladen worden.

randomstring moet echt random zijn, anders kan caching voorkomen dat een nieuw plaatje wordt geladen. Ookal hoor je in je captcha als te voorkomen dat het plaatje ge-cached wordt.
 
Laatst bewerkt:
wat is ge-cached?

Maar mijn captcha is een php bestand captcha.php dat ik dan via een img tag gebruik
Code:
<img src="captcha.php" />
In captcha.php word dus eers een string van een aantal tekens gemaakt (weet niet van buiten hoeveel) die dan met md5 in een sessie word opgeslagen (en bewerkt in een plaatje).

Maar ik snap nog altijd niet hoe je dat plaatje opnieuw load (ik ga morgen die ajax tutorial eens doornemen), als je gewoon op vernieuwen klikt word captcha.php wel opnieuw uitgevoert (dus een andere code) maar dan zijn alle ingevulde gegevens weg + is dat iritant dat je dan moet wachten tot het opnieuw geladen is (de pagina).
 
alleeemaaal niet nodig het is heel simpel.

doe gewoon dit:

javascript:
Code:
<script type="text/javascript">

function reloadCaptcha()
{
  var img = document.getElementById("captchaImg");
  img.src = "images/reloading.gif";
  img.src = "captcha.php?code="+Math.random();
}
</script>

met deze html:
Code:
<img src="images/reloading.gif" style="display:none;" />
<img id="captchaImg" src="captcha.php" />
<input type="button" value="Image unclear?" onclick="reloadCaptcha()" />
 
Goede code, niet aan gedacht. Ziet er strak uit.
 
dankjewel :)

Als reloading.gif een animatie ziet het er mooi uit in Firefox, maar in IE zal het plaatje niet animeren. IE animeert plaatjes niet die je met Javascript laadt. Maar Firefox wel, dus het is misschien toch de moeite waard.
 
Hartelijk dank, het werkt!! Ik heb wel een linl gebruikt en geen button.
Maar nog 1 vraagje, waarom staat er in dat stukje javascript:
Code:
 img.src = "captcha.php[color=red]?code="+Math.random()[/color];
(ik heb het met rood aangeduid)

En nog iets @Glest, waarom raad je in je handtekening af javascript te gebruiken?
 
Je browser zou het plaatje van captcha.php op kunnen slaan (cachen) en elke keer dat captcha.php opnieuw geladen moet worden de oude versie gebruiken. Met headers in php kun je dat al voorkomen, maar door een random code er achter te zetten weet je zeker dat er een nieuwe versie wordt gedownload ;)


M'n handtekening slaat meer op mensen die hun layout met Javascript willen maken. Daar heb ik het niet zo op, maar dit is een goede toepassing voor Javascript.
 
O, zo, in ieder geval heel hard bedankt!!

Ik ga denk ik wat meer leren over javascript (en ajax) ik kan al een beetje programmeren in java, dus zo moeilijk zal het voor mij wel niet zijn :D
 
O, zo, in ieder geval heel hard bedankt!!

Ik ga denk ik wat meer leren over javascript (en ajax) ik kan al een beetje programmeren in java, dus zo moeilijk zal het voor mij wel niet zijn :D

Houdt er wel rekening mee dat Java iets heel anders is dan JavaScript :)
 
Ja, weet ik, java is een programmeertaal, javascript een script dat er is van afgeleid.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan