博客列表 >登陆验证码实例、接口初识

登陆验证码实例、接口初识

赵大叔
赵大叔原创
2022年02月21日 11:11:44730浏览

登陆验证码实例

前端关键代码

  1. <?php
  2. session_start();
  3. require __DIR__.'/plugins/captcha/vendor/autoload.php';
  4. use Gregwar\Captcha\CaptchaBuilder;
  5. $builder = new CaptchaBuilder;
  6. $builder->build();
  7. // $SESSION['phrase'] = $builder->getPhrase();
  8. ?>

后台验证代码

  1. switch ($action){
  2. case 'login':
  3. if(empty($res)){
  4. echo json_encode(array('code'=>2, 'msg'=>'用户名不存在。'));
  5. }else{
  6. if(strcasecmp($captchat, $phrase) == 0){
  7. if(password_verify($pwd, $res['password'])){
  8. echo json_encode(array('code'=>1, 'msg'=>'登录成功'));
  9. $_SESSION['username'] = $res['username'];
  10. return true;
  11. }else {
  12. echo json_encode(array('code'=>2, 'msg'=>'用户名或密码不正确。'));
  13. }
  14. }else{
  15. echo json_encode(array('code'=>2, 'msg'=>'验证码不正确。'));
  16. }
  17. }
  18. break;
  19. case 'register':
  20. if(!empty($res)){
  21. echo json_encode(array('code'=>2, 'msg'=>'用户名已存在。'));
  22. }else{
  23. if($pwd == $pwd2){
  24. $pwd = password_hash ($pwd,PASSWORD_DEFAULT );
  25. $sql = "INSERT INTO `users` (`username`, `password`) VALUES (?, ?);";
  26. $stmt = $pdo->prepare($sql);
  27. // 绑定参数到指定的变量名
  28. $para = [$name,$pwd];
  29. // 执行一条预处理语句
  30. $stmt->execute($para);
  31. $insert_id = $pdo->lastInsertId();
  32. if($insert_id){
  33. echo json_encode(array('code'=>1, 'msg'=>'登录成功'));
  34. }else {
  35. echo json_encode(array('code'=>2, 'msg'=>'用户名或密码不正确。'));}
  36. }else{
  37. echo json_encode(array('code'=>2, 'msg'=>'两次输入密码不一致。'));
  38. };
  39. };
  40. break;
  41. case 'logout':
  42. session_destroy();
  43. echo json_encode(array('code'=>1, 'msg'=>'退出成功。'));
  44. break;

演示链接(user:900117,pws:zh155086)
[http://help10086.cn/0121/login.php]

接口与抽象类

1、接口

关键字: interface
语法和类相似: 抽象方法, 常量, 构造方法
所的方法都是抽象方法
访问控制必须是 public
接口: 完全分离了” 设计(抽象类中完成)与实现(工作类中完成)
接口实现关键字:implements

2、抽象类

  • 类中有抽象方法的类
  • 作为接口与工作方法的连接

演示代码:

  1. <?php
  2. // 接口使用场景
  3. interface iActor
  4. {
  5. // 接口常量
  6. const NATION = '中国';
  7. // 接口方法: 都是抽象方法,都是公共方法
  8. // 抽象方法: 没有方法体
  9. public function resume();
  10. public function work();
  11. }
  12. // 抽象类实现接口部部份方法
  13. abstract Class Lending implements iActor
  14. {
  15. protected $name = '张小哥';
  16. // 接口中的抽象方法,必须在工作类实现
  17. public function resume()
  18. {
  19. return $this->name . ' 的国籍是: ' . iActor::NATION;
  20. }
  21. }
  22. // 工作类继承抽象方法后,实现抽象类中没有实现的剩余方法
  23. Class Lendingo extends Lending
  24. {
  25. public function work(){
  26. return '地下工作者';
  27. }
  28. }
  29. // 客户端
  30. $lendingo = new Lendingo;
  31. echo $lendingo->resume();
  32. echo $lendingo->work();

演示效果展示:

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议