简体   繁体   中英

PHP | Captcha won't write to $_SESSION

i'm building a form + form validation class , and i also wanted to add captcha to this. The captcha image is showing, however it itsn't storing anything in the $_SESSION.

I am using this captcha script:

https://github.com/gesf/captcha.class.php

Now in my controller i use this :

$data['regform']->addfield('user_captcha', 'Human verification', 'captcha', 'captcha' );

And that generates the following :

<label>
<span>Human verification</span>
<img name="user_captcha" src="http://www.websiteurl.com/dev/misc/captcha.php?c=1"><input type="text" name="user_captcha" value="" />
</label>

The image is showing like it should. However i'm not able to validate the input because it's not writing to the session. Now in the image file captcha.php it loads the class Captcha , and in this class constructor it tries to write to the session :

function Captcha($letter = '', $case = 5) {

$this->_capCase = $case;

if (empty($letter)) {
    $this->StringGen();
} else {
    $this->_capLength = strlen($letter);
    $this->_capString = substr($letter, 0, $this->_capLength);
}

@session_start();
$_SESSION['asd'] = 'asd';
$_SESSION["CAPTCHA_HASH"] = sha1($this->_capString);

$this->SendHeader();
$this->MakeCaptcha();

}

My session always stays empty. But when i try the following :

<?php $_SESSION['bleh'] = 'asd'?>

<?php echo $form; ?>

It adds 'bleh' to the session like it should.

I really can't see why it won't write to the session..

could someone help me out ??

Thanks!!

Make sure, that session_start() is called before any output for every single page. As I can see, you are using @ operator, that shuts up some errors. Can you remove it and tell us what does it output? Also, your sessiaon_start() call is somewhere in the middle of the script. Perhaps there are some other output before that.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM