为了账号安全,请及时绑定邮箱和手机立即绑定

Can't use function return value in write context

<?php 


class Captcha{

//字体文件

private $_fontfile='';

//字体大小

private $_size =20;

//画布宽度

private $_width = 120;

//画布高度

private $_height = 40;

//验证码长度

private $_length = 4;

//画布资源

private $_image =null;

//干扰元素

//雪花的个数

private $_snow=0;

//像素点个数

private $_pixel=0;

//线段个数

private $_line=0;

/**

* 初始化数据

* @param array $config [description]

*/

public function __construct($config=array()){

if(is_array($config)&&count($config)>0){

/**

* 检测字体文件是否存在并且可读

*/

if(isset($config['fontfile'])&&is_file($config['fontfile'])&&is_readable($config['fontfile'])){

$this->_fontfile=$config['fontfile'];

}

//检测画布高度和宽度

if(isset($config('width'))&&$config['width']>0){

$this->_width=(int)$config['width'];

}

if(isset($config('height'))&&$config['height']>0){

$this->_height=(int)$config['height'];

}

//检测字符大小

if(isset($config('size'))&&$config['size']>0){

$this->_size=(int)$config['size'];

}

//检测验证码长度

if(isset($config('length'))&&$config['length']>0){

$this->_length=(int)$config['length'];

}

//配置干扰元素

if(isset($config('snow'))&&$config['snow']>0){

$this->_snow=(int)$config['snow'];

}

if(isset($config('pixel'))&&$config['pixel']>0){

$this->_pixel=(int)$config['pixel'];

}

if(isset($config('line'))&&$config['line']>0){

$this->_line=(int)$config['line'];

}

$this->_image=imagecreatetruecolor($this->_width, $this->_height);

return $this->_image;

}else{

return flase;

}


}




/**

* 得到验证码

* @return [type] [description]

*/

public function getCaptcha(){

$white = imagecolorallocate($this->_image, 255, 255, 255);

//填充矩形

imagefilledrectangle($this->_image,0,0,$this->_width,$this->_height,$white);

//生成验证码

$str=$this->_generateStr($this->_length);

if(false==$str){

return false;

}

//绘制验证码

$fontfile=$this->_fontfile;

for($i=0;$i<$this->$_length;$i++){

$size=$this->_size;

$angle=mt_rand(-15,15);

$x=ceil($this->_width/$this->_height)*$i+mt_rand(5,10);

$y=ceil($this->_height/1.5);

$color=$this->_getRandColor();

$text=$str{$i};

imagettftext($this->_image,$size,$angle,$x,$y,$color,$fontfile,$text);

}

//绘制干扰元素

if ($this->_snow) {

$this->_getSnow();

# code...

}else{

if($this->_pixel){

$this->_getPixel();

}

if($this->_line){

$this->_getLine();

}

}

//绘制图像

header('content-type:image/png');

imagepng($this->_image);

imagedestroy($this->_image);

return strtolower($str);

}

/**

* 生成雪花

* @return [type] [description]

*/

private function _getSnow(){

for($i=1;$i<=$this->_snow;$i++){

imagestring($this->_image,mt_rand(1,5),mt_rand(0,$this->_width),mt_rand(0,$this->_height),'*',$this->_getRandColor());

}

}

/**

* 生成像素点

* @return [type] [description]

*/

private function _getPixel(){

for($i=1;$i<=$this->_pixel;$i++){

imagesetpixel($this->_image,mt_rand(0,$this->_width),mt_rand(0,$this->_height),$this->_getRandColor());

}

}

/**

* 生成线条

* @return [type] [description]

*/

private function _getLine(){

for($i=1;$i<=$this->_line;$i++){

imageline($this->ima, mt_rand(0,$this->_width),mt_rand(0,$this->$height), mt_rand(0,$this->_width), mt_rand(0,$this->_height),$this->_getRandColor());

}

}






/**

* 产生验证码字符

* @param  integer $length 验证码长度

* @return [type]          随机字符

*/

public function _generateStr($length=4){

if($length<1||$length>30){

return false;

}

$chars = array(

'a','b','c','d','e','f','g','h','k','m','n','p','x','y','z','A','B','C','D','E','F','G','H','K','M','N','P','X','Y','Z',1,2,3,4,5,6,7,8,9

);

$str = join('',array_rand(array_flip($chars),$length));

}


private function _getRandColor(){

return imagecolorallocate($this->_image,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));

}







}

报错; Can't use function return value in write context in D:\pycharm\Demo\Capcha.class.php on line 36

这个怎么解决求证

正在回答

1 回答

if(isset($config('width'))&&$config['width']>0){   是方括号,不是小括号,后面几行都是。

还有构造函数最后的应该是 return false ,不是flase。

0 回复 有任何疑惑可以回复我~
#1

慕斯卡1548473 提问者

非常感谢!
2017-12-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
PHP进阶篇-GD库图像处理
  • 参与学习       10431    人
  • 解答问题       69    个

想通过PHP中GD函数库灵活操作图像吗,点击学习本教程可以实现

进入课程

Can't use function return value in write context

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信