欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-01-04 10:46:10
...

登陆验证码实例

前端关键代码

  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();

演示效果展示:
登陆验证码实例、接口初识

上一篇:

下一篇: