登陆验证码实例、接口初识
程序员文章站
2024-01-04 10:46:10
...
登陆验证码实例
前端关键代码
<?php
session_start();
require __DIR__.'/plugins/captcha/vendor/autoload.php';
use Gregwar\Captcha\CaptchaBuilder;
$builder = new CaptchaBuilder;
$builder->build();
// $SESSION['phrase'] = $builder->getPhrase();
?>
后台验证代码
switch ($action){
case 'login':
if(empty($res)){
echo json_encode(array('code'=>2, 'msg'=>'用户名不存在。'));
}else{
if(strcasecmp($captchat, $phrase) == 0){
if(password_verify($pwd, $res['password'])){
echo json_encode(array('code'=>1, 'msg'=>'登录成功'));
$_SESSION['username'] = $res['username'];
return true;
}else {
echo json_encode(array('code'=>2, 'msg'=>'用户名或密码不正确。'));
}
}else{
echo json_encode(array('code'=>2, 'msg'=>'验证码不正确。'));
}
}
break;
case 'register':
if(!empty($res)){
echo json_encode(array('code'=>2, 'msg'=>'用户名已存在。'));
}else{
if($pwd == $pwd2){
$pwd = password_hash ($pwd,PASSWORD_DEFAULT );
$sql = "INSERT INTO `users` (`username`, `password`) VALUES (?, ?);";
$stmt = $pdo->prepare($sql);
// 绑定参数到指定的变量名
$para = [$name,$pwd];
// 执行一条预处理语句
$stmt->execute($para);
$insert_id = $pdo->lastInsertId();
if($insert_id){
echo json_encode(array('code'=>1, 'msg'=>'登录成功'));
}else {
echo json_encode(array('code'=>2, 'msg'=>'用户名或密码不正确。'));}
}else{
echo json_encode(array('code'=>2, 'msg'=>'两次输入密码不一致。'));
};
};
break;
case 'logout':
session_destroy();
echo json_encode(array('code'=>1, 'msg'=>'退出成功。'));
break;
演示链接(user:900117,pws:zh155086)
[http://help10086.cn/0121/login.php]
接口与抽象类
1、接口
关键字:
interface
语法和类相似: 抽象方法, 常量, 构造方法
所的方法都是抽象方法
访问控制必须是 public
接口: 完全分离了” 设计(抽象类中完成)与实现(工作类中完成)
接口实现关键字:implements
2、抽象类
- 类中有抽象方法的类
- 作为接口与工作方法的连接
演示代码:
<?php
// 接口使用场景
interface iActor
{
// 接口常量
const NATION = '中国';
// 接口方法: 都是抽象方法,都是公共方法
// 抽象方法: 没有方法体
public function resume();
public function work();
}
// 抽象类实现接口部部份方法
abstract Class Lending implements iActor
{
protected $name = '张小哥';
// 接口中的抽象方法,必须在工作类实现
public function resume()
{
return $this->name . ' 的国籍是: ' . iActor::NATION;
}
}
// 工作类继承抽象方法后,实现抽象类中没有实现的剩余方法
Class Lendingo extends Lending
{
public function work(){
return '地下工作者';
}
}
// 客户端
$lendingo = new Lendingo;
echo $lendingo->resume();
echo $lendingo->work();
演示效果展示: