IndexController.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller;
  4. use App\Tools\CommonService;
  5. use App\Tools\PublicData;
  6. use Hyperf\Di\Annotation\Inject;
  7. use Hyperf\HttpServer\Contract\RequestInterface;
  8. use Hyperf\Validation\Contract\ValidatorFactoryInterface;
  9. use App\Request\FooRequest;
  10. use App\Request\SceneRequest;
  11. use App\Tools\Result;
  12. use ZipArchive;
  13. class IndexController extends AbstractController
  14. {
  15. #[Inject]
  16. protected ValidatorFactoryInterface $validationFactory;
  17. public function index(RequestInterface $request)
  18. {
  19. $validator = $this->validationFactory->make(
  20. $request->all(),
  21. [
  22. 'foo' => 'required',
  23. 'bar' => 'required',
  24. ],
  25. [
  26. 'foo.required' => 'foo必填',
  27. 'bar.required' => 'bar必填',
  28. ]
  29. );
  30. if ($validator->fails()) {
  31. // Handle exception
  32. $errorMessage = $validator->errors()->first();
  33. var_dump($errorMessage);
  34. }
  35. // master123
  36. }
  37. public function verifyCode()
  38. {
  39. $comm = new CommonService();
  40. $ip = $comm->userIp();
  41. $redis = $this->container->get(\Hyperf\Redis\Redis::class);
  42. $config = new \EasySwoole\VerifyCode\Config();
  43. $code = new \EasySwoole\VerifyCode\VerifyCode($config);
  44. $img_code = '';
  45. $characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  46. $charLength = strlen($characters);
  47. for ($i = 0; $i < 4; $i++) {
  48. $img_code .= $characters[rand(0, $charLength - 1)];
  49. }
  50. //重写验证码
  51. $result = $code->DrawCode((string)$img_code);
  52. $img_code = $result->getImageCode();
  53. $code_uniqid = uniqid("code");
  54. //写入缓存 用于其他方法验证 并且设置过期时间
  55. $redis->set($code_uniqid, $img_code, 60000);
  56. //删除掉所有code_uniqid
  57. $redis->del($code_uniqid);
  58. $iterator = null;
  59. do {
  60. $keys = $redis->scan($iterator, "code*");
  61. var_dump($keys, '---1');
  62. if ($keys) {
  63. foreach ($keys as $key) {
  64. $redis->del($key);
  65. }
  66. }
  67. } while ($iterator > 0);
  68. return $result ? Result::success(['code' => $code_uniqid, 'img' => $result->getImageBase64()]) : Result::error('失败');
  69. // return $result->getImageBase64();
  70. }
  71. // test
  72. /**
  73. * 获取验证码
  74. */
  75. public function getverifyCode()
  76. {
  77. $comm = new CommonService();
  78. $ip = $comm->userIp();
  79. $redis = $this->container->get(\Hyperf\Redis\Redis::class);
  80. $img_code = $redis->get('code' . $ip);
  81. return Result::success($img_code);
  82. }
  83. }