Ответы пользователя по тегу PHP
  • Не получается сделать рекапчу на форме?

    JackWilliams
    @JackWilliams
    SecretKey должен хранится исключительно на сервере. И на сервере рекапча проверяется при помощи sitekey и secret key. Вот примерно как это происходит:
    function v2_captcha_token_checker($v2_captcha_tokens, $secret_key){
    
        // return false;
        // return true;
    
        $ch = curl_init();
    
        $data = array(
    
          'secret' => $secret_key,
          'response' => $v2_captcha_token
    
        );
    
        curl_setopt_array($ch, [
    
            CURLOPT_HEADER => 0,
            CURLOPT_POST => true,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_URL => 'https://www.google.com/recaptcha/api/siteverify',
            CURLOPT_POSTFIELDS => http_build_query($data)
    
          ]);
    
    
      $response = json_decode(curl_exec($ch), true);
    
    
      if($response['success']){
    
    
        return true;
    
      }
      else{
    
        return false;
    
      }
    
    }
    function captcha_response_check()
      {
    
          include ("captcha_v2_invisible_cnf.php");
          global $answer;
    
          if (
    
          (!isset($_POST['captcha_v2_invisible_token'])) ||
    
          ($_POST['captcha_v2_invisible_token'] == ""))
          {
    
              $answer["status"] = "ERROR";
              $answer["message"] = 'BAD REQUEST: POST captcha_v2_invisible_token param is required';
              http_response_code(400);
    
              echo json_encode($answer);
              exit;
    
          }
    
          $captcha_v2_invisible_token = $_POST['captcha_v2_invisible_token'];
          $secret_key = $captcha_v2_invisible_cnf['secret_key'];
    
          $captcha_v2_invisible_token_is_ok = v2_captcha_token_checker($captcha_v2_invisible_token, $secret_key);
    
          if ($captcha_v2_invisible_token_is_ok)
          {
    
              $answer["captcha_v2_invisible_token_is_valid"] = true;
    
          }
          else
          {
    
              $answer["captcha_v2_invisible_token_is_valid"] = false;
              http_response_code(400);
              $answer["status"] = "ERROR";
              $answer["message"] = 'captcha v2 invisible token is not valid';
    
              echo json_encode($answer);
              exit;
    
          }
    
      }
    Ответ написан
  • Как исправить ошибку в PHP?

    JackWilliams
    @JackWilliams
    class Car{
        public $speed;
        public $wheels;
        public $color;
    
        function showSpeed(){
          echo 'Скорость автомобиля '.$this->speed."<br>";
        }
      }
      class Audi extends Car {
        private $model;
    
        function setModel($model){
          $this->model = $model;
          echo "Модель автомобиля: " . $this->model."<br>"; 
        }
    }
      $a4 = new Audi;
      $a4->speed = 340;
      $a4->showSpeed();
      $a4->setModel("A4");
    Ответ написан
    Комментировать
  • Отправка почты на несколько адресов php mail()?

    JackWilliams
    @JackWilliams
    Не используйте php mail. Используйте хотя бы PHP Mailer. Если хотите заморочиться и сделать так, чтобы письма не улетали в спам, посмотрите в сторону готовых API (платных)
    Ответ написан
    4 комментария
  • Как проверить элемент массива на существование?

    JackWilliams
    @JackWilliams
    используйте array_key_exists и будет вам счастье:
    $json = '{"test1":"123","response":"ok","activationStatus":null}';
    
    $data = json_decode($json, true);
    
    var_dump($data);
    
    if (array_key_exists('activationStatus', $data)) {
      echo 'Работает!';
    }
    Ответ написан
  • Почему не срабатывает else?

    JackWilliams
    @JackWilliams
    Не используйте mysqli_query. Это может быть небезопасно. Есть риск SQL инъекций, в вашем коде они никак не предотвращаются. В бд обязательно храните хеш пароля, а не сам пароль. Почитайте про password_hash

    Используйте что-то в таком духе:
    $db = db_connect();
    $query = "SELECT attempts_number FROM registration_verification_codes WHERE phone = ? ORDER BY time DESC";
     $stmt = $db->prepare($query);
     $stmt->bind_param("i", $phone);
     $stmt->bind_result($attempts_number);
     if (!$stmt->execute())
     {
    
         throw new Exception('STMT ERROR: ' . $stmt->error, 3);
    
     }
     $stmt->fetch();
    
     if($attempts_number >=5 ){
    
       $answer["status"] = "OK";
       $answer["message"] = 'verification code attempts number has exceeded';
       $answer["verification_code_attempts_number_has_exceeded"] = true;
       $answer["verification_code_expired"] = true;
    
       http_response_code(200);
       echo json_encode($answer);
    
       exit;
    
     }
    
     $stmt->close();
    Ответ написан
  • Как избавиться от ошибки "POST net::ERR_CONNECTION_RESET"?

    JackWilliams
    @JackWilliams
    Установите следующие настройки OpenServer. Должно заработать.
    5de998cf07ae6206226388.jpeg

    Насколько я знаю, там по умолчанию Apache, с ним ZMQ не дружит по ряду причин, судя по вашему вопросу, перечислять их не имеет смысла.
    Ответ написан
    4 комментария