| Server IP : 23.111.136.34 / Your IP : 216.73.216.136 Web Server : Apache System : Linux servidor.eurohost.com.br 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : meusitei ( 1072) PHP Version : 5.6.40 Disable Function : show_source, system, shell_exec, passthru, proc_open MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/meusitei/public_html/painel/front/tema02/model/ |
Upload File : |
<?php
// Habilitar log de erros para depuração
//ini_set('display_errors', 0); // Não exibir erros na página
//ini_set('log_errors', 1); // Ativar log de erros
//ini_set('error_log', '/caminho/para/seu/php_error_log.txt'); // Definir o caminho para o arquivo de log
//error_reporting(E_ALL); // Relatar todos os erros
header('Content-Type: application/json'); // Garante que o cabeçalho seja sempre JSON
$responseArray = array('type' => 'danger', 'message' => 'Erro desconhecido.');
//$rodizio_file = __DIR__ . '/rodizio.txt';
//echo "Caminho do arquivo rodizio.txt: " . $rodizio_file; // Isso mostrará o caminho completo
// Verifica se o método de requisição é POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
try {
// Verifica se todos os campos obrigatórios foram preenchidos
if (empty($_POST['form_name']) || empty($_POST['form_email']) || empty($_POST['form_phone_cel']) || empty($_POST['form_message'])) {
throw new Exception('Por favor, preencha todos os campos obrigatórios.');
}
if (isset($_POST['g-recaptcha-response'])) {
if (empty($_POST['g-recaptcha-response'])) {
// Se o Google reCAPTCHA está ativo, mas não foi marcado
throw new Exception('Por favor, marque o RECAPTCHA.');
} else {
// Defina a chave secreta do Google reCAPTCHA
$imob_load = $banco_geral->query('SELECT * FROM configuracoes');
$config = $imob_load->fetchAll(PDO::FETCH_ASSOC);
foreach ($config as $conf) {}
$google = unserialize($conf['sis_script_ganalytics']);
$chave = $google['sis_script_ganalytics4'];
$recaptcha_secret = $chave; // Substitua pela sua chave secreta
$recaptcha_response = $_POST['g-recaptcha-response'];
// Fazer a requisição para o Google reCAPTCHA
$recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
$recaptcha_data = [
'secret' => $recaptcha_secret,
'response' => $recaptcha_response
];
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($recaptcha_data)
]
];
$context = stream_context_create($options);
$verify = file_get_contents($recaptcha_url, false, $context);
$captcha_success = json_decode($verify);
// Exibe uma mensagem específica caso o Google reCAPTCHA falhe na validação
if (!$captcha_success->success) {
throw new Exception('Erro de verificação do Google reCAPTCHA. Por favor, tente novamente.');
}
}
} // Verificação do CAPTCHA Padrão
else {
// Caso o Google reCAPTCHA não esteja ativo, valida o CAPTCHA padrão
if (empty($_POST['captcha_input']) || empty($_POST['captcha_hash']) || empty($_POST['validade_captcha']) || empty($_POST['timestamp'])) {
throw new Exception('Por favor, insira o código CAPTCHA.');
}
// Verificar se o tempo do CAPTCHA expirou (timestamp atual > validade)
$current_time = time();
if ($current_time > $_POST['validade_captcha']) {
throw new Exception('O código CAPTCHA expirou. Por favor, tente novamente.');
}
// Verificar o hash do CAPTCHA enviado
$secret_key = 'segredo_forte'; // Mesma chave secreta usada ao gerar o hash
$captcha_input = $_POST['captcha_input'];
$captcha_hash = $_POST['captcha_hash'];
// Gerar o hash esperado com base no CAPTCHA digitado pelo usuário
$expected_hash = hash('sha256', $captcha_input . $secret_key);
// Comparar os hashes
if ($expected_hash !== $captcha_hash) {
throw new Exception('O código CAPTCHA está incorreto.');
}
}
// Verificar a conexão com o banco de dados
if (!isset($banco_geral)) {
throw new Exception('Erro de conexão com o banco de dados.');
}
// Remover o traço dos números de telefone e celular
$form_phone = str_replace('-', '', $_POST['form_phone']);
$form_phone_cel = str_replace('-', '', $_POST['form_phone_cel']);
// Preparar a string que será inserida na coluna "comentario"
$comentario_completo = "CONTATO" . "\n\nMotivo: " . $_POST['form_motivo'] . "\nComentário: " . $_POST['form_message'];
// Obter corretores com permissões 0, 1, 2, 3
$query_corretor = $banco_geral->prepare('SELECT id_mestre FROM users WHERE user_permissions IN (0, 1, 2, 3)');
$query_corretor->execute();
$corretores = $query_corretor->fetchAll(PDO::FETCH_COLUMN);
// Verificar se há corretores disponíveis
if (count($corretores) > 0) {
// Pegar o corretor atual do rodízio
$rodizio_file = 'rodizio.txt'; // Arquivo para armazenar o último corretor que recebeu um lead
if (file_exists($rodizio_file)) {
$ultimo_corretor = file_get_contents($rodizio_file);
} else {
$ultimo_corretor = -1; // Se o arquivo não existir, começar o rodízio
}
// Determinar o próximo corretor no rodízio
$proximo_corretor_index = ($ultimo_corretor + 1) % count($corretores);
$corretor_selecionado = $corretores[$proximo_corretor_index];
// Atualizar o rodízio
file_put_contents($rodizio_file, $proximo_corretor_index);
} else {
// Se não houver corretores disponíveis, buscar o corretor com user_permissions = 0
$query_corretor_padrao = $banco_geral->prepare('SELECT id_mestre FROM users WHERE user_permissions = 0 LIMIT 1');
$query_corretor_padrao->execute();
$corretor_selecionado = $query_corretor_padrao->fetch(PDO::FETCH_COLUMN);
}
// Inserir os dados no banco de dados, incluindo os valores fixos para as novas colunas
$imob_load = $banco_geral->prepare('INSERT INTO proprietarios (perfil_interessado, definicao, nome, nascimento, civil, pais, email, fone, fonecel, comochegou, comentario, conj_nascimento, angariador, cadastradoem, responsavel, statusativo, datafaseatendimento)
VALUES (:perfil_interessado, :definicao, :nome, :nascimento, :civil, :pais, :email, :fone, :fonecel, :comochegou, :comentario, :conj_nascimento, :angariador, :cadastradoem, :responsavel, :statusativo, :datafaseatendimento)');
$imob_load->execute([
':perfil_interessado' => 1, // Valor fixo para perfil interessado
':definicao' => 'Pessoa Física', // Valor fixo para definição
':nome' => $_POST['form_name'], // Nome vindo do formulário
':nascimento' => date('Y-m-d'), // Data atual no formato Y-m-d
':civil' => 'Solteiro', // Valor fixo para estado civil
':pais' => 'Brasil', // Valor fixo para país
':email' => $_POST['form_email'], // Email vindo do formulário
':fone' => $form_phone, // Telefone sem traço
':fonecel' => $form_phone_cel, // Celular sem traço
':comochegou' => 'Formulário de contato', // Valor fixo para como chegou
':comentario' => $comentario_completo, // Envia o motivo + comentário concatenado
':conj_nascimento' => date('Y-m-d'), // Data atual no formato Y-m-d
':angariador' => $corretor_selecionado, // ID do corretor selecionado
':cadastradoem' => date('Y-m-d'), // Data atual no formato Y-m-d
':responsavel' => $corretor_selecionado, // ID do corretor selecionado
':statusativo' => 'Ativo', // Valor para o status
':datafaseatendimento' => date('Y-m-d') // Data atual no formato Y-m-d
]);
// Se a inserção foi bem-sucedida
$responseArray = array('type' => 'success', 'message' => 'Formulário enviado com sucesso.');
} catch (PDOException $e) {
// Captura erros específicos de PDO (Banco de dados)
error_log("Erro PDO: " . $e->getMessage()); // Log do erro para depuração
$responseArray = array('type' => 'danger', 'message' => 'Erro ao conectar ou inserir dados no banco.');
} catch (Exception $e) {
// Captura outros erros (campos não preenchidos, etc)
error_log("Erro geral: " . $e->getMessage()); // Log do erro para depuração
$responseArray = array('type' => 'danger', 'message' => $e->getMessage());
}
// Retorna a resposta em JSON
echo json_encode($responseArray);
exit;
} else {
// Se a requisição não for POST, apenas carregue a página normalmente, sem tentar processar o formulário
//echo json_encode(['type' => 'info', 'message' => 'Carregamento inicial sem envio de formulario.']);
}
?>