Reputation: 2660
Im trying to add a captcha to my registration form. The image is rendering just fine except the session variable is always empty, so it doesn't work at all..
I am using the following class : http://www.ejeliot.com/pages/php-captcha
According to the documentation i had to make a php file with the following content:
<?php
require('classes/PhpCaptcha.php');
$aFonts = array('fonts/VeraBd.ttf', 'fonts/VeraIt.ttf', 'fonts/Vera.ttf');
$oVisualCaptcha = new PhpCaptcha($aFonts, 200, 60);
$oVisualCaptcha->SetBackgroundImages('captchaimgbg.jpg');
$oVisualCaptcha->Create();
?>
And include this as an image.
Now ive looked into the Create(); function, and in this function another function named GenerateCode(); is called, which is responsible for generating the letters and putting it into a session variable.
The code is as follow:
function GenerateCode() {
// reset code
$this->sCode = '';
// loop through and generate the code letter by letter
for ($i = 0; $i < $this->iNumChars; $i++) {
if (count($this->aCharSet) > 0) {
// select random character and add to code string
$this->sCode .= $this->aCharSet[array_rand($this->aCharSet)];
} else {
// select random character and add to code string
$this->sCode .= chr(rand(65, 90));
}
}
// save code in session variable
if ($this->bCaseInsensitive) {
$_SESSION[CAPTCHA_SESSION_ID] = strtoupper($this->sCode);
} else {
$_SESSION[CAPTCHA_SESSION_ID] = $this->sCode;
}
}
The CAPTCHA_SESSION_ID is defined at the top of the class file. In my index i have session_start(); , i double checked this and that is not the problem.
No matter what i try, $_SESSION is always empty, even if i add $_SESSION['bla'] = 'bla' manually in the create(); function, it doesn't show up.
Does anyone have an idea what is causing this, or what i am doing wrong?
Thanks!
Upvotes: 2
Views: 4036
Reputation: 15045
<?php
session_start();
require('classes/PhpCaptcha.php');
$aFonts = array('fonts/VeraBd.ttf', 'fonts/VeraIt.ttf', 'fonts/Vera.ttf');
$oVisualCaptcha = new PhpCaptcha($aFonts, 200, 60);
$oVisualCaptcha->SetBackgroundImages('captchaimgbg.jpg');
$oVisualCaptcha->Create();
?>
You need to start the session with session_start()
at the TOP of the code on all the pages that access/set $_SESSION
variables.
Upvotes: 6