captcha.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. require 'class.geetestlib.php';
  3. $captchaID = 'b078b9f46c61ca047d20ffa056181e42';
  4. $privateKey = 'b44ac364c8fd172299403982bc91e7b6';
  5. $GtSdk = new GeetestLib($captchaID, $privateKey);
  6. $data = array(
  7. "user_id" => getRandomCheckCode(4), # 网站用户id
  8. "client_type" => $_SERVER['HTTP_USER_AGENT'], #web:电脑上的浏览器;h5:手机上的浏览器,包括移动应用内完全内置的web_view;native:通过原生SDK植入APP应用的方式
  9. "ip_address" => getip() # 请在此处传输用户请求验证时所携带的IP
  10. );
  11. $status = $GtSdk->pre_process($data, 1);
  12. echo $GtSdk->get_response_str();
  13. /**
  14. * 随机生成验证码
  15. */
  16. function getRandomCheckCode($length = 6, $chars = '0123456789') {
  17. $hash = '';
  18. $max = strlen($chars) - 1;
  19. for ($i = 0; $i < $length; $i++) {
  20. $hash .= $i === 0 ? $chars[mt_rand(1, $max)] : $chars[mt_rand(0, $max)];
  21. }
  22. return $hash;
  23. }
  24. function getip() {
  25. static $ip = '';
  26. $ip = $_SERVER['REMOTE_ADDR'];
  27. if(isset($_SERVER['HTTP_CDN_SRC_IP'])) {
  28. $ip = $_SERVER['HTTP_CDN_SRC_IP'];
  29. } elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {
  30. $ip = $_SERVER['HTTP_CLIENT_IP'];
  31. } elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {
  32. foreach ($matches[0] AS $xip) {
  33. if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) {
  34. $ip = $xip;
  35. break;
  36. }
  37. }
  38. }
  39. return $ip;
  40. }
  41. ?>