login  Naam:   Wachtwoord: 
Registreer je!
 Forum

captcha

Offline avancleef - 06/03/2009 12:03
Avatar van avancleefNieuw lid Beste,

Ik heb een captcha maar krijg de code die ik maak niet in een sessie... zou iemand mij kunnen vertellen hoe ik dat wel goed kan doen?

Als ik het op mijn manier doe krijg ik verkeerde tekens in de sessie...

Ik include de captcha op een andere pagina als:

<img src="captcha.php" />

Mijn code:

Plaatscode: 108136

9 antwoorden

Gesponsorde links
Offline MiST - 06/03/2009 15:35
Avatar van MiST Lid heb je zo niet twee verschillende sessions voor eenzelfde client?
(weet niet precies hoe het gaat, maar dat zou wel een verklaring kunnen zijn als het zo is )
Offline mothh - 06/03/2009 15:36
Avatar van mothh Onbekend img scr captcha.php



voorzover ik weet is captcha.PHP
geen plaatje
Offline Joost - 06/03/2009 15:46 (laatste wijziging 06/03/2009 15:48)
Avatar van Joost PHP expert Wat ik persoonlijk doe is in de pagina waar het moet worden opgevraagd een $_SESSION variabele maken met de code erin, die dan in captcha.php (Ja mothh ) word ingelezen:
pagina.php:
  1. $_SESSION['code'] = rand(1000, 9999); // voorbeeldcode van 4 cijfers, kan je zelf aanpassen
  2. echo '<img src="captcha.php" alt="">';

captcha.php :
  1. if(!isset($_SESSION['code'])){
  2. $_SESSION['code'] = rand(1000, 9999);
  3. }
  4. $aCode = $_SESSIOn['code'];
  5. // rest van het script om het plaatje te genereren


Nu kan je in je validatiescript o.i.d de captchacode die het moest zijn opvragen in $_SESSION['code'] 
Offline MiST - 06/03/2009 18:21
Avatar van MiST Lid
mothh schreef:
img scr captcha.php
voorzover ik weet is captcha.PHP
geen plaatje


Voor zover je misschien zijn code had gelezen geeft deze php een image header mee, en is het dus wel een plaatje ;)

Kan je niet de string generen in het bestand met je form en in de captcha.php de session ophalen? 
Offline avancleef - 06/03/2009 19:56 (laatste wijziging 06/03/2009 20:02)
Avatar van avancleef Nieuw lid probleem is als ik dit doe:

Plaatscode: 108498

Dat ik een hele andere code in mijn session krijg...
Dus als de captcha weergeeft : x5J5D

dan krijg ik in de session bijvoorbeeld aa5F

http://demo.bur...ontact.php

vergelijk de captcha met de tekstbalk... daar staat de code die uit de sessie komt!
Offline Godlord - 07/03/2009 00:47 (laatste wijziging 07/03/2009 00:50)
Avatar van Godlord PHP gevorderde PHP wordt eerst uitgevoerd, daarna de HTML. Wat jouw probleem is, is overduidelijk. De PHP code gebruikt de oude sessie dan geeft het alles weer. Dan laadt de browser de afbeelding, de sessie verandert naar de nieuwe code. De simpele oplossing is om de form de sessie te laten generen i.p.v. de captcha.

  1. if ($_SERVER['REQUEST_METHOD'] == 'POST')
  2. {
  3. /* De gebruiker heeft het formulier verzonden */
  4. }
  5. else
  6. {
  7. /* De gebruiker heeft het formulier herladen of geladen */
  8. $_SESSION['captcha'] = generateCode();
  9. }


Citaat:
Voor zover je misschien zijn code had gelezen geeft deze php een image header mee, en is het dus wel een plaatje ;)

Exact, dit bepaalt of de browser dit moet lezen als een afbeelding of als een (X)HTML bestand.

Edit: voorbeeld code toegevoegd van de oplossing.
Offline avancleef - 07/03/2009 01:28
Avatar van avancleef Nieuw lid Oke ik snap nu waar het probleem zit maar hoe kan ik dit nu oplossen?
Heeft iemand een voorbeeld code want ik kom er niet echt uit 
Offline Godlord - 07/03/2009 01:40 (laatste wijziging 07/03/2009 01:41)
Avatar van Godlord PHP gevorderde
  1. <?php
  2.  
  3. if ($_SERVER['REQUEST_METHOD'] == 'POST')
  4. {
  5. if (isset($_POST['captcha']) && $_POST['captcha'] == $_SESSION['captcha'])
  6. {
  7. echo 'De ingevulde code komt overeen met de captcha.';
  8. }
  9. else
  10. {
  11. echo 'De ingevulde code komt niet overeen met de captcha.';
  12. }
  13. }
  14. else
  15. {
  16. $_SESSION['captcha'] = 'ax84D'; // dit is een voorbeeld, normaal genereert men dit.
  17. }
  18. ?>
  19.  
  20. <form id="captchaform" method="post" action="">
  21. <div>
  22. <img src="captcha.php" alt="De captcha code." /><br />
  23.  
  24. <label for="captcha">Captcha</label>
  25. <input id="captcha" name="captcha" type="text" /><br />
  26.  
  27. <input id="submit" name="submit" type="submit" value="Controleer" />
  28. </div>
  29. </form>


  1. <?php
  2.  
  3. $captcha = $_SESSION['captcha'];
  4. $length = strlen($captcha);
  5. $background = array('images/blue.png', 'images/red.png', 'images/green.png', 'images/yellow.png');
  6. $image = imagecreatefrompng($background[rand(0, 3)]);
  7. $colour = imagecolorallocate($image, 255, 255, 255);
  8. $font = array('font/arial.ttf', 'font/CALIBRI.TTF', 'font/tahoma.ttf', 'font/ARIALN.TTF', 'font/CORBELI.TTF');
  9.  
  10. if ($length == 4)
  11. {
  12. $pos[0] = rand(45,50);
  13. $pos[1] = rand(65,70);
  14. $pos[2] = rand(80,91);
  15. $pos[3] = rand(105,127);
  16. }
  17. elseif ($length == 5)
  18. {
  19. $pos[0] = rand(45,50);
  20. $pos[1] = rand(65,70);
  21. $pos[2] = rand(80,91);
  22. $pos[3] = rand(105,127);
  23. $pos[4] = rand(130,152);
  24. }
  25.  
  26. for($i = 0; $i < $length; $i++)
  27. {
  28. imagettftext($image, rand(12,23), rand(-45,45), $pos[$i], 32, $colour, $font[rand(0,4)], $captcha[$i]);
  29. }
  30.  
  31. header('content-type: image/png');
  32. imagepng($image);
  33. imagedestroy($image);
  34. ?>
Offline mothh - 07/03/2009 11:39
Avatar van mothh Onbekend oke ik snap toch niet zoveel van captcha dus daarom dat domme antwoord
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.241s