login  Naam:   Wachtwoord: 
Registreer je!
 Forum

code gelijk aan GD plaatje??

Offline Appie_Dijk - 23/08/2006 21:23 (laatste wijziging 23/08/2006 23:35)
Avatar van Appie_DijkLid ok ik probeerde gisteren een GD plaatje te krijgen van een script die ik van deze site heb gehaald... helaas is dit niet gelukt...
Ik heb van iemand van deze site toen een ander GD script gekregen...

  1. <?php
  2.  
  3.  
  4. $len = 5; // length of string
  5.  
  6. $lchar = 0;
  7. $char = 0;
  8.  
  9. /**************************************************
  10.   $random_text will hold the secret and random text!
  11.   **************************************************/
  12. // create 'random' text
  13.  
  14. for($i = 0; $i < $len; $i++) {
  15.  
  16. while($char == $lchar) {
  17. $char = rand(48, 109);
  18. if($char > 57) $char += 7;
  19. if($char > 90) $char += 6;
  20. }
  21.  
  22. $random_text .= chr($char);
  23. $lchar = $char;
  24.  
  25. }
  26.  
  27. $_SESSION['code'] = $random_text;
  28.  
  29.  
  30.  
  31. $width = 100; // width of image
  32. $height = 30; // height of image
  33. $fontsize = 6; // fontsize
  34.  
  35. //-- Random string voor images code
  36.  
  37. $fontwidth = ImageFontWidth($fontsize) * strlen($random_text);
  38. $fontheight = ImageFontHeight($fontsize);
  39.  
  40. // create handle for image
  41. $im = @imagecreate($width,$height);
  42.  
  43. // white background
  44. $background_colour = imagecolorallocate($im, 255, 255, 255);
  45.  
  46. // give the 'random' text a nice colour
  47. $text_colour = imagecolorallocate($im, rand(0,150), rand(0,150), rand(0,150));
  48.  
  49. // give the border a colour too ;)
  50. imagerectangle($im, 0, 0, $width-1, $height-1, $text_colour);
  51.  
  52. // draw the string horizontally
  53. imagestring($im, $fontsize, rand(3, $width-$fontwidth-3), rand(2, $height-$fontheight-3), $random_text, $text_colour);
  54.  
  55. // lets output!
  56. header("Content-type: image/png");
  57. imagepng($im,'',80);
  58.  
  59. imagedestroy($im);
  60.  
  61. //sessie zetten
  62.  
  63.  
  64. ?>


nu wil ik in een contactformulier de code controleren... (of deze gelijk is aan het plaatje...


  1. zie hieronder.
  2. Rensjuh


het probleem is dat het nu niet uitmaakt wat voor code ik invoer...
kan iemand mij helpen?

11 antwoorden

Gesponsorde links
Offline Dark_Paul - 23/08/2006 21:30 (laatste wijziging 23/08/2006 21:37)
Avatar van Dark_Paul PHP ver gevorderde
Citaat:
voorzie het bericht eventueel van codefragmenten (géén lappen text)
waarom moeten we dit toch iedere keer zeggen?]
Verder is het niet zo moeilijk. Je slaat de code al op in een sessie. Je hoeft dus alleen te controleren of bij het verzenden, de ingevoerde code (aparte inputbox hiervoor, met daarbij het plaatje) overeenkomt met de sessie-code. Zojah, dan is de code juist, zonee, dan heeft diegene een verkeerde code ingevoerd.
Nog wat dingen, bij je form kan je action="<?php ..?>" gewoon leeglaten, action="" is hetzelfde. En je kan if (isset($_POST['verzenden'])) vervangen door if ($_SERVER['REQUEST_METHOD'] == 'POST')
nog een kleine opmerking, <?php echo $blaat; ?> kan je korter doen, door shorttags te gebruiken: <?=$blaat;?> (dit zijn short-tags, gebruik ze dus alleen in deze gevallen).
Offline Appie_Dijk - 24/08/2006 00:16
Avatar van Appie_Dijk Lid tja... makkelijk gezegt Dark_Paul, maar ik ben er al een dag mee aan het stoeien... en heb al aan enkele andere PHP-ers gevraagd...

aangezien ik (en zij) de oplossing zo niet wisten heb ik de hele tekst maar gepost aangezien ik echt niet weet wat er fout is en waar het fout gaat...
Offline Damage - 24/08/2006 07:11
Avatar van Damage PHP interesse ja nog geen rede om hele lap tekst op de website te beuken... lappe tekst beuk je op plaatscode.be 
Offline Thomas - 24/08/2006 13:57
Avatar van Thomas Moderator Stel dat dat plaatjesscript image.php heet.

Dan roep je deze aan op je login-pagina (of wat voor pagina je ook wilt gebruiken). Als je deze pagina aanroept, zal de "code" staan in $_SESSION['code']. Op diezelfde pagina heb je waarschijnlijk ook een formulier staan. Hier moet je dan een veld in aanmaken waarin die code weer ingetypt moet worden (stel: "code").

Na het submitten vergelijk je de code in je sessie ($_SESSION['code']) met de code uit je gesubmit formulier ($_POST['code']). Je moet dan niet vergeten om de sessie voort te zetten met session_start().

That's it...
Offline Appie_Dijk - 24/08/2006 14:50
Avatar van Appie_Dijk Lid @FangorN: ik heb het nu precies zo gedaan als jij hebt beschreven, het werkt... gelukkig...

Nu zit er kennelijk alleen nog 1 fout in het volgende stuk code (even voor je ingekort):

  1. <?
  2. ob_start(); // Voor Cookie setten
  3. session_start(); //Sessie starten
  4.  
  5. if($_POST['code'] != $_SESSION['code'])
  6. { echo "Je moet wel de goede activatiecode invullen! Let op hoofdletters en cijfers. <a href='javascript:history.go(-1)'>Ga terug</a>."; }
  7.  
  8. ?>
  9.  
  10. <html>
  11. <head>
  12. <title>Contact Formulier</title>
  13. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  14. </head>
  15.  
  16. <body>
  17. <form method="post" action="">
  18. <table>
  19. <tr>
  20. <td colspan="2">Type de volgende code over en druk op "verzenden" om het bericht te versturen.</td>
  21. </tr>
  22. <tr>
  23. <td><img src='random.php'></td>
  24. <td>Code :<input name="code" type="text" value="" size='11' maxlength='10'></td>
  25. </tr>
  26. <tr>
  27. <td></td>
  28. <td><input type="submit" id="verzenden" name="verzenden" value="Verzenden"><input type="submit" id="wis" name="wis" value="Wis velden"></td>
  29. </tr>
  30. </table>
  31. </form>
  32. </body>
  33. </html>


Nu geeft hij meteen als ik de pagina laad de volgende "fout"
"Je moet wel de goede activatiecode invullen! Let op hoofdletters en cijfers."

daarna doet het formulier het verder prima, de code wordt goed gecontroleerd en het werkt ook, maar ik wil niet graag deze foutmelding als de pagina wordt geladen... wat kan ik hieraan doen?
Offline Abbas - 24/08/2006 14:56 (laatste wijziging 24/08/2006 14:59)
Avatar van Abbas Gouden medaille

Crew .NET
Komt dit niet omdat als de pagina geopend wordt er nog geen waarde in het invoervak staat en die lege waarde dan al gebruikt wordt om te vergelijken met de $_SESSION['code']...
Dit resulteert logischer wijze in een foutmelding dan...

Misschien werkt dit:

  1. <?
  2. ob_start(); // Voor Cookie setten
  3. session_start(); //Sessie starten
  4.  
  5. if(isset($_POST['verzenden']) //als er op de submit knop geklikt werd
  6. {
  7. if($_POST['code'] != $_SESSION['code'])
  8. {
  9. echo "Je moet wel de goede activatiecode invullen! Let op hoofdletters en cijfers. <a href='javascript:history.go(-1)'>Ga terug</a>.";
  10. }
  11. }
  12. ?>


laat maar weten of dit geholpen heeft 
Offline Appie_Dijk - 24/08/2006 15:00 (laatste wijziging 24/08/2006 15:00)
Avatar van Appie_Dijk Lid Parse error: syntax error, unexpected '{' in /home/public_html/test.php on line 6
Offline Abbas - 24/08/2006 15:01 (laatste wijziging 24/08/2006 15:02)
Avatar van Abbas Gouden medaille

Crew .NET
owja, haakje vergten nog na
  1. <?
  2. if(isset($_POST['verzenden']))

sorry, op het einde van die regel moeten 2 ')' staan
Offline Gerard - 24/08/2006 15:02
Avatar van Gerard Ouwe rakker if(isset($_POST['verzenden']))

Maar dat kon je zelf toch ook nog wel zien, parse errors is beginners werk.
Offline Appie_Dijk - 24/08/2006 15:18
Avatar van Appie_Dijk Lid tuurlijk... dom dat ik dat niet gezien heb...
komt waarschijnlijk door de drukte...

naja, in ieder geval bedankt!
Offline Thomas - 24/08/2006 15:36 (laatste wijziging 24/08/2006 15:37)
Avatar van Thomas Moderator Volgens mij zijn hiervoor (logincontrole-met-plaatjes-validatie) trouwens een heleboel standaard oplossingen voorhanden.

Zoals deze captcha tut. Google maar eens op "php captcha".

Zie ook > Wiki.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.213s