Correcting teacher:PHPz
Correction status:qualified
Teacher's comments:
1.安装安装包gregwar/captcha
composer->composer.json中
“require”: {
“gregwar/captcha”: “1.*”
}
命令符中的composer下composer install->composer update
2.login.php
session_start();
require __DIR__ . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
use Gregwar\Captcha\CaptchaBuilder;
$builder = new CaptchaBuilder;
$builder->build();
// $builder->save('out.jpg');
// header('Content-type: image/jpeg');
// $builder->output();
//将验证码的文字信息存放在session中
$_SESSION['phrase'] = $builder->getPhrase();
//后端验证码的验证
if ((strcasecmp($_POST['captcha'], $_SESSION['phrase'])) == 0) {
echo json_encode('验证通过', 320);
} else {
echo json_encode('验证码错误', 320);
}
?>
<input type="text" name="captcha" placeholder="请输入验证码">
<img src="<?php echo $builder->inline(); ?>" />
<p><?= $_SESSION['phrase'] ?></p>
接口是定义,类(抽象类)是实现。
1.接口中公开的均是抽象方法,类属性不能定义在接口中,类常量可以
2.一个工作类必须将接口中的所有方法按照自己的需求去实现,否则该类要定义成抽象类
3.抽象类中可以有抽象方法和普通方法,不能被实例化
interface Idemo
{
const APP_NAME = '咖啡馆';
public static function getInfo(...$info);
public static function cal($a, $b);
}
//抽象类
abstract class aDemo implements Idemo
{
static function getInfo(...$info)
{
return print_r($info, true);
}
}
//工作类
class Work extends aDemo
{
static function cal($a, $b)
{
return pow($a, $b);
}
}
echo Work::getInfo('木子木杉', 35, '正在学习');
//常量最好是以接口的方式去访问
echo Idemo::APP_NAME;
echo aDemo::APP_NAME;
echo aDemo::getInfo('木子木杉', 35, '正在学习');
echo Work::cal(4, 2);