Click here to get back home

captcha doesn't work

 HomeNewsGroups | Search

get this group's latest topics as an RSS feed  comp.lang.php - PHP programming language discussions

please rate
this thread
If you were  Registered and logged in, you could reply and use other advanced thread options
Posted by Co on March 4, 2009, 1:22 pm
Hi All,

I have a page for registering where I want to have a captcha.
I put the img on the form but he only thing I see is a black box
without any letters on it.

<?php

include("captcha.php");

if ($_SERVER['REQUEST_METHOD'] != "POST") // Controleren of er niet
ergens is gedrukt op een knop
{
   // er is nergens op een knop gedrukt, maar gewoon handmatig
gerefreshed..
   $_SESSION['code'] = ""; // de $_SESSION['code'] leeg gooien
   $code = code_generator(rand (4,5)); // een nieuwe key maken
}
if (empty ($_SESSION['code'])) // controleren of de sessie leeg is
{
   // de sessie is leeg, de code toewijzen aan de sessie
   $_SESSION['code'] = $code;
}
captcha_generator ($_SESSION['code']); // het genereren van de image

echo "

body {
 font-family:  Arial, Helvetica, sans-serif;
 font-size: 14px;
 color: #000000;
 text-decoration: none;
 scrollbar-face-color: #DEE3E7;
 scrollbar-highlight-color: #FFFFFF;
 scrollbar-shadow-color: #DEE3E7;
 scrollbar-3dlight-color: #D1D7DC;
 scrollbar-arrow-color:  #006699;
 scrollbar-track-color: #EFEFEF;
 scrollbar-darkshadow-color: #98AAB1;
 background-color: #FFFFFF;
 margin: 0px;
}
td {
 font-size: 10px;
 color: #666666;
 font-family: Verdana, Arial, Helvetica, sans-serif;
 text-decoration: none;

  border-bottom-style:none;
}
tr {
 font-size: 10px;
 color: #666666;
 font-family: Verdana, Arial, Helvetica, sans-serif;
 text-decoration: none;
border-bottom-style:none;
}
th {
 font-size: 10px;
 color: #666666;
 font-family: Verdana, Arial, Helvetica, sans-serif;
 text-decoration: none;
 border-bottom-style:none;
 border:0;
}

A {text-decoration: none;COLOR: #000000; }
A:visited { text-decoration: none;color: #000000; }
A:hover { COLOR: #000000; TEXT-DECORATION: none }
.style1 {
 font color:#000000;
          }
.style2 {
 font color: #000000;
          }
.style3 {
 font color: #ffffff;
          }
form {
 font-family: Tahoma, Arial, Helvetica, sans-serif;
 font-size: 11px;
 color: #ffffff;}
body {
 color: #000000;
}
.tablest {  text-decoration: none;
          border-color: #000000;
          background :#D8D8D8;
}
.tablebg1 {                                text-decoration: none;
          border-color: #000000;
          background :#59002D;
  }
.tablebg2 {                                font-family: Tahoma, Arial,
Helvetica, sans-serif;
                                 font-size: 11px;
                                                text-decoration: none;
          border-color: #000000;
                                                font-color : #ffffff;
                                                color : #ffffff;
          background :#010D55;
  }
.tablebg3{                                 background :#CCCCCC;
                                                border-color :
#cccccc;
                                }
.tablebg4{
                                                background :#F4F4F4;
                                                color : #000000;
                                                font-color : #ffffff;
             }
.tablebg5{
                                                border-color: #000000;
                                                color : #000000;
             }
 .adminarea{                                font-family:   arial;
                                     font-size: 30px;
                font-style:oblique;
                                            text-decoration: none;
                border-color: #000000;
                                            font-color : #ffffff;
                                            color : #ffffff;
         background :#010D55;
         font-weight: bold;
  }

.textboxgray {
 font-family: Verdana, Arial, Helvetica, sans-serif;
 font-size: 10px;
 color: #666666;
 border: 1px solid #999999;
 background-color: #f7f7f7;
}
.textboxgray1 {
 font-family: Verdana, Arial, Helvetica, sans-serif;
 font-size: 12px;
 color: #666666;
 border: 1px solid #999999;
 background-color: #f7f7f7;

 padding: 1px;
 width:100%;
 border-spacing: inherit;

}
form {
 margin: 0px;
 padding: 20px;
 color: #000000;
}


----------------------| Captcha.php
|------------------------------------------------

<?PHP
//error_reporting (E_ALL); // fouten weergeven

function code_generator($length)
{
    $generated_key = "";
    while (strlen($generated_key) < $length)
    {
        $generate = mt_rand(48, 90);

    }
    return $generated_key;
}

function captcha_generator($code)
{

//$code = code_generator(5); // even een testcode aanmaken, zie
paragraaf 5 voor een voorbeeld keygen.
$image = imagecreatetruecolor (200, 40); // maakt de image met de
groote van 300px breed, en 60px hoog
$aFonts = array ('Yiggivoo1.ttf', 'duepuntozero.ttf',
'bertoltbrecht.ttf', 'phrixus.ttf'); // zet alle beschikbare fonts in
een array
$aCode = str_split ($code); // zet alle karakters apart in een array

for ($i = 0; $i < count ($aCode); $i++) // een for-lus maken voor het
aantal karakters dat de $aCode array bevat
{
   $fontcolor = imagecolorallocate ($image, // kleurencombinatie maken
voor de image variabel ($image)
      rand (190, 255), // rood,
      rand (190, 255), // groen,
      rand (190, 255)); // blauw, deze geven de nieuwe kleur per
karakter
   if (count ($aCode) == 4) // de volgende locaties (x-as) aanmaken
voor een code van 4 karakters lang
   {
      $pos[0] = rand (15, 55); // locatie aanmaken (x-as) voor de
eerste karakter
      $pos[1] = rand (80, 120); // locatie aanmaken (x-as) voor de
tweede karakter
      $pos[2] = rand (145, 185); // locatie aanmaken (x-as) voor de
derde karakter
      $pos[3] = rand (210, 250); // locatie aanmaken (x-as) voor de
vierde karakter
   }
   if (count ($aCode) == 5) // de volgende locaties (x-as) aanmaken
voor een code van 5 karakters lang
   {
      $pos[0] = rand (10, 45); // locatie aanmaken (x-as) voor de
eerste karakter
      $pos[1] = rand (65, 100); // locatie aanmaken (x-as) voor de
tweede karakter
      $pos[2] = rand (120, 155); // locatie aanmaken (x-as) voor de
derde karakter
      $pos[3] = rand (175, 210); // locatie aanmaken (x-as) voor de
vierde karakter
      $pos[4] = rand (230, 265); // locatie aanmaken (x-as) voor de
vijfde karakter
   }
   imagettftext ($image, // image voorbereiden voor de image variabel
($image)
   rand (16, 20), // fontgrootte, willekeurig getal laten kiezen
tussen de 13 en 19
   rand (-30, 30), // draaihoek, willekeur getal laten kiezen tussen
de -31 en de 31
   $pos[$i], // karakter positie breedte toewijzen, hebben we al
voorbereid ($pos[])
   rand (50, 20), // karakter positie hoogte, kiezen tussen de 51 en
de 19
   $fontcolor, // fontkleur toewijzen, hebben we al voorbereid
($fontcolor)
   $aFonts[rand (0, 3)], // font, willekeurig font toewijzen uit de
array ($aFonts)
   $aCode[$i]); // code toewijzen, op volgorde van de array
}
imagepng ($image, 'captcha2.png'); // de .png image aanmaken als
captcha.png
imagedestroy ($image); // de handel afronden, en klaar!
}



Marco

Posted by Jerry Stuckle on March 4, 2009, 2:02 pm
Co wrote:


Why don't you ask the developer of the CAPTCHA code?  He's more familiar
with it than anyone

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================

Posted by David Barnes on March 4, 2009, 3:48 pm


Hi Marco,

Perhaps your font files are not there. When I first ran this script I
got this error:

Warning: imagettftext() [function.imagettftext]: Could not find/open
font in /usr/local/www/apache22/data/missilesilo/david/Captcha.php on
line 53

I copied arial.ttf into the same directory that I ran the script from,
and I changed $aFonts:

$aFonts = array('arial.ttf','arial.ttf','arial.ttf','arial.ttf');

I now see colored letters instead of a black box. Hope this helps.

-David

Posted by Co on March 5, 2009, 2:32 am


David,

The problem is not really the captcha code because I can also see the
image when I run it as a seperate php form.
However in my form as posted I can only see a black screen with no
letters.

Marco

Posted by Bill H on March 5, 2009, 5:44 am


Marco

completely not php, remove this:

body {
        color: #000000;

}

from your code and it will not be a black screen

Bill H


Subject Author Date
captcha doesn't work Co 03-04-2009
If you were  Registered and logged in, you could reply and use other advanced thread options
  • Subject
  • Date

Our other projects:

Art Dolls, Fairies and Mermaids - Sunnyfaces.net

Driving a better car - Fuelzilla.com

Cabling site for homeowners and pros alike - Cabling-Design.com

1-Script XML SitemapXML Sitemap
Privacy Policy