CVE-2026-45335
Description
WeGIA is a web manager for charitable institutions. Prior to 3.7.3, an Open Redirect vulnerability was identified in the /WeGIA/controle/control.php endpoint of the WeGIA application, specifically through the nextPage parameter when combined with metodo=listarTodos and nomeClasse=InternoControle. The application fails to validate or restrict the nextPage parameter, allowing attackers to redirect users to arbitrary external websites. This can be abused for phishing attacks, credential theft, malware distribution, and social engineering using the trusted WeGIA domain. This vulnerability is fixed in 3.7.3.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Open redirect vulnerability in WeGIA control.php via nextPage parameter allows phishing attacks; fixed in 3.7.3.
Vulnerability
An open redirect vulnerability exists in WeGIA versions prior to 3.7.3 in /WeGIA/controle/control.php when the metodo=listarTodos and nomeClasse=InternoControle parameters are supplied. The nextPage parameter is passed directly to a header('Location: ...') call in InternoControle.php without validation [1]. The middleware in MiddlewareDAO.php allows any authenticated user when the resource list is empty, as is the case for InternoControle [1].
Exploitation
An attacker can craft a URL such as /?metodo=listarTodos&nomeClasse=InternoControle&nextPage=https://evil.example.com and trick an authenticated user into clicking it. The user must be logged into WeGIA. No special privileges are required beyond having a valid session because the middleware grants access to all authenticated users for this class [1].
Impact
The attacker can redirect victims to an arbitrary external website, which can be used for phishing, credential theft, or malware distribution, leveraging the trust users have in the WeGIA domain [1].
Mitigation
The vulnerability is fixed in WeGIA version 3.7.3 [1]. Users should upgrade to this version or later. No workarounds are mentioned in the available references.
AI Insight generated on May 27, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected products
2- Range: <3.7.3
Patches
2ed34f005139dfix: Open Redirect Vulnerability [Security https://github.com/LabRedesCefetRJ/WeGIA/security/advisories/GHSA-x85f-76c9-qw3x]
2 files changed · +367 −391
controle/InternoControle.php+117 −106 modified@@ -1,100 +1,106 @@ <?php +if (session_status() === PHP_SESSION_NONE) { + session_start(); +} error_reporting(0); -ini_set('display_errors', 0 ); +ini_set('display_errors', 0); require_once '../classes/Interno.php'; +require_once dirname(__FILE__, 2) . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . 'Util.php'; require_once '../dao/InternoDAO.php'; require_once '../classes/Documento.php'; require_once '../dao/DocumentoDAO.php'; require_once 'DocumentoControle.php'; include_once '../classes/Cache.php'; -require_once ROOT."/controle/InternoControle.php"; -require_once ROOT."/controle/FuncionarioControle.php"; +require_once ROOT . "/controle/InternoControle.php"; +require_once ROOT . "/controle/FuncionarioControle.php"; $listaInternos = new InternoControle(); $listaInternos->listarTodos2(); -class InternoControle +class InternoControle { - public function formatoDataYMD($data) - { - $data_arr = explode("/", $data); - - $datac = $data_arr[2] . '-' . $data_arr[1] . '-' . $data_arr[0]; - - return $datac; - } - public function verificar(){ + //OpenRedirect nos métodos + public function formatoDataYMD($data) + { + $data_arr = explode("/", $data); + + $datac = $data_arr[2] . '-' . $data_arr[1] . '-' . $data_arr[0]; + + return $datac; + } + public function verificar() + { extract($_REQUEST); - session_start(); - if((!isset($nome)) || (empty($nome))){ + + if ((!isset($nome)) || (empty($nome))) { $msg = "Nome do interno não informado. Por favor, informe um nome!"; - header('Location: ../html/atendido/Cadastro_Atendido.php?msg='.$msg); + header('Location: ../html/atendido/Cadastro_Atendido.php?msg=' . $msg); } - if((!isset($sobrenome)) || (empty($sobrenome))){ + if ((!isset($sobrenome)) || (empty($sobrenome))) { $msg = "Sobrenome do interno não informado. Por favor, informe um sobrenome!"; - header('Location: ../html/atendido/Cadastro_Atendido.php?msg='.$msg); + header('Location: ../html/atendido/Cadastro_Atendido.php?msg=' . $msg); } - if((!isset($sexo)) || (empty($sexo))){ + if ((!isset($sexo)) || (empty($sexo))) { $msg .= "Sexo do interno não informado. Por favor, informe um sexo!"; - header('Location: ../html/atendido/Cadastro_Atendido.php?msg='.$msg); + header('Location: ../html/atendido/Cadastro_Atendido.php?msg=' . $msg); } - if((!isset($nascimento)) || (empty($nascimento))){ + if ((!isset($nascimento)) || (empty($nascimento))) { $msg .= "Data de nascimento do interno não informado. Por favor, informe uma data de nascimento!"; - header('Location: ../html/atendido/Cadastro_Atendido.php?msg='.$msg); + header('Location: ../html/atendido/Cadastro_Atendido.php?msg=' . $msg); } - if(isset($naoPossuiCpf)) - { + if (isset($naoPossuiCpf)) { $internos = $_SESSION['internos2']; - $j=0; - for($i=0; $i<count($internos); $i++) - { - if($nome==$internos[$i]['nome']) - { + $j = 0; + for ($i = 0; $i < count($internos); $i++) { + if ($nome == $internos[$i]['nome']) { $j++; } } - if($j==0) - { - $numeroCPF = $nome."ni"; - } - else - { - $numeroCPF = $nome.$j."ni"; + if ($j == 0) { + $numeroCPF = $nome . "ni"; + } else { + $numeroCPF = $nome . $j . "ni"; } - } - elseif((!isset($numeroCPF)) || (empty($numeroCPF))){ + } elseif ((!isset($numeroCPF)) || (empty($numeroCPF))) { $msg .= "CPF do interno não informado. Por favor, informe um CPF!"; - header('Location: ../html/atendido/Cadastro_atendido.php?msg='.$msg); + header('Location: ../html/atendido/Cadastro_atendido.php?msg=' . $msg); } - $telefone=''; - $senha='null'; - $numeroCPF=str_replace(".", '', $numeroCPF); - $numeroCPF=str_replace("-", "", $numeroCPF); - $interno = new Interno($numeroCPF,$nome,$sobrenome,$sexo,$nascimento,'','','','','','','',$telefone,'','','','','','','','',''); - - return $interno; + $telefone = ''; + $senha = 'null'; + $numeroCPF = str_replace(".", '', $numeroCPF); + $numeroCPF = str_replace("-", "", $numeroCPF); + $interno = new Interno($numeroCPF, $nome, $sobrenome, $sexo, $nascimento, '', '', '', '', '', '', '', $telefone, '', '', '', '', '', '', '', '', ''); + + return $interno; + } + + public function listarTodos($redirect = true) + { + try { + $internoDAO = new InternoDAO(); + $internos = $internoDAO->listarTodos(); + + $_SESSION['internos'] = $internos; + if ($redirect) { + header('Location: ' . '../html/informacao_interno.php'); + } + } catch (Exception $e) { + Util::tratarException($e); } - - public function listarTodos(){ - extract($_REQUEST); - $internoDAO= new InternoDAO(); - $internos = $internoDAO->listarTodos(); - session_start(); - $_SESSION['internos']=$internos; - header('Location: '.$nextPage); } - public function listarTodos2(){ - extract($_REQUEST); - $internoDAO= new InternoDAO(); - $internos = $internoDAO->listarTodos2(); - if (session_status() !== PHP_SESSION_ACTIVE) - { - session_start(); + public function listarTodos2() + { + try { + $internoDAO = new InternoDAO(); + $internos = $internoDAO->listarTodos2(); + + $_SESSION['internos2'] = $internos; + } catch (Exception $e) { + Util::tratarException($e); } - $_SESSION['internos2']=$internos; } public function listarUm() @@ -104,73 +110,78 @@ public function listarUm() $infInterno = $cache->read($id); if (!$infInterno) { try { - $internoDAO=new InternoDAO(); - $infInterno=$internoDAO->listar($id); - session_start(); - $_SESSION['interno']=$infInterno; + $internoDAO = new InternoDAO(); + $infInterno = $internoDAO->listar($id); + + $_SESSION['interno'] = $infInterno; $cache->save($id, $infInterno, '15 seconds'); - header('Location:'.$nextPage); - } catch (PDOException $e) { - echo $e->getMessage(); + header('Location:' . '../html/informacao_interno.php'); + } catch (Exception $e) { + Util::tratarException($e); } + } else { + header('Location:' . '../html/informacao_interno.php'); } - else{ - header('Location:'.$nextPage); - } - } - public function listarCpf(){ - extract($_REQUEST); - $internosDAO = new InternoDAO(); - $internoscpf = $internosDAO->listarCPF(); - $_SESSION['cpf_interno']=$internoscpf; + public function listarCpf() + { + try { + $internosDAO = new InternoDAO(); + $internoscpf = $internosDAO->listarCPF(); + $_SESSION['cpf_interno'] = $internoscpf; + } catch (Exception $e) { + Util::tratarException($e); + } } - public function comprimir($documParaCompressao){ - $documento_zip = gzcompress($documParaCompressao); - return $documento_zip; + public function comprimir($documParaCompressao) + { + $documento_zip = gzcompress($documParaCompressao); + return $documento_zip; } - - public function incluir(){ - $interno = $this->verificar(); - $intDAO = new AtendidoDAO(); - $docDAO = new DocumentoDAO(); - try{ - $idPessoa=$intDAO->incluir($interno, $interno->getCpf()); - $_SESSION['msg']="Interno cadastrado com sucesso"; - $_SESSION['proxima']="Cadastrar outro interno"; - $_SESSION['link']="../html/atendido/Cadastro_Atendido.php"; + + public function incluir() + { + try { + $interno = $this->verificar(); + $intDAO = new AtendidoDAO(); + $docDAO = new DocumentoDAO(); + $idPessoa = $intDAO->incluir($interno, $interno->getCpf()); + $_SESSION['msg'] = "Interno cadastrado com sucesso"; + $_SESSION['proxima'] = "Cadastrar outro interno"; + $_SESSION['link'] = "../html/atendido/Cadastro_Atendido.php"; header("Location: ../html/sucesso.php"); - } catch (PDOException $e){ - $msg= "Não foi possível registrar o interno <form> <input type='button' value='Voltar' onClick='history.go(-1)'> </form>"."<br>".$e->getMessage(); - echo $msg; + } catch (Exception $e) { + Util::tratarException($e); } } public function alterar() { - extract($_REQUEST); - $interno=$this->verificar(); - $interno->setIdInterno($idInterno); - $AtendidoDAO=new AtendidoDAO(); try { + extract($_REQUEST); + $interno = $this->verificar(); + $interno->setIdInterno($idInterno); + $AtendidoDAO = new AtendidoDAO(); + $AtendidoDAO->alterar($interno); - header("Location: ../html/Profile_Atendido.php?id=".$idInterno); - } catch (PDOException $e) { - echo $e->getMessage(); + header("Location: ../html/Profile_Atendido.php?id=" . $idInterno); + } catch (Exception $e) { + Util::tratarException($e); } - } public function excluir() { - extract($_REQUEST); - $AtendidoDAO=new AtendidoDAO(); try { + extract($_REQUEST); + $AtendidoDAO = new AtendidoDAO(); + $AtendidoDAO->excluir($id); - header("Location:../controle/control.php?metodo=listarTodos&nomeClasse=InternoControle&nextPage=../html/Informacao_Atendido.php"); + $this->listarTodos(false); + header("Location: ../html/Informacao_Atendido.php"); } catch (Exception $e) { - echo $e->getMessage(); + Util::tratarException($e); } } }
dao/InternoDAO.php+250 −285 modified@@ -8,329 +8,294 @@ class InternoDAO public function formatoDataDMY($data) { $data_arr = explode("-", $data); - + $datad = $data_arr[2] . '/' . $data_arr[1] . '/' . $data_arr[0]; - + return $datad; } - public function incluir($interno) - { - try { - $sql = 'call cadinterno(:nome,:sobrenome,:cpf,:senha,:sexo,:telefone,:data_nascimento,:imagem,:cep,:estado,:cidade,:bairro,:logradouro,:numero_endereco,:complemento,:ibge,:registro_geral,:orgao_emissor,:data_expedicao,:nome_pai,:nome_mae,:tipo_sanguineo,:nome_contato_urgente,:telefone_contato_urgente_1,:telefone_contato_urgente_2,:telefone_contato_urgente_3,:observacao,:certidao,:curatela,:inss,:loas,:bpc,:funrural,:saf,:sus,:certidao_casamento,:ctps,:titulo)'; - $sql = str_replace("'", "\'", $sql); - $pdo = Conexao::connect(); - $stmt = $pdo->prepare($sql); - $senha=$interno->getSenha(); - $nome=$interno->getNome(); - $sobrenome=$interno->getSobrenome(); - $cpf=$interno->getCpf(); - $sexo=$interno->getSexo(); - $telefone=$interno->getTelefone(); - $nascimento=$interno->getDataNascimento(); - $imagem=$interno->getImagem(); - $cep=$interno->getCep(); - $cidade=$interno->getCidade(); - $bairro=$interno->getBairro(); - $logradouro=$interno->getLogradouro(); - $numeroEndereco=$interno->getNumeroEndereco(); - $complemento=$interno->getComplemento(); - $rg=$interno->getRegistroGeral(); - $orgaoEmissor=$interno->getOrgaoEmissor(); - $nomePai=$interno->getNomePai(); - $nomeMae=$interno->getNomeMae(); - $sangue=$interno->getTipoSanguineo(); - $nomeContatoUrgente=$interno->getNomeContatoUrgente(); - $telefone1=$interno->getTelefoneContatoUrgente1(); - $telefone2=$interno->getTelefoneContatoUrgente2(); - $telefone3=$interno->getTelefoneContatoUrgente3(); - $observacao=$interno->getObservacao(); - $ibge=$interno->getIbge(); - $dataExpedicao=$interno->getDataExpedicao(); - $certidao=$interno->getCertidaoNascimento(); - $curatela=$interno->getCuratela(); - $inss=$interno->getInss(); - $loas=$interno->getLoas(); - $bpc=$interno->getBpc(); - $funrural=$interno->getFunrural(); - $saf=$interno->getSaf(); - $sus=$interno->getSus(); - $certidaoCasamento=$interno->getCertidaoCasamento(); - $ctps=$interno->getCtps(); - $titulo=$interno->getTitulo(); - $estado=$interno->getEstado(); - - $stmt->bindParam(':senha',$senha); - $stmt->bindParam(':nome',$nome); - $stmt->bindParam(':sobrenome',$sobrenome); - $stmt->bindParam(':cpf',$cpf); - $stmt->bindParam(':sexo',$sexo); - $stmt->bindParam(':telefone',$telefone); - $stmt->bindParam(':data_nascimento',$nascimento); - $stmt->bindParam(':imagem',$imagem); - $stmt->bindParam(':cep',$cep); - $stmt->bindParam(':estado',$estado); - $stmt->bindParam(':cidade',$cidade); - $stmt->bindParam(':bairro',$bairro); - $stmt->bindParam(':logradouro',$logradouro); - $stmt->bindParam(':numero_endereco',$numeroEndereco); - $stmt->bindParam(':complemento',$complemento); - $stmt->bindParam(':registro_geral',$rg); - $stmt->bindParam(':orgao_emissor',$orgaoEmissor); - $stmt->bindParam(':data_expedicao',$dataExpedicao); - $stmt->bindParam(':nome_pai',$nomePai); - $stmt->bindParam(':nome_mae',$nomeMae); - $stmt->bindParam(':tipo_sanguineo',$sangue); - $stmt->bindParam(':nome_contato_urgente',$nomeContatoUrgente); - $stmt->bindParam(':telefone_contato_urgente_1',$telefone1); - $stmt->bindParam(':telefone_contato_urgente_2',$telefone2); - $stmt->bindParam(':telefone_contato_urgente_3',$telefone3); - $stmt->bindParam(':observacao',$observacao); - $stmt->bindParam(':ibge',$ibge); - $stmt->bindParam(':certidao',$certidao); - $stmt->bindParam(':curatela',$curatela); - $stmt->bindParam(':inss',$inss); - $stmt->bindParam(':loas',$loas); - $stmt->bindParam(':bpc',$bpc); - $stmt->bindParam(':funrural',$funrural); - $stmt->bindParam(':saf',$saf); - $stmt->bindParam(':sus',$sus); - $stmt->bindParam(':certidao_casamento',$certidaoCasamento); - $stmt->bindParam(':ctps',$ctps); - $stmt->bindParam(':titulo',$titulo); - $stmt->execute(); - while($linha = $stmt->fetch(PDO::FETCH_ASSOC)){ - $idPessoa=$linha['MAX(id_pessoa)']; - } - return $idPessoa; + public function incluir($interno) + { + $sql = 'call cadinterno(:nome,:sobrenome,:cpf,:senha,:sexo,:telefone,:data_nascimento,:imagem,:cep,:estado,:cidade,:bairro,:logradouro,:numero_endereco,:complemento,:ibge,:registro_geral,:orgao_emissor,:data_expedicao,:nome_pai,:nome_mae,:tipo_sanguineo,:nome_contato_urgente,:telefone_contato_urgente_1,:telefone_contato_urgente_2,:telefone_contato_urgente_3,:observacao,:certidao,:curatela,:inss,:loas,:bpc,:funrural,:saf,:sus,:certidao_casamento,:ctps,:titulo)'; + $sql = str_replace("'", "\'", $sql); + $pdo = Conexao::connect(); + $stmt = $pdo->prepare($sql); + $senha = $interno->getSenha(); + $nome = $interno->getNome(); + $sobrenome = $interno->getSobrenome(); + $cpf = $interno->getCpf(); + $sexo = $interno->getSexo(); + $telefone = $interno->getTelefone(); + $nascimento = $interno->getDataNascimento(); + $imagem = $interno->getImagem(); + $cep = $interno->getCep(); + $cidade = $interno->getCidade(); + $bairro = $interno->getBairro(); + $logradouro = $interno->getLogradouro(); + $numeroEndereco = $interno->getNumeroEndereco(); + $complemento = $interno->getComplemento(); + $rg = $interno->getRegistroGeral(); + $orgaoEmissor = $interno->getOrgaoEmissor(); + $nomePai = $interno->getNomePai(); + $nomeMae = $interno->getNomeMae(); + $sangue = $interno->getTipoSanguineo(); + $nomeContatoUrgente = $interno->getNomeContatoUrgente(); + $telefone1 = $interno->getTelefoneContatoUrgente1(); + $telefone2 = $interno->getTelefoneContatoUrgente2(); + $telefone3 = $interno->getTelefoneContatoUrgente3(); + $observacao = $interno->getObservacao(); + $ibge = $interno->getIbge(); + $dataExpedicao = $interno->getDataExpedicao(); + $certidao = $interno->getCertidaoNascimento(); + $curatela = $interno->getCuratela(); + $inss = $interno->getInss(); + $loas = $interno->getLoas(); + $bpc = $interno->getBpc(); + $funrural = $interno->getFunrural(); + $saf = $interno->getSaf(); + $sus = $interno->getSus(); + $certidaoCasamento = $interno->getCertidaoCasamento(); + $ctps = $interno->getCtps(); + $titulo = $interno->getTitulo(); + $estado = $interno->getEstado(); - }catch (PDOException $e) { - echo 'Error: <b> na tabela interno = ' . $sql . '</b> <br /><br />' . $e->getMessage(); + $stmt->bindParam(':senha', $senha); + $stmt->bindParam(':nome', $nome); + $stmt->bindParam(':sobrenome', $sobrenome); + $stmt->bindParam(':cpf', $cpf); + $stmt->bindParam(':sexo', $sexo); + $stmt->bindParam(':telefone', $telefone); + $stmt->bindParam(':data_nascimento', $nascimento); + $stmt->bindParam(':imagem', $imagem); + $stmt->bindParam(':cep', $cep); + $stmt->bindParam(':estado', $estado); + $stmt->bindParam(':cidade', $cidade); + $stmt->bindParam(':bairro', $bairro); + $stmt->bindParam(':logradouro', $logradouro); + $stmt->bindParam(':numero_endereco', $numeroEndereco); + $stmt->bindParam(':complemento', $complemento); + $stmt->bindParam(':registro_geral', $rg); + $stmt->bindParam(':orgao_emissor', $orgaoEmissor); + $stmt->bindParam(':data_expedicao', $dataExpedicao); + $stmt->bindParam(':nome_pai', $nomePai); + $stmt->bindParam(':nome_mae', $nomeMae); + $stmt->bindParam(':tipo_sanguineo', $sangue); + $stmt->bindParam(':nome_contato_urgente', $nomeContatoUrgente); + $stmt->bindParam(':telefone_contato_urgente_1', $telefone1); + $stmt->bindParam(':telefone_contato_urgente_2', $telefone2); + $stmt->bindParam(':telefone_contato_urgente_3', $telefone3); + $stmt->bindParam(':observacao', $observacao); + $stmt->bindParam(':ibge', $ibge); + $stmt->bindParam(':certidao', $certidao); + $stmt->bindParam(':curatela', $curatela); + $stmt->bindParam(':inss', $inss); + $stmt->bindParam(':loas', $loas); + $stmt->bindParam(':bpc', $bpc); + $stmt->bindParam(':funrural', $funrural); + $stmt->bindParam(':saf', $saf); + $stmt->bindParam(':sus', $sus); + $stmt->bindParam(':certidao_casamento', $certidaoCasamento); + $stmt->bindParam(':ctps', $ctps); + $stmt->bindParam(':titulo', $titulo); + $stmt->execute(); + while ($linha = $stmt->fetch(PDO::FETCH_ASSOC)) { + $idPessoa = $linha['MAX(id_pessoa)']; } + return $idPessoa; } // excluir public function excluir($idinterno) { - try { - $sql = 'call excluirinterno(:idi)'; - $sql = str_replace("'", "\'", $sql); - $pdo = Conexao::connect(); - $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - - $stmt = $pdo->prepare($sql); - - $stmt->bindParam(':idi', $idinterno); - - $stmt->execute(); - } catch (PDOException $e) { - echo 'Error: <b> na tabela pessoas = ' . $sql . '</b> <br /><br />' . $e->getMessage(); - } + $sql = 'call excluirinterno(:idi)'; + $sql = str_replace("'", "\'", $sql); + $pdo = Conexao::connect(); + $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + $stmt = $pdo->prepare($sql); + + $stmt->bindParam(':idi', $idinterno); + + $stmt->execute(); } public function alterarImagem($interno) { - try { - $sql = 'update pessoa as p inner join interno as i on p.id_pessoa=i.id_pessoa set imagem=:imagem where id_interno=:id_interno'; - - $sql = str_replace("'", "\'", $sql); - $pdo = Conexao::connect(); - $stmt = $pdo->prepare($sql); - - $stmt = $pdo->prepare($sql); - $imagem=$interno->getImagem(); - $id_interno=$interno->getIdInterno(); + $sql = 'update pessoa as p inner join interno as i on p.id_pessoa=i.id_pessoa set imagem=:imagem where id_interno=:id_interno'; - $stmt->bindParam(':imagem',$imagem); - $stmt->bindParam(':id_interno',$id_interno); - $stmt->execute(); - } catch (PDOException $e) { - echo 'Error: <b> na tabela pessoas = ' . $sql . '</b> <br /><br />' . $e->getMessage(); - } + $sql = str_replace("'", "\'", $sql); + $pdo = Conexao::connect(); + $stmt = $pdo->prepare($sql); + + $stmt = $pdo->prepare($sql); + $imagem = $interno->getImagem(); + $id_interno = $interno->getIdInterno(); + + $stmt->bindParam(':imagem', $imagem); + $stmt->bindParam(':id_interno', $id_interno); + $stmt->execute(); } // Editar public function alterar($interno) { - try { - $sql = 'update pessoa as p inner join interno as i on p.id_pessoa=i.id_pessoa set p.senha=:senha,p.nome=:nome, p.sobrenome=:sobrenome,p.cpf=:cpf,p.sexo=:sexo,p.telefone=:telefone,p.data_nascimento=:data_nascimento,p.imagem=:imagem,p.cep=:cep,p.estado=:estado,p.cidade=:cidade,p.bairro=:bairro,p.logradouro=:logradouro,p.numero_endereco=:numero_endereco,p.complemento=:complemento,p.ibge=:ibge,p.registro_geral=:registro_geral,p.orgao_emissor=:orgao_emissor,p.data_expedicao=:data_expedicao,p.nome_pai=:nome_pai,p.nome_mae=:nome_mae,p.tipo_sanguineo=:tipo_sanguineo,i.nome_contato_urgente=:nome_contato_urgente,i.telefone_contato_urgente_1=:telefone_contato_urgente_1,i.telefone_contato_urgente_2=:telefone_contato_urgente_2,i.telefone_contato_urgente_3=:telefone_contato_urgente_3,i.observacao=:observacao,i.certidao_nascimento=:certidao,i.curatela=:curatela,i.inss=:inss,i.loas=:loas,i.bpc=:bpc,i.funrural=:funrural,i.saf=:saf,i.sus=:sus,i.certidao_casamento=:certidao_casamento,i.ctps=:ctps,i.titulo=:titulo where i.id_interno=:id_interno'; - - $sql = str_replace("'", "\'", $sql); - $pdo = Conexao::connect(); - $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - - $stmt = $pdo->prepare($sql); - $certidao_casamento=$interno->getCertidaoCasamento(); - $ctps=$interno->getCtps(); - $titulo=$interno->getTitulo(); - $nome=$interno->getNome(); - $sobrenome=$interno->getsobrenome(); - $cpf=$interno->getCpf(); - $sexo=$interno->getSexo(); - $telefone=$interno->getTelefone(); - $nascimento=$interno->getDataNascimento(); - $imagem=$interno->getImagem(); - $cep=$interno->getCep(); - $cidade=$interno->getCidade(); - $bairro=$interno->getBairro(); - $logradouro=$interno->getLogradouro(); - $numeroEndereco=$interno->getNumeroEndereco(); - $complemento=$interno->getComplemento(); - $rg=$interno->getRegistroGeral(); - $orgaoEmissor=$interno->getOrgaoEmissor(); - $nomePai=$interno->getNomePai(); - $nomeMae=$interno->getNomeMae(); - $sangue=$interno->getTipoSanguineo(); - $nomeContatoUrgente=$interno->getNomeContatoUrgente(); - $telefone1=$interno->getTelefoneContatoUrgente1(); - $telefone2=$interno->getTelefoneContatoUrgente2(); - $telefone3=$interno->getTelefoneContatoUrgente3(); - $ibge=$interno->getIbge(); - $dataExpedicao=$interno->getDataExpedicao(); - $certidao=$interno->getCertidaoNascimento(); - $curatela=$interno->getCuratela(); - $inss=$interno->getInss(); - $loas=$interno->getLoas(); - $bpc=$interno->getBpc(); - $funrural=$interno->getFunrural(); - $saf=$interno->getSaf(); - $sus=$interno->getSus(); - $idInterno=$interno->getIdInterno(); - $estado=$interno->getEstado(); - $observacao=$interno->getObservacao(); - - $stmt->bindParam(':id_interno',$idInterno); - $stmt->bindParam(':senha',$senha); - $stmt->bindParam(':nome',$nome); - $stmt->bindParam(':sobrenome',$sobrenome); - $stmt->bindParam(':cpf',$cpf); - $stmt->bindParam(':sexo',$sexo); - $stmt->bindParam(':telefone',$telefone); - $stmt->bindParam(':data_nascimento',$nascimento); - $stmt->bindParam(':imagem',$imagem); - $stmt->bindParam(':cep',$cep); - $stmt->bindParam(':estado',$estado); - $stmt->bindParam(':cidade',$cidade); - $stmt->bindParam(':bairro',$bairro); - $stmt->bindParam(':logradouro',$logradouro); - $stmt->bindParam(':numero_endereco',$numeroEndereco); - $stmt->bindParam(':complemento',$complemento); - $stmt->bindParam(':registro_geral',$rg); - $stmt->bindParam(':orgao_emissor',$orgaoEmissor); - $stmt->bindParam(':data_expedicao',$dataExpedicao); - $stmt->bindParam(':nome_pai',$nomePai); - $stmt->bindParam(':nome_mae',$nomeMae); - $stmt->bindParam(':tipo_sanguineo',$sangue); - $stmt->bindParam(':nome_contato_urgente',$nomeContatoUrgente); - $stmt->bindParam(':telefone_contato_urgente_1',$telefone1); - $stmt->bindParam(':telefone_contato_urgente_2',$telefone2); - $stmt->bindParam(':telefone_contato_urgente_3',$telefone3); - $stmt->bindParam(':observacao',$observacao); - $stmt->bindParam(':ibge',$ibge); - $stmt->bindParam(':certidao',$certidao); - $stmt->bindParam(':curatela',$curatela); - $stmt->bindParam(':inss',$inss); - $stmt->bindParam(':loas',$loas); - $stmt->bindParam(':bpc',$bpc); - $stmt->bindParam(':funrural',$funrural); - $stmt->bindParam(':saf',$saf); - $stmt->bindParam(':sus',$sus); - $stmt->bindParam(':certidao_casamento',$certidao_casamento); - $stmt->bindParam(':ctps',$ctps); - $stmt->bindParam(':titulo',$titulo); - $stmt->execute(); - } catch (PDOException $e) { - echo 'Error: <b> na tabela pessoas = ' . $sql . '</b> <br /><br />' . $e->getMessage(); - } - } - public function listarTodos(){ + $sql = 'update pessoa as p inner join interno as i on p.id_pessoa=i.id_pessoa set p.senha=:senha,p.nome=:nome, p.sobrenome=:sobrenome,p.cpf=:cpf,p.sexo=:sexo,p.telefone=:telefone,p.data_nascimento=:data_nascimento,p.imagem=:imagem,p.cep=:cep,p.estado=:estado,p.cidade=:cidade,p.bairro=:bairro,p.logradouro=:logradouro,p.numero_endereco=:numero_endereco,p.complemento=:complemento,p.ibge=:ibge,p.registro_geral=:registro_geral,p.orgao_emissor=:orgao_emissor,p.data_expedicao=:data_expedicao,p.nome_pai=:nome_pai,p.nome_mae=:nome_mae,p.tipo_sanguineo=:tipo_sanguineo,i.nome_contato_urgente=:nome_contato_urgente,i.telefone_contato_urgente_1=:telefone_contato_urgente_1,i.telefone_contato_urgente_2=:telefone_contato_urgente_2,i.telefone_contato_urgente_3=:telefone_contato_urgente_3,i.observacao=:observacao,i.certidao_nascimento=:certidao,i.curatela=:curatela,i.inss=:inss,i.loas=:loas,i.bpc=:bpc,i.funrural=:funrural,i.saf=:saf,i.sus=:sus,i.certidao_casamento=:certidao_casamento,i.ctps=:ctps,i.titulo=:titulo where i.id_interno=:id_interno'; - try{ - $internos=array(); - $pdo = Conexao::connect(); - $consulta = $pdo->query("SELECT p.nome,p.sobrenome,p.cpf,i.id_interno FROM pessoa p INNER JOIN interno i ON p.id_pessoa = i.id_pessoa"); - $produtos = Array(); - $x=0; - while($linha = $consulta->fetch(PDO::FETCH_ASSOC)){ - if ($linha['cpf']==="Não informado") { - $internos[$x]=array('cpf'=>$linha['cpf'],'nome'=>$linha['nome'],'sobrenome'=>$linha['sobrenome'],'id'=>$linha['id_interno']); - } - else{ - $internos[$x]=array('cpf'=>mask($linha['cpf'],'###.###.###-##'),'nome'=>$linha['nome'],'sobrenome'=>$linha['sobrenome'],'id'=>$linha['id_interno']); - } - $x++; - } - } catch (PDOException $e){ - echo 'Error:' . $e->getMessage(); + $sql = str_replace("'", "\'", $sql); + $pdo = Conexao::connect(); + $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + $stmt = $pdo->prepare($sql); + $certidao_casamento = $interno->getCertidaoCasamento(); + $ctps = $interno->getCtps(); + $titulo = $interno->getTitulo(); + $nome = $interno->getNome(); + $sobrenome = $interno->getsobrenome(); + $cpf = $interno->getCpf(); + $sexo = $interno->getSexo(); + $telefone = $interno->getTelefone(); + $nascimento = $interno->getDataNascimento(); + $imagem = $interno->getImagem(); + $cep = $interno->getCep(); + $cidade = $interno->getCidade(); + $bairro = $interno->getBairro(); + $logradouro = $interno->getLogradouro(); + $numeroEndereco = $interno->getNumeroEndereco(); + $complemento = $interno->getComplemento(); + $rg = $interno->getRegistroGeral(); + $orgaoEmissor = $interno->getOrgaoEmissor(); + $nomePai = $interno->getNomePai(); + $nomeMae = $interno->getNomeMae(); + $sangue = $interno->getTipoSanguineo(); + $nomeContatoUrgente = $interno->getNomeContatoUrgente(); + $telefone1 = $interno->getTelefoneContatoUrgente1(); + $telefone2 = $interno->getTelefoneContatoUrgente2(); + $telefone3 = $interno->getTelefoneContatoUrgente3(); + $ibge = $interno->getIbge(); + $dataExpedicao = $interno->getDataExpedicao(); + $certidao = $interno->getCertidaoNascimento(); + $curatela = $interno->getCuratela(); + $inss = $interno->getInss(); + $loas = $interno->getLoas(); + $bpc = $interno->getBpc(); + $funrural = $interno->getFunrural(); + $saf = $interno->getSaf(); + $sus = $interno->getSus(); + $idInterno = $interno->getIdInterno(); + $estado = $interno->getEstado(); + $observacao = $interno->getObservacao(); + + $stmt->bindParam(':id_interno', $idInterno); + $stmt->bindParam(':senha', $senha); + $stmt->bindParam(':nome', $nome); + $stmt->bindParam(':sobrenome', $sobrenome); + $stmt->bindParam(':cpf', $cpf); + $stmt->bindParam(':sexo', $sexo); + $stmt->bindParam(':telefone', $telefone); + $stmt->bindParam(':data_nascimento', $nascimento); + $stmt->bindParam(':imagem', $imagem); + $stmt->bindParam(':cep', $cep); + $stmt->bindParam(':estado', $estado); + $stmt->bindParam(':cidade', $cidade); + $stmt->bindParam(':bairro', $bairro); + $stmt->bindParam(':logradouro', $logradouro); + $stmt->bindParam(':numero_endereco', $numeroEndereco); + $stmt->bindParam(':complemento', $complemento); + $stmt->bindParam(':registro_geral', $rg); + $stmt->bindParam(':orgao_emissor', $orgaoEmissor); + $stmt->bindParam(':data_expedicao', $dataExpedicao); + $stmt->bindParam(':nome_pai', $nomePai); + $stmt->bindParam(':nome_mae', $nomeMae); + $stmt->bindParam(':tipo_sanguineo', $sangue); + $stmt->bindParam(':nome_contato_urgente', $nomeContatoUrgente); + $stmt->bindParam(':telefone_contato_urgente_1', $telefone1); + $stmt->bindParam(':telefone_contato_urgente_2', $telefone2); + $stmt->bindParam(':telefone_contato_urgente_3', $telefone3); + $stmt->bindParam(':observacao', $observacao); + $stmt->bindParam(':ibge', $ibge); + $stmt->bindParam(':certidao', $certidao); + $stmt->bindParam(':curatela', $curatela); + $stmt->bindParam(':inss', $inss); + $stmt->bindParam(':loas', $loas); + $stmt->bindParam(':bpc', $bpc); + $stmt->bindParam(':funrural', $funrural); + $stmt->bindParam(':saf', $saf); + $stmt->bindParam(':sus', $sus); + $stmt->bindParam(':certidao_casamento', $certidao_casamento); + $stmt->bindParam(':ctps', $ctps); + $stmt->bindParam(':titulo', $titulo); + $stmt->execute(); + } + public function listarTodos() + { + $internos = array(); + $pdo = Conexao::connect(); + $consulta = $pdo->query("SELECT p.nome,p.sobrenome,p.cpf,i.id_interno FROM pessoa p INNER JOIN interno i ON p.id_pessoa = i.id_pessoa"); + $produtos = array(); + $x = 0; + while ($linha = $consulta->fetch(PDO::FETCH_ASSOC)) { + if ($linha['cpf'] === "Não informado") { + $internos[$x] = array('cpf' => $linha['cpf'], 'nome' => $linha['nome'], 'sobrenome' => $linha['sobrenome'], 'id' => $linha['id_interno']); + } else { + $internos[$x] = array('cpf' => mask($linha['cpf'], '###.###.###-##'), 'nome' => $linha['nome'], 'sobrenome' => $linha['sobrenome'], 'id' => $linha['id_interno']); } - return json_encode($internos); + $x++; } + return json_encode($internos); + } - public function listarTodos2(){ - try{ - $internos=array(); - $pdo = Conexao::connect(); - $consulta = $pdo->query("SELECT p.nome,p.sobrenome,p.cpf,i.id_interno FROM pessoa p INNER JOIN interno i ON p.id_pessoa = i.id_pessoa"); - $produtos = Array(); - $x=0; - while($linha = $consulta->fetch(PDO::FETCH_ASSOC)){ - if ($linha['cpf']==="Não informado") { - $internos[$x]=array('cpf'=>$linha['cpf'],'nome'=>$linha['nome'],'sobrenome'=>$linha['sobrenome'],'id'=>$linha['id_interno']); - } - else{ - $internos[$x]=array('cpf'=>mask($linha['cpf'],'###.###.###-##'),'nome'=>$linha['nome'],'sobrenome'=>$linha['sobrenome'],'id'=>$linha['id_interno']); - } - $x++; - } - } catch (PDOException $e){ - echo 'Error:' . $e->getMessage(); + public function listarTodos2() + { + $internos = array(); + $pdo = Conexao::connect(); + $consulta = $pdo->query("SELECT p.nome,p.sobrenome,p.cpf,i.id_interno FROM pessoa p INNER JOIN interno i ON p.id_pessoa = i.id_pessoa"); + $produtos = array(); + $x = 0; + while ($linha = $consulta->fetch(PDO::FETCH_ASSOC)) { + if ($linha['cpf'] === "Não informado") { + $internos[$x] = array('cpf' => $linha['cpf'], 'nome' => $linha['nome'], 'sobrenome' => $linha['sobrenome'], 'id' => $linha['id_interno']); + } else { + $internos[$x] = array('cpf' => mask($linha['cpf'], '###.###.###-##'), 'nome' => $linha['nome'], 'sobrenome' => $linha['sobrenome'], 'id' => $linha['id_interno']); } - return $internos; + $x++; } - public function listar($id){ - try{ - echo $id; - $pdo = Conexao::connect(); - $sql = "SELECT p.imagem,p.nome,p.sobrenome,p.cpf, p.senha, p.sexo, p.telefone,p.data_nascimento, p.cep,p.cidade,p.bairro,p.logradouro,p.numero_endereco,p.complemento,p.ibge,p.registro_geral,p.orgao_emissor,p.data_expedicao,p.nome_pai,p.nome_mae,p.tipo_sanguineo,i.nome_contato_urgente,i.telefone_contato_urgente_1,i.telefone_contato_urgente_2,i.telefone_contato_urgente_3,i.observacao,i.certidao_nascimento,i.curatela,i.inss,i.loas,i.bpc,i.funrural,i.saf,i.sus,i.id_interno,i.certidao_casamento,i.ctps,i.titulo,d.imgdoc,d.descricao,d.id_documento FROM pessoa p LEFT JOIN interno i ON p.id_pessoa = i.id_pessoa left join documento d on p.id_pessoa=d.id_pessoa WHERE i.id_interno=:id"; - $stmt = $pdo->prepare($sql); - $stmt->bindParam(':id',$id); + return $internos; + } - $stmt->execute(); - $interno=array(); - while ($linha = $stmt->fetch(PDO::FETCH_ASSOC)) { - if ($linha['cpf']==="Não informado") { - $interno[]=array('ctps'=>$linha['ctps'],'titulo'=>$linha['titulo'],'casamento'=>$linha['certidao_casamento'],'imagem'=>$linha['imagem'],'nome'=>$linha['nome'],'sobrenome'=>$linha['sobrenome'],'cpf'=>$linha['cpf'], 'senha'=>$linha['senha'], 'sexo'=>$linha['sexo'], 'telefone'=>$linha['telefone'],'data_nascimento'=>$linha['data_nascimento'], 'cep'=>$linha['cep'],'cidade'=>$linha['cidade'],'bairro'=>$linha['bairro'],'logradouro'=>$linha['logradouro'],'numero_endereco'=>$linha['numero_endereco'],'complemento'=>$linha['complemento'],'ibge'=>$linha['ibge'],'registro_geral'=>$linha['registro_geral'],'orgao_emissor'=>$linha['orgao_emissor'],'data_expedicao'=>$linha['data_expedicao'],'nome_pai'=>$linha['nome_pai'],'nome_mae'=>$linha['nome_mae'],'tipo_sanguineo'=>$linha['tipo_sanguineo'],'nome_contato_urgente'=>$linha['nome_contato_urgente'],'telefone_contato_urgente_1'=>$linha['telefone_contato_urgente_1'],'telefone_contato_urgente_2'=>$linha['telefone_contato_urgente_2'],'telefone_contato_urgente_3'=>$linha['telefone_contato_urgente_3'],'observacao'=>$linha['observacao'],'certidao'=>$linha['certidao_nascimento'],'curatela'=>$linha['curatela'],'inss'=>$linha['inss'],'loas'=>$linha['loas'],'bpc'=>$linha['bpc'],'funrural'=>$linha['funrural'],'saf'=>$linha['saf'],'sus'=>$linha['sus'],'idInterno'=>$linha['id_interno'],'imgdoc'=>$linha['imgdoc'],'descricao'=>$linha['descricao'],'id_documento'=>$linha['id_documento']); - } - else{ - $interno[]=array('ctps'=>$linha['ctps'],'titulo'=>$linha['titulo'],'casamento'=>$linha['certidao_casamento'],'imagem'=>$linha['imagem'],'nome'=>$linha['nome'],'sobrenome'=>$linha['sobrenome'],'cpf'=>mask($linha['cpf'],'###.###.###-##'), 'senha'=>$linha['senha'], 'sexo'=>$linha['sexo'], 'telefone'=>$linha['telefone'],'data_nascimento'=>$linha['data_nascimento'], 'cep'=>$linha['cep'],'cidade'=>$linha['cidade'],'bairro'=>$linha['bairro'],'logradouro'=>$linha['logradouro'],'numero_endereco'=>$linha['numero_endereco'],'complemento'=>$linha['complemento'],'ibge'=>$linha['ibge'],'registro_geral'=>$linha['registro_geral'],'orgao_emissor'=>$linha['orgao_emissor'],'data_expedicao'=>$linha['data_expedicao'],'nome_pai'=>$linha['nome_pai'],'nome_mae'=>$linha['nome_mae'],'tipo_sanguineo'=>$linha['tipo_sanguineo'],'nome_contato_urgente'=>$linha['nome_contato_urgente'],'telefone_contato_urgente_1'=>$linha['telefone_contato_urgente_1'],'telefone_contato_urgente_2'=>$linha['telefone_contato_urgente_2'],'telefone_contato_urgente_3'=>$linha['telefone_contato_urgente_3'],'observacao'=>$linha['observacao'],'certidao'=>$linha['certidao_nascimento'],'curatela'=>$linha['curatela'],'inss'=>$linha['inss'],'loas'=>$linha['loas'],'bpc'=>$linha['bpc'],'funrural'=>$linha['funrural'],'saf'=>$linha['saf'],'sus'=>$linha['sus'],'idInterno'=>$linha['id_interno'],'imgdoc'=>$linha['imgdoc'],'descricao'=>$linha['descricao'],'id_documento'=>$linha['id_documento']); + public function listar($id) + { + echo $id; + $pdo = Conexao::connect(); + $sql = "SELECT p.imagem,p.nome,p.sobrenome,p.cpf, p.senha, p.sexo, p.telefone,p.data_nascimento, p.cep,p.cidade,p.bairro,p.logradouro,p.numero_endereco,p.complemento,p.ibge,p.registro_geral,p.orgao_emissor,p.data_expedicao,p.nome_pai,p.nome_mae,p.tipo_sanguineo,i.nome_contato_urgente,i.telefone_contato_urgente_1,i.telefone_contato_urgente_2,i.telefone_contato_urgente_3,i.observacao,i.certidao_nascimento,i.curatela,i.inss,i.loas,i.bpc,i.funrural,i.saf,i.sus,i.id_interno,i.certidao_casamento,i.ctps,i.titulo,d.imgdoc,d.descricao,d.id_documento FROM pessoa p LEFT JOIN interno i ON p.id_pessoa = i.id_pessoa left join documento d on p.id_pessoa=d.id_pessoa WHERE i.id_interno=:id"; + $stmt = $pdo->prepare($sql); + $stmt->bindParam(':id', $id); + + $stmt->execute(); + $interno = array(); + while ($linha = $stmt->fetch(PDO::FETCH_ASSOC)) { + if ($linha['cpf'] === "Não informado") { + $interno[] = array('ctps' => $linha['ctps'], 'titulo' => $linha['titulo'], 'casamento' => $linha['certidao_casamento'], 'imagem' => $linha['imagem'], 'nome' => $linha['nome'], 'sobrenome' => $linha['sobrenome'], 'cpf' => $linha['cpf'], 'senha' => $linha['senha'], 'sexo' => $linha['sexo'], 'telefone' => $linha['telefone'], 'data_nascimento' => $linha['data_nascimento'], 'cep' => $linha['cep'], 'cidade' => $linha['cidade'], 'bairro' => $linha['bairro'], 'logradouro' => $linha['logradouro'], 'numero_endereco' => $linha['numero_endereco'], 'complemento' => $linha['complemento'], 'ibge' => $linha['ibge'], 'registro_geral' => $linha['registro_geral'], 'orgao_emissor' => $linha['orgao_emissor'], 'data_expedicao' => $linha['data_expedicao'], 'nome_pai' => $linha['nome_pai'], 'nome_mae' => $linha['nome_mae'], 'tipo_sanguineo' => $linha['tipo_sanguineo'], 'nome_contato_urgente' => $linha['nome_contato_urgente'], 'telefone_contato_urgente_1' => $linha['telefone_contato_urgente_1'], 'telefone_contato_urgente_2' => $linha['telefone_contato_urgente_2'], 'telefone_contato_urgente_3' => $linha['telefone_contato_urgente_3'], 'observacao' => $linha['observacao'], 'certidao' => $linha['certidao_nascimento'], 'curatela' => $linha['curatela'], 'inss' => $linha['inss'], 'loas' => $linha['loas'], 'bpc' => $linha['bpc'], 'funrural' => $linha['funrural'], 'saf' => $linha['saf'], 'sus' => $linha['sus'], 'idInterno' => $linha['id_interno'], 'imgdoc' => $linha['imgdoc'], 'descricao' => $linha['descricao'], 'id_documento' => $linha['id_documento']); + } else { + $interno[] = array('ctps' => $linha['ctps'], 'titulo' => $linha['titulo'], 'casamento' => $linha['certidao_casamento'], 'imagem' => $linha['imagem'], 'nome' => $linha['nome'], 'sobrenome' => $linha['sobrenome'], 'cpf' => mask($linha['cpf'], '###.###.###-##'), 'senha' => $linha['senha'], 'sexo' => $linha['sexo'], 'telefone' => $linha['telefone'], 'data_nascimento' => $linha['data_nascimento'], 'cep' => $linha['cep'], 'cidade' => $linha['cidade'], 'bairro' => $linha['bairro'], 'logradouro' => $linha['logradouro'], 'numero_endereco' => $linha['numero_endereco'], 'complemento' => $linha['complemento'], 'ibge' => $linha['ibge'], 'registro_geral' => $linha['registro_geral'], 'orgao_emissor' => $linha['orgao_emissor'], 'data_expedicao' => $linha['data_expedicao'], 'nome_pai' => $linha['nome_pai'], 'nome_mae' => $linha['nome_mae'], 'tipo_sanguineo' => $linha['tipo_sanguineo'], 'nome_contato_urgente' => $linha['nome_contato_urgente'], 'telefone_contato_urgente_1' => $linha['telefone_contato_urgente_1'], 'telefone_contato_urgente_2' => $linha['telefone_contato_urgente_2'], 'telefone_contato_urgente_3' => $linha['telefone_contato_urgente_3'], 'observacao' => $linha['observacao'], 'certidao' => $linha['certidao_nascimento'], 'curatela' => $linha['curatela'], 'inss' => $linha['inss'], 'loas' => $linha['loas'], 'bpc' => $linha['bpc'], 'funrural' => $linha['funrural'], 'saf' => $linha['saf'], 'sus' => $linha['sus'], 'idInterno' => $linha['id_interno'], 'imgdoc' => $linha['imgdoc'], 'descricao' => $linha['descricao'], 'id_documento' => $linha['id_documento']); } } - }catch (PDOException $e){ - echo 'Error: ' . $e->getMessage(); - } + return json_encode($interno); } public function listarCPF() { - try - { - $cpfs = array(); - $pdo = Conexao::connect(); - $consulta = $pdo->query("SELECT cpf from pessoa p INNER JOIN interno i ON(p.id_pessoa=i.id_pessoa)"); - $x=0; - while($linha = $consulta->fetch(PDO::FETCH_ASSOC)){ - $cpfs[$x] = array('cpf'=>$linha['cpf']); - $x++; - } - } - catch(PDOException $e) - { - echo 'Error:' . $e->getMessage(); + $cpfs = array(); + $pdo = Conexao::connect(); + $consulta = $pdo->query("SELECT cpf from pessoa p INNER JOIN interno i ON(p.id_pessoa=i.id_pessoa)"); + $x = 0; + while ($linha = $consulta->fetch(PDO::FETCH_ASSOC)) { + $cpfs[$x] = array('cpf' => $linha['cpf']); + $x++; } + return json_encode($cpfs); } } -?> \ No newline at end of file
ed34f005139dfix: Open Redirect Vulnerability [Security https://github.com/LabRedesCefetRJ/WeGIA/security/advisories/GHSA-x85f-76c9-qw3x]
2 files changed · +367 −391
controle/InternoControle.php+117 −106 modified@@ -1,100 +1,106 @@ <?php +if (session_status() === PHP_SESSION_NONE) { + session_start(); +} error_reporting(0); -ini_set('display_errors', 0 ); +ini_set('display_errors', 0); require_once '../classes/Interno.php'; +require_once dirname(__FILE__, 2) . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . 'Util.php'; require_once '../dao/InternoDAO.php'; require_once '../classes/Documento.php'; require_once '../dao/DocumentoDAO.php'; require_once 'DocumentoControle.php'; include_once '../classes/Cache.php'; -require_once ROOT."/controle/InternoControle.php"; -require_once ROOT."/controle/FuncionarioControle.php"; +require_once ROOT . "/controle/InternoControle.php"; +require_once ROOT . "/controle/FuncionarioControle.php"; $listaInternos = new InternoControle(); $listaInternos->listarTodos2(); -class InternoControle +class InternoControle { - public function formatoDataYMD($data) - { - $data_arr = explode("/", $data); - - $datac = $data_arr[2] . '-' . $data_arr[1] . '-' . $data_arr[0]; - - return $datac; - } - public function verificar(){ + //OpenRedirect nos métodos + public function formatoDataYMD($data) + { + $data_arr = explode("/", $data); + + $datac = $data_arr[2] . '-' . $data_arr[1] . '-' . $data_arr[0]; + + return $datac; + } + public function verificar() + { extract($_REQUEST); - session_start(); - if((!isset($nome)) || (empty($nome))){ + + if ((!isset($nome)) || (empty($nome))) { $msg = "Nome do interno não informado. Por favor, informe um nome!"; - header('Location: ../html/atendido/Cadastro_Atendido.php?msg='.$msg); + header('Location: ../html/atendido/Cadastro_Atendido.php?msg=' . $msg); } - if((!isset($sobrenome)) || (empty($sobrenome))){ + if ((!isset($sobrenome)) || (empty($sobrenome))) { $msg = "Sobrenome do interno não informado. Por favor, informe um sobrenome!"; - header('Location: ../html/atendido/Cadastro_Atendido.php?msg='.$msg); + header('Location: ../html/atendido/Cadastro_Atendido.php?msg=' . $msg); } - if((!isset($sexo)) || (empty($sexo))){ + if ((!isset($sexo)) || (empty($sexo))) { $msg .= "Sexo do interno não informado. Por favor, informe um sexo!"; - header('Location: ../html/atendido/Cadastro_Atendido.php?msg='.$msg); + header('Location: ../html/atendido/Cadastro_Atendido.php?msg=' . $msg); } - if((!isset($nascimento)) || (empty($nascimento))){ + if ((!isset($nascimento)) || (empty($nascimento))) { $msg .= "Data de nascimento do interno não informado. Por favor, informe uma data de nascimento!"; - header('Location: ../html/atendido/Cadastro_Atendido.php?msg='.$msg); + header('Location: ../html/atendido/Cadastro_Atendido.php?msg=' . $msg); } - if(isset($naoPossuiCpf)) - { + if (isset($naoPossuiCpf)) { $internos = $_SESSION['internos2']; - $j=0; - for($i=0; $i<count($internos); $i++) - { - if($nome==$internos[$i]['nome']) - { + $j = 0; + for ($i = 0; $i < count($internos); $i++) { + if ($nome == $internos[$i]['nome']) { $j++; } } - if($j==0) - { - $numeroCPF = $nome."ni"; - } - else - { - $numeroCPF = $nome.$j."ni"; + if ($j == 0) { + $numeroCPF = $nome . "ni"; + } else { + $numeroCPF = $nome . $j . "ni"; } - } - elseif((!isset($numeroCPF)) || (empty($numeroCPF))){ + } elseif ((!isset($numeroCPF)) || (empty($numeroCPF))) { $msg .= "CPF do interno não informado. Por favor, informe um CPF!"; - header('Location: ../html/atendido/Cadastro_atendido.php?msg='.$msg); + header('Location: ../html/atendido/Cadastro_atendido.php?msg=' . $msg); } - $telefone=''; - $senha='null'; - $numeroCPF=str_replace(".", '', $numeroCPF); - $numeroCPF=str_replace("-", "", $numeroCPF); - $interno = new Interno($numeroCPF,$nome,$sobrenome,$sexo,$nascimento,'','','','','','','',$telefone,'','','','','','','','',''); - - return $interno; + $telefone = ''; + $senha = 'null'; + $numeroCPF = str_replace(".", '', $numeroCPF); + $numeroCPF = str_replace("-", "", $numeroCPF); + $interno = new Interno($numeroCPF, $nome, $sobrenome, $sexo, $nascimento, '', '', '', '', '', '', '', $telefone, '', '', '', '', '', '', '', '', ''); + + return $interno; + } + + public function listarTodos($redirect = true) + { + try { + $internoDAO = new InternoDAO(); + $internos = $internoDAO->listarTodos(); + + $_SESSION['internos'] = $internos; + if ($redirect) { + header('Location: ' . '../html/informacao_interno.php'); + } + } catch (Exception $e) { + Util::tratarException($e); } - - public function listarTodos(){ - extract($_REQUEST); - $internoDAO= new InternoDAO(); - $internos = $internoDAO->listarTodos(); - session_start(); - $_SESSION['internos']=$internos; - header('Location: '.$nextPage); } - public function listarTodos2(){ - extract($_REQUEST); - $internoDAO= new InternoDAO(); - $internos = $internoDAO->listarTodos2(); - if (session_status() !== PHP_SESSION_ACTIVE) - { - session_start(); + public function listarTodos2() + { + try { + $internoDAO = new InternoDAO(); + $internos = $internoDAO->listarTodos2(); + + $_SESSION['internos2'] = $internos; + } catch (Exception $e) { + Util::tratarException($e); } - $_SESSION['internos2']=$internos; } public function listarUm() @@ -104,73 +110,78 @@ public function listarUm() $infInterno = $cache->read($id); if (!$infInterno) { try { - $internoDAO=new InternoDAO(); - $infInterno=$internoDAO->listar($id); - session_start(); - $_SESSION['interno']=$infInterno; + $internoDAO = new InternoDAO(); + $infInterno = $internoDAO->listar($id); + + $_SESSION['interno'] = $infInterno; $cache->save($id, $infInterno, '15 seconds'); - header('Location:'.$nextPage); - } catch (PDOException $e) { - echo $e->getMessage(); + header('Location:' . '../html/informacao_interno.php'); + } catch (Exception $e) { + Util::tratarException($e); } + } else { + header('Location:' . '../html/informacao_interno.php'); } - else{ - header('Location:'.$nextPage); - } - } - public function listarCpf(){ - extract($_REQUEST); - $internosDAO = new InternoDAO(); - $internoscpf = $internosDAO->listarCPF(); - $_SESSION['cpf_interno']=$internoscpf; + public function listarCpf() + { + try { + $internosDAO = new InternoDAO(); + $internoscpf = $internosDAO->listarCPF(); + $_SESSION['cpf_interno'] = $internoscpf; + } catch (Exception $e) { + Util::tratarException($e); + } } - public function comprimir($documParaCompressao){ - $documento_zip = gzcompress($documParaCompressao); - return $documento_zip; + public function comprimir($documParaCompressao) + { + $documento_zip = gzcompress($documParaCompressao); + return $documento_zip; } - - public function incluir(){ - $interno = $this->verificar(); - $intDAO = new AtendidoDAO(); - $docDAO = new DocumentoDAO(); - try{ - $idPessoa=$intDAO->incluir($interno, $interno->getCpf()); - $_SESSION['msg']="Interno cadastrado com sucesso"; - $_SESSION['proxima']="Cadastrar outro interno"; - $_SESSION['link']="../html/atendido/Cadastro_Atendido.php"; + + public function incluir() + { + try { + $interno = $this->verificar(); + $intDAO = new AtendidoDAO(); + $docDAO = new DocumentoDAO(); + $idPessoa = $intDAO->incluir($interno, $interno->getCpf()); + $_SESSION['msg'] = "Interno cadastrado com sucesso"; + $_SESSION['proxima'] = "Cadastrar outro interno"; + $_SESSION['link'] = "../html/atendido/Cadastro_Atendido.php"; header("Location: ../html/sucesso.php"); - } catch (PDOException $e){ - $msg= "Não foi possível registrar o interno <form> <input type='button' value='Voltar' onClick='history.go(-1)'> </form>"."<br>".$e->getMessage(); - echo $msg; + } catch (Exception $e) { + Util::tratarException($e); } } public function alterar() { - extract($_REQUEST); - $interno=$this->verificar(); - $interno->setIdInterno($idInterno); - $AtendidoDAO=new AtendidoDAO(); try { + extract($_REQUEST); + $interno = $this->verificar(); + $interno->setIdInterno($idInterno); + $AtendidoDAO = new AtendidoDAO(); + $AtendidoDAO->alterar($interno); - header("Location: ../html/Profile_Atendido.php?id=".$idInterno); - } catch (PDOException $e) { - echo $e->getMessage(); + header("Location: ../html/Profile_Atendido.php?id=" . $idInterno); + } catch (Exception $e) { + Util::tratarException($e); } - } public function excluir() { - extract($_REQUEST); - $AtendidoDAO=new AtendidoDAO(); try { + extract($_REQUEST); + $AtendidoDAO = new AtendidoDAO(); + $AtendidoDAO->excluir($id); - header("Location:../controle/control.php?metodo=listarTodos&nomeClasse=InternoControle&nextPage=../html/Informacao_Atendido.php"); + $this->listarTodos(false); + header("Location: ../html/Informacao_Atendido.php"); } catch (Exception $e) { - echo $e->getMessage(); + Util::tratarException($e); } } }
dao/InternoDAO.php+250 −285 modified@@ -8,329 +8,294 @@ class InternoDAO public function formatoDataDMY($data) { $data_arr = explode("-", $data); - + $datad = $data_arr[2] . '/' . $data_arr[1] . '/' . $data_arr[0]; - + return $datad; } - public function incluir($interno) - { - try { - $sql = 'call cadinterno(:nome,:sobrenome,:cpf,:senha,:sexo,:telefone,:data_nascimento,:imagem,:cep,:estado,:cidade,:bairro,:logradouro,:numero_endereco,:complemento,:ibge,:registro_geral,:orgao_emissor,:data_expedicao,:nome_pai,:nome_mae,:tipo_sanguineo,:nome_contato_urgente,:telefone_contato_urgente_1,:telefone_contato_urgente_2,:telefone_contato_urgente_3,:observacao,:certidao,:curatela,:inss,:loas,:bpc,:funrural,:saf,:sus,:certidao_casamento,:ctps,:titulo)'; - $sql = str_replace("'", "\'", $sql); - $pdo = Conexao::connect(); - $stmt = $pdo->prepare($sql); - $senha=$interno->getSenha(); - $nome=$interno->getNome(); - $sobrenome=$interno->getSobrenome(); - $cpf=$interno->getCpf(); - $sexo=$interno->getSexo(); - $telefone=$interno->getTelefone(); - $nascimento=$interno->getDataNascimento(); - $imagem=$interno->getImagem(); - $cep=$interno->getCep(); - $cidade=$interno->getCidade(); - $bairro=$interno->getBairro(); - $logradouro=$interno->getLogradouro(); - $numeroEndereco=$interno->getNumeroEndereco(); - $complemento=$interno->getComplemento(); - $rg=$interno->getRegistroGeral(); - $orgaoEmissor=$interno->getOrgaoEmissor(); - $nomePai=$interno->getNomePai(); - $nomeMae=$interno->getNomeMae(); - $sangue=$interno->getTipoSanguineo(); - $nomeContatoUrgente=$interno->getNomeContatoUrgente(); - $telefone1=$interno->getTelefoneContatoUrgente1(); - $telefone2=$interno->getTelefoneContatoUrgente2(); - $telefone3=$interno->getTelefoneContatoUrgente3(); - $observacao=$interno->getObservacao(); - $ibge=$interno->getIbge(); - $dataExpedicao=$interno->getDataExpedicao(); - $certidao=$interno->getCertidaoNascimento(); - $curatela=$interno->getCuratela(); - $inss=$interno->getInss(); - $loas=$interno->getLoas(); - $bpc=$interno->getBpc(); - $funrural=$interno->getFunrural(); - $saf=$interno->getSaf(); - $sus=$interno->getSus(); - $certidaoCasamento=$interno->getCertidaoCasamento(); - $ctps=$interno->getCtps(); - $titulo=$interno->getTitulo(); - $estado=$interno->getEstado(); - - $stmt->bindParam(':senha',$senha); - $stmt->bindParam(':nome',$nome); - $stmt->bindParam(':sobrenome',$sobrenome); - $stmt->bindParam(':cpf',$cpf); - $stmt->bindParam(':sexo',$sexo); - $stmt->bindParam(':telefone',$telefone); - $stmt->bindParam(':data_nascimento',$nascimento); - $stmt->bindParam(':imagem',$imagem); - $stmt->bindParam(':cep',$cep); - $stmt->bindParam(':estado',$estado); - $stmt->bindParam(':cidade',$cidade); - $stmt->bindParam(':bairro',$bairro); - $stmt->bindParam(':logradouro',$logradouro); - $stmt->bindParam(':numero_endereco',$numeroEndereco); - $stmt->bindParam(':complemento',$complemento); - $stmt->bindParam(':registro_geral',$rg); - $stmt->bindParam(':orgao_emissor',$orgaoEmissor); - $stmt->bindParam(':data_expedicao',$dataExpedicao); - $stmt->bindParam(':nome_pai',$nomePai); - $stmt->bindParam(':nome_mae',$nomeMae); - $stmt->bindParam(':tipo_sanguineo',$sangue); - $stmt->bindParam(':nome_contato_urgente',$nomeContatoUrgente); - $stmt->bindParam(':telefone_contato_urgente_1',$telefone1); - $stmt->bindParam(':telefone_contato_urgente_2',$telefone2); - $stmt->bindParam(':telefone_contato_urgente_3',$telefone3); - $stmt->bindParam(':observacao',$observacao); - $stmt->bindParam(':ibge',$ibge); - $stmt->bindParam(':certidao',$certidao); - $stmt->bindParam(':curatela',$curatela); - $stmt->bindParam(':inss',$inss); - $stmt->bindParam(':loas',$loas); - $stmt->bindParam(':bpc',$bpc); - $stmt->bindParam(':funrural',$funrural); - $stmt->bindParam(':saf',$saf); - $stmt->bindParam(':sus',$sus); - $stmt->bindParam(':certidao_casamento',$certidaoCasamento); - $stmt->bindParam(':ctps',$ctps); - $stmt->bindParam(':titulo',$titulo); - $stmt->execute(); - while($linha = $stmt->fetch(PDO::FETCH_ASSOC)){ - $idPessoa=$linha['MAX(id_pessoa)']; - } - return $idPessoa; + public function incluir($interno) + { + $sql = 'call cadinterno(:nome,:sobrenome,:cpf,:senha,:sexo,:telefone,:data_nascimento,:imagem,:cep,:estado,:cidade,:bairro,:logradouro,:numero_endereco,:complemento,:ibge,:registro_geral,:orgao_emissor,:data_expedicao,:nome_pai,:nome_mae,:tipo_sanguineo,:nome_contato_urgente,:telefone_contato_urgente_1,:telefone_contato_urgente_2,:telefone_contato_urgente_3,:observacao,:certidao,:curatela,:inss,:loas,:bpc,:funrural,:saf,:sus,:certidao_casamento,:ctps,:titulo)'; + $sql = str_replace("'", "\'", $sql); + $pdo = Conexao::connect(); + $stmt = $pdo->prepare($sql); + $senha = $interno->getSenha(); + $nome = $interno->getNome(); + $sobrenome = $interno->getSobrenome(); + $cpf = $interno->getCpf(); + $sexo = $interno->getSexo(); + $telefone = $interno->getTelefone(); + $nascimento = $interno->getDataNascimento(); + $imagem = $interno->getImagem(); + $cep = $interno->getCep(); + $cidade = $interno->getCidade(); + $bairro = $interno->getBairro(); + $logradouro = $interno->getLogradouro(); + $numeroEndereco = $interno->getNumeroEndereco(); + $complemento = $interno->getComplemento(); + $rg = $interno->getRegistroGeral(); + $orgaoEmissor = $interno->getOrgaoEmissor(); + $nomePai = $interno->getNomePai(); + $nomeMae = $interno->getNomeMae(); + $sangue = $interno->getTipoSanguineo(); + $nomeContatoUrgente = $interno->getNomeContatoUrgente(); + $telefone1 = $interno->getTelefoneContatoUrgente1(); + $telefone2 = $interno->getTelefoneContatoUrgente2(); + $telefone3 = $interno->getTelefoneContatoUrgente3(); + $observacao = $interno->getObservacao(); + $ibge = $interno->getIbge(); + $dataExpedicao = $interno->getDataExpedicao(); + $certidao = $interno->getCertidaoNascimento(); + $curatela = $interno->getCuratela(); + $inss = $interno->getInss(); + $loas = $interno->getLoas(); + $bpc = $interno->getBpc(); + $funrural = $interno->getFunrural(); + $saf = $interno->getSaf(); + $sus = $interno->getSus(); + $certidaoCasamento = $interno->getCertidaoCasamento(); + $ctps = $interno->getCtps(); + $titulo = $interno->getTitulo(); + $estado = $interno->getEstado(); - }catch (PDOException $e) { - echo 'Error: <b> na tabela interno = ' . $sql . '</b> <br /><br />' . $e->getMessage(); + $stmt->bindParam(':senha', $senha); + $stmt->bindParam(':nome', $nome); + $stmt->bindParam(':sobrenome', $sobrenome); + $stmt->bindParam(':cpf', $cpf); + $stmt->bindParam(':sexo', $sexo); + $stmt->bindParam(':telefone', $telefone); + $stmt->bindParam(':data_nascimento', $nascimento); + $stmt->bindParam(':imagem', $imagem); + $stmt->bindParam(':cep', $cep); + $stmt->bindParam(':estado', $estado); + $stmt->bindParam(':cidade', $cidade); + $stmt->bindParam(':bairro', $bairro); + $stmt->bindParam(':logradouro', $logradouro); + $stmt->bindParam(':numero_endereco', $numeroEndereco); + $stmt->bindParam(':complemento', $complemento); + $stmt->bindParam(':registro_geral', $rg); + $stmt->bindParam(':orgao_emissor', $orgaoEmissor); + $stmt->bindParam(':data_expedicao', $dataExpedicao); + $stmt->bindParam(':nome_pai', $nomePai); + $stmt->bindParam(':nome_mae', $nomeMae); + $stmt->bindParam(':tipo_sanguineo', $sangue); + $stmt->bindParam(':nome_contato_urgente', $nomeContatoUrgente); + $stmt->bindParam(':telefone_contato_urgente_1', $telefone1); + $stmt->bindParam(':telefone_contato_urgente_2', $telefone2); + $stmt->bindParam(':telefone_contato_urgente_3', $telefone3); + $stmt->bindParam(':observacao', $observacao); + $stmt->bindParam(':ibge', $ibge); + $stmt->bindParam(':certidao', $certidao); + $stmt->bindParam(':curatela', $curatela); + $stmt->bindParam(':inss', $inss); + $stmt->bindParam(':loas', $loas); + $stmt->bindParam(':bpc', $bpc); + $stmt->bindParam(':funrural', $funrural); + $stmt->bindParam(':saf', $saf); + $stmt->bindParam(':sus', $sus); + $stmt->bindParam(':certidao_casamento', $certidaoCasamento); + $stmt->bindParam(':ctps', $ctps); + $stmt->bindParam(':titulo', $titulo); + $stmt->execute(); + while ($linha = $stmt->fetch(PDO::FETCH_ASSOC)) { + $idPessoa = $linha['MAX(id_pessoa)']; } + return $idPessoa; } // excluir public function excluir($idinterno) { - try { - $sql = 'call excluirinterno(:idi)'; - $sql = str_replace("'", "\'", $sql); - $pdo = Conexao::connect(); - $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - - $stmt = $pdo->prepare($sql); - - $stmt->bindParam(':idi', $idinterno); - - $stmt->execute(); - } catch (PDOException $e) { - echo 'Error: <b> na tabela pessoas = ' . $sql . '</b> <br /><br />' . $e->getMessage(); - } + $sql = 'call excluirinterno(:idi)'; + $sql = str_replace("'", "\'", $sql); + $pdo = Conexao::connect(); + $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + $stmt = $pdo->prepare($sql); + + $stmt->bindParam(':idi', $idinterno); + + $stmt->execute(); } public function alterarImagem($interno) { - try { - $sql = 'update pessoa as p inner join interno as i on p.id_pessoa=i.id_pessoa set imagem=:imagem where id_interno=:id_interno'; - - $sql = str_replace("'", "\'", $sql); - $pdo = Conexao::connect(); - $stmt = $pdo->prepare($sql); - - $stmt = $pdo->prepare($sql); - $imagem=$interno->getImagem(); - $id_interno=$interno->getIdInterno(); + $sql = 'update pessoa as p inner join interno as i on p.id_pessoa=i.id_pessoa set imagem=:imagem where id_interno=:id_interno'; - $stmt->bindParam(':imagem',$imagem); - $stmt->bindParam(':id_interno',$id_interno); - $stmt->execute(); - } catch (PDOException $e) { - echo 'Error: <b> na tabela pessoas = ' . $sql . '</b> <br /><br />' . $e->getMessage(); - } + $sql = str_replace("'", "\'", $sql); + $pdo = Conexao::connect(); + $stmt = $pdo->prepare($sql); + + $stmt = $pdo->prepare($sql); + $imagem = $interno->getImagem(); + $id_interno = $interno->getIdInterno(); + + $stmt->bindParam(':imagem', $imagem); + $stmt->bindParam(':id_interno', $id_interno); + $stmt->execute(); } // Editar public function alterar($interno) { - try { - $sql = 'update pessoa as p inner join interno as i on p.id_pessoa=i.id_pessoa set p.senha=:senha,p.nome=:nome, p.sobrenome=:sobrenome,p.cpf=:cpf,p.sexo=:sexo,p.telefone=:telefone,p.data_nascimento=:data_nascimento,p.imagem=:imagem,p.cep=:cep,p.estado=:estado,p.cidade=:cidade,p.bairro=:bairro,p.logradouro=:logradouro,p.numero_endereco=:numero_endereco,p.complemento=:complemento,p.ibge=:ibge,p.registro_geral=:registro_geral,p.orgao_emissor=:orgao_emissor,p.data_expedicao=:data_expedicao,p.nome_pai=:nome_pai,p.nome_mae=:nome_mae,p.tipo_sanguineo=:tipo_sanguineo,i.nome_contato_urgente=:nome_contato_urgente,i.telefone_contato_urgente_1=:telefone_contato_urgente_1,i.telefone_contato_urgente_2=:telefone_contato_urgente_2,i.telefone_contato_urgente_3=:telefone_contato_urgente_3,i.observacao=:observacao,i.certidao_nascimento=:certidao,i.curatela=:curatela,i.inss=:inss,i.loas=:loas,i.bpc=:bpc,i.funrural=:funrural,i.saf=:saf,i.sus=:sus,i.certidao_casamento=:certidao_casamento,i.ctps=:ctps,i.titulo=:titulo where i.id_interno=:id_interno'; - - $sql = str_replace("'", "\'", $sql); - $pdo = Conexao::connect(); - $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - - $stmt = $pdo->prepare($sql); - $certidao_casamento=$interno->getCertidaoCasamento(); - $ctps=$interno->getCtps(); - $titulo=$interno->getTitulo(); - $nome=$interno->getNome(); - $sobrenome=$interno->getsobrenome(); - $cpf=$interno->getCpf(); - $sexo=$interno->getSexo(); - $telefone=$interno->getTelefone(); - $nascimento=$interno->getDataNascimento(); - $imagem=$interno->getImagem(); - $cep=$interno->getCep(); - $cidade=$interno->getCidade(); - $bairro=$interno->getBairro(); - $logradouro=$interno->getLogradouro(); - $numeroEndereco=$interno->getNumeroEndereco(); - $complemento=$interno->getComplemento(); - $rg=$interno->getRegistroGeral(); - $orgaoEmissor=$interno->getOrgaoEmissor(); - $nomePai=$interno->getNomePai(); - $nomeMae=$interno->getNomeMae(); - $sangue=$interno->getTipoSanguineo(); - $nomeContatoUrgente=$interno->getNomeContatoUrgente(); - $telefone1=$interno->getTelefoneContatoUrgente1(); - $telefone2=$interno->getTelefoneContatoUrgente2(); - $telefone3=$interno->getTelefoneContatoUrgente3(); - $ibge=$interno->getIbge(); - $dataExpedicao=$interno->getDataExpedicao(); - $certidao=$interno->getCertidaoNascimento(); - $curatela=$interno->getCuratela(); - $inss=$interno->getInss(); - $loas=$interno->getLoas(); - $bpc=$interno->getBpc(); - $funrural=$interno->getFunrural(); - $saf=$interno->getSaf(); - $sus=$interno->getSus(); - $idInterno=$interno->getIdInterno(); - $estado=$interno->getEstado(); - $observacao=$interno->getObservacao(); - - $stmt->bindParam(':id_interno',$idInterno); - $stmt->bindParam(':senha',$senha); - $stmt->bindParam(':nome',$nome); - $stmt->bindParam(':sobrenome',$sobrenome); - $stmt->bindParam(':cpf',$cpf); - $stmt->bindParam(':sexo',$sexo); - $stmt->bindParam(':telefone',$telefone); - $stmt->bindParam(':data_nascimento',$nascimento); - $stmt->bindParam(':imagem',$imagem); - $stmt->bindParam(':cep',$cep); - $stmt->bindParam(':estado',$estado); - $stmt->bindParam(':cidade',$cidade); - $stmt->bindParam(':bairro',$bairro); - $stmt->bindParam(':logradouro',$logradouro); - $stmt->bindParam(':numero_endereco',$numeroEndereco); - $stmt->bindParam(':complemento',$complemento); - $stmt->bindParam(':registro_geral',$rg); - $stmt->bindParam(':orgao_emissor',$orgaoEmissor); - $stmt->bindParam(':data_expedicao',$dataExpedicao); - $stmt->bindParam(':nome_pai',$nomePai); - $stmt->bindParam(':nome_mae',$nomeMae); - $stmt->bindParam(':tipo_sanguineo',$sangue); - $stmt->bindParam(':nome_contato_urgente',$nomeContatoUrgente); - $stmt->bindParam(':telefone_contato_urgente_1',$telefone1); - $stmt->bindParam(':telefone_contato_urgente_2',$telefone2); - $stmt->bindParam(':telefone_contato_urgente_3',$telefone3); - $stmt->bindParam(':observacao',$observacao); - $stmt->bindParam(':ibge',$ibge); - $stmt->bindParam(':certidao',$certidao); - $stmt->bindParam(':curatela',$curatela); - $stmt->bindParam(':inss',$inss); - $stmt->bindParam(':loas',$loas); - $stmt->bindParam(':bpc',$bpc); - $stmt->bindParam(':funrural',$funrural); - $stmt->bindParam(':saf',$saf); - $stmt->bindParam(':sus',$sus); - $stmt->bindParam(':certidao_casamento',$certidao_casamento); - $stmt->bindParam(':ctps',$ctps); - $stmt->bindParam(':titulo',$titulo); - $stmt->execute(); - } catch (PDOException $e) { - echo 'Error: <b> na tabela pessoas = ' . $sql . '</b> <br /><br />' . $e->getMessage(); - } - } - public function listarTodos(){ + $sql = 'update pessoa as p inner join interno as i on p.id_pessoa=i.id_pessoa set p.senha=:senha,p.nome=:nome, p.sobrenome=:sobrenome,p.cpf=:cpf,p.sexo=:sexo,p.telefone=:telefone,p.data_nascimento=:data_nascimento,p.imagem=:imagem,p.cep=:cep,p.estado=:estado,p.cidade=:cidade,p.bairro=:bairro,p.logradouro=:logradouro,p.numero_endereco=:numero_endereco,p.complemento=:complemento,p.ibge=:ibge,p.registro_geral=:registro_geral,p.orgao_emissor=:orgao_emissor,p.data_expedicao=:data_expedicao,p.nome_pai=:nome_pai,p.nome_mae=:nome_mae,p.tipo_sanguineo=:tipo_sanguineo,i.nome_contato_urgente=:nome_contato_urgente,i.telefone_contato_urgente_1=:telefone_contato_urgente_1,i.telefone_contato_urgente_2=:telefone_contato_urgente_2,i.telefone_contato_urgente_3=:telefone_contato_urgente_3,i.observacao=:observacao,i.certidao_nascimento=:certidao,i.curatela=:curatela,i.inss=:inss,i.loas=:loas,i.bpc=:bpc,i.funrural=:funrural,i.saf=:saf,i.sus=:sus,i.certidao_casamento=:certidao_casamento,i.ctps=:ctps,i.titulo=:titulo where i.id_interno=:id_interno'; - try{ - $internos=array(); - $pdo = Conexao::connect(); - $consulta = $pdo->query("SELECT p.nome,p.sobrenome,p.cpf,i.id_interno FROM pessoa p INNER JOIN interno i ON p.id_pessoa = i.id_pessoa"); - $produtos = Array(); - $x=0; - while($linha = $consulta->fetch(PDO::FETCH_ASSOC)){ - if ($linha['cpf']==="Não informado") { - $internos[$x]=array('cpf'=>$linha['cpf'],'nome'=>$linha['nome'],'sobrenome'=>$linha['sobrenome'],'id'=>$linha['id_interno']); - } - else{ - $internos[$x]=array('cpf'=>mask($linha['cpf'],'###.###.###-##'),'nome'=>$linha['nome'],'sobrenome'=>$linha['sobrenome'],'id'=>$linha['id_interno']); - } - $x++; - } - } catch (PDOException $e){ - echo 'Error:' . $e->getMessage(); + $sql = str_replace("'", "\'", $sql); + $pdo = Conexao::connect(); + $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + $stmt = $pdo->prepare($sql); + $certidao_casamento = $interno->getCertidaoCasamento(); + $ctps = $interno->getCtps(); + $titulo = $interno->getTitulo(); + $nome = $interno->getNome(); + $sobrenome = $interno->getsobrenome(); + $cpf = $interno->getCpf(); + $sexo = $interno->getSexo(); + $telefone = $interno->getTelefone(); + $nascimento = $interno->getDataNascimento(); + $imagem = $interno->getImagem(); + $cep = $interno->getCep(); + $cidade = $interno->getCidade(); + $bairro = $interno->getBairro(); + $logradouro = $interno->getLogradouro(); + $numeroEndereco = $interno->getNumeroEndereco(); + $complemento = $interno->getComplemento(); + $rg = $interno->getRegistroGeral(); + $orgaoEmissor = $interno->getOrgaoEmissor(); + $nomePai = $interno->getNomePai(); + $nomeMae = $interno->getNomeMae(); + $sangue = $interno->getTipoSanguineo(); + $nomeContatoUrgente = $interno->getNomeContatoUrgente(); + $telefone1 = $interno->getTelefoneContatoUrgente1(); + $telefone2 = $interno->getTelefoneContatoUrgente2(); + $telefone3 = $interno->getTelefoneContatoUrgente3(); + $ibge = $interno->getIbge(); + $dataExpedicao = $interno->getDataExpedicao(); + $certidao = $interno->getCertidaoNascimento(); + $curatela = $interno->getCuratela(); + $inss = $interno->getInss(); + $loas = $interno->getLoas(); + $bpc = $interno->getBpc(); + $funrural = $interno->getFunrural(); + $saf = $interno->getSaf(); + $sus = $interno->getSus(); + $idInterno = $interno->getIdInterno(); + $estado = $interno->getEstado(); + $observacao = $interno->getObservacao(); + + $stmt->bindParam(':id_interno', $idInterno); + $stmt->bindParam(':senha', $senha); + $stmt->bindParam(':nome', $nome); + $stmt->bindParam(':sobrenome', $sobrenome); + $stmt->bindParam(':cpf', $cpf); + $stmt->bindParam(':sexo', $sexo); + $stmt->bindParam(':telefone', $telefone); + $stmt->bindParam(':data_nascimento', $nascimento); + $stmt->bindParam(':imagem', $imagem); + $stmt->bindParam(':cep', $cep); + $stmt->bindParam(':estado', $estado); + $stmt->bindParam(':cidade', $cidade); + $stmt->bindParam(':bairro', $bairro); + $stmt->bindParam(':logradouro', $logradouro); + $stmt->bindParam(':numero_endereco', $numeroEndereco); + $stmt->bindParam(':complemento', $complemento); + $stmt->bindParam(':registro_geral', $rg); + $stmt->bindParam(':orgao_emissor', $orgaoEmissor); + $stmt->bindParam(':data_expedicao', $dataExpedicao); + $stmt->bindParam(':nome_pai', $nomePai); + $stmt->bindParam(':nome_mae', $nomeMae); + $stmt->bindParam(':tipo_sanguineo', $sangue); + $stmt->bindParam(':nome_contato_urgente', $nomeContatoUrgente); + $stmt->bindParam(':telefone_contato_urgente_1', $telefone1); + $stmt->bindParam(':telefone_contato_urgente_2', $telefone2); + $stmt->bindParam(':telefone_contato_urgente_3', $telefone3); + $stmt->bindParam(':observacao', $observacao); + $stmt->bindParam(':ibge', $ibge); + $stmt->bindParam(':certidao', $certidao); + $stmt->bindParam(':curatela', $curatela); + $stmt->bindParam(':inss', $inss); + $stmt->bindParam(':loas', $loas); + $stmt->bindParam(':bpc', $bpc); + $stmt->bindParam(':funrural', $funrural); + $stmt->bindParam(':saf', $saf); + $stmt->bindParam(':sus', $sus); + $stmt->bindParam(':certidao_casamento', $certidao_casamento); + $stmt->bindParam(':ctps', $ctps); + $stmt->bindParam(':titulo', $titulo); + $stmt->execute(); + } + public function listarTodos() + { + $internos = array(); + $pdo = Conexao::connect(); + $consulta = $pdo->query("SELECT p.nome,p.sobrenome,p.cpf,i.id_interno FROM pessoa p INNER JOIN interno i ON p.id_pessoa = i.id_pessoa"); + $produtos = array(); + $x = 0; + while ($linha = $consulta->fetch(PDO::FETCH_ASSOC)) { + if ($linha['cpf'] === "Não informado") { + $internos[$x] = array('cpf' => $linha['cpf'], 'nome' => $linha['nome'], 'sobrenome' => $linha['sobrenome'], 'id' => $linha['id_interno']); + } else { + $internos[$x] = array('cpf' => mask($linha['cpf'], '###.###.###-##'), 'nome' => $linha['nome'], 'sobrenome' => $linha['sobrenome'], 'id' => $linha['id_interno']); } - return json_encode($internos); + $x++; } + return json_encode($internos); + } - public function listarTodos2(){ - try{ - $internos=array(); - $pdo = Conexao::connect(); - $consulta = $pdo->query("SELECT p.nome,p.sobrenome,p.cpf,i.id_interno FROM pessoa p INNER JOIN interno i ON p.id_pessoa = i.id_pessoa"); - $produtos = Array(); - $x=0; - while($linha = $consulta->fetch(PDO::FETCH_ASSOC)){ - if ($linha['cpf']==="Não informado") { - $internos[$x]=array('cpf'=>$linha['cpf'],'nome'=>$linha['nome'],'sobrenome'=>$linha['sobrenome'],'id'=>$linha['id_interno']); - } - else{ - $internos[$x]=array('cpf'=>mask($linha['cpf'],'###.###.###-##'),'nome'=>$linha['nome'],'sobrenome'=>$linha['sobrenome'],'id'=>$linha['id_interno']); - } - $x++; - } - } catch (PDOException $e){ - echo 'Error:' . $e->getMessage(); + public function listarTodos2() + { + $internos = array(); + $pdo = Conexao::connect(); + $consulta = $pdo->query("SELECT p.nome,p.sobrenome,p.cpf,i.id_interno FROM pessoa p INNER JOIN interno i ON p.id_pessoa = i.id_pessoa"); + $produtos = array(); + $x = 0; + while ($linha = $consulta->fetch(PDO::FETCH_ASSOC)) { + if ($linha['cpf'] === "Não informado") { + $internos[$x] = array('cpf' => $linha['cpf'], 'nome' => $linha['nome'], 'sobrenome' => $linha['sobrenome'], 'id' => $linha['id_interno']); + } else { + $internos[$x] = array('cpf' => mask($linha['cpf'], '###.###.###-##'), 'nome' => $linha['nome'], 'sobrenome' => $linha['sobrenome'], 'id' => $linha['id_interno']); } - return $internos; + $x++; } - public function listar($id){ - try{ - echo $id; - $pdo = Conexao::connect(); - $sql = "SELECT p.imagem,p.nome,p.sobrenome,p.cpf, p.senha, p.sexo, p.telefone,p.data_nascimento, p.cep,p.cidade,p.bairro,p.logradouro,p.numero_endereco,p.complemento,p.ibge,p.registro_geral,p.orgao_emissor,p.data_expedicao,p.nome_pai,p.nome_mae,p.tipo_sanguineo,i.nome_contato_urgente,i.telefone_contato_urgente_1,i.telefone_contato_urgente_2,i.telefone_contato_urgente_3,i.observacao,i.certidao_nascimento,i.curatela,i.inss,i.loas,i.bpc,i.funrural,i.saf,i.sus,i.id_interno,i.certidao_casamento,i.ctps,i.titulo,d.imgdoc,d.descricao,d.id_documento FROM pessoa p LEFT JOIN interno i ON p.id_pessoa = i.id_pessoa left join documento d on p.id_pessoa=d.id_pessoa WHERE i.id_interno=:id"; - $stmt = $pdo->prepare($sql); - $stmt->bindParam(':id',$id); + return $internos; + } - $stmt->execute(); - $interno=array(); - while ($linha = $stmt->fetch(PDO::FETCH_ASSOC)) { - if ($linha['cpf']==="Não informado") { - $interno[]=array('ctps'=>$linha['ctps'],'titulo'=>$linha['titulo'],'casamento'=>$linha['certidao_casamento'],'imagem'=>$linha['imagem'],'nome'=>$linha['nome'],'sobrenome'=>$linha['sobrenome'],'cpf'=>$linha['cpf'], 'senha'=>$linha['senha'], 'sexo'=>$linha['sexo'], 'telefone'=>$linha['telefone'],'data_nascimento'=>$linha['data_nascimento'], 'cep'=>$linha['cep'],'cidade'=>$linha['cidade'],'bairro'=>$linha['bairro'],'logradouro'=>$linha['logradouro'],'numero_endereco'=>$linha['numero_endereco'],'complemento'=>$linha['complemento'],'ibge'=>$linha['ibge'],'registro_geral'=>$linha['registro_geral'],'orgao_emissor'=>$linha['orgao_emissor'],'data_expedicao'=>$linha['data_expedicao'],'nome_pai'=>$linha['nome_pai'],'nome_mae'=>$linha['nome_mae'],'tipo_sanguineo'=>$linha['tipo_sanguineo'],'nome_contato_urgente'=>$linha['nome_contato_urgente'],'telefone_contato_urgente_1'=>$linha['telefone_contato_urgente_1'],'telefone_contato_urgente_2'=>$linha['telefone_contato_urgente_2'],'telefone_contato_urgente_3'=>$linha['telefone_contato_urgente_3'],'observacao'=>$linha['observacao'],'certidao'=>$linha['certidao_nascimento'],'curatela'=>$linha['curatela'],'inss'=>$linha['inss'],'loas'=>$linha['loas'],'bpc'=>$linha['bpc'],'funrural'=>$linha['funrural'],'saf'=>$linha['saf'],'sus'=>$linha['sus'],'idInterno'=>$linha['id_interno'],'imgdoc'=>$linha['imgdoc'],'descricao'=>$linha['descricao'],'id_documento'=>$linha['id_documento']); - } - else{ - $interno[]=array('ctps'=>$linha['ctps'],'titulo'=>$linha['titulo'],'casamento'=>$linha['certidao_casamento'],'imagem'=>$linha['imagem'],'nome'=>$linha['nome'],'sobrenome'=>$linha['sobrenome'],'cpf'=>mask($linha['cpf'],'###.###.###-##'), 'senha'=>$linha['senha'], 'sexo'=>$linha['sexo'], 'telefone'=>$linha['telefone'],'data_nascimento'=>$linha['data_nascimento'], 'cep'=>$linha['cep'],'cidade'=>$linha['cidade'],'bairro'=>$linha['bairro'],'logradouro'=>$linha['logradouro'],'numero_endereco'=>$linha['numero_endereco'],'complemento'=>$linha['complemento'],'ibge'=>$linha['ibge'],'registro_geral'=>$linha['registro_geral'],'orgao_emissor'=>$linha['orgao_emissor'],'data_expedicao'=>$linha['data_expedicao'],'nome_pai'=>$linha['nome_pai'],'nome_mae'=>$linha['nome_mae'],'tipo_sanguineo'=>$linha['tipo_sanguineo'],'nome_contato_urgente'=>$linha['nome_contato_urgente'],'telefone_contato_urgente_1'=>$linha['telefone_contato_urgente_1'],'telefone_contato_urgente_2'=>$linha['telefone_contato_urgente_2'],'telefone_contato_urgente_3'=>$linha['telefone_contato_urgente_3'],'observacao'=>$linha['observacao'],'certidao'=>$linha['certidao_nascimento'],'curatela'=>$linha['curatela'],'inss'=>$linha['inss'],'loas'=>$linha['loas'],'bpc'=>$linha['bpc'],'funrural'=>$linha['funrural'],'saf'=>$linha['saf'],'sus'=>$linha['sus'],'idInterno'=>$linha['id_interno'],'imgdoc'=>$linha['imgdoc'],'descricao'=>$linha['descricao'],'id_documento'=>$linha['id_documento']); + public function listar($id) + { + echo $id; + $pdo = Conexao::connect(); + $sql = "SELECT p.imagem,p.nome,p.sobrenome,p.cpf, p.senha, p.sexo, p.telefone,p.data_nascimento, p.cep,p.cidade,p.bairro,p.logradouro,p.numero_endereco,p.complemento,p.ibge,p.registro_geral,p.orgao_emissor,p.data_expedicao,p.nome_pai,p.nome_mae,p.tipo_sanguineo,i.nome_contato_urgente,i.telefone_contato_urgente_1,i.telefone_contato_urgente_2,i.telefone_contato_urgente_3,i.observacao,i.certidao_nascimento,i.curatela,i.inss,i.loas,i.bpc,i.funrural,i.saf,i.sus,i.id_interno,i.certidao_casamento,i.ctps,i.titulo,d.imgdoc,d.descricao,d.id_documento FROM pessoa p LEFT JOIN interno i ON p.id_pessoa = i.id_pessoa left join documento d on p.id_pessoa=d.id_pessoa WHERE i.id_interno=:id"; + $stmt = $pdo->prepare($sql); + $stmt->bindParam(':id', $id); + + $stmt->execute(); + $interno = array(); + while ($linha = $stmt->fetch(PDO::FETCH_ASSOC)) { + if ($linha['cpf'] === "Não informado") { + $interno[] = array('ctps' => $linha['ctps'], 'titulo' => $linha['titulo'], 'casamento' => $linha['certidao_casamento'], 'imagem' => $linha['imagem'], 'nome' => $linha['nome'], 'sobrenome' => $linha['sobrenome'], 'cpf' => $linha['cpf'], 'senha' => $linha['senha'], 'sexo' => $linha['sexo'], 'telefone' => $linha['telefone'], 'data_nascimento' => $linha['data_nascimento'], 'cep' => $linha['cep'], 'cidade' => $linha['cidade'], 'bairro' => $linha['bairro'], 'logradouro' => $linha['logradouro'], 'numero_endereco' => $linha['numero_endereco'], 'complemento' => $linha['complemento'], 'ibge' => $linha['ibge'], 'registro_geral' => $linha['registro_geral'], 'orgao_emissor' => $linha['orgao_emissor'], 'data_expedicao' => $linha['data_expedicao'], 'nome_pai' => $linha['nome_pai'], 'nome_mae' => $linha['nome_mae'], 'tipo_sanguineo' => $linha['tipo_sanguineo'], 'nome_contato_urgente' => $linha['nome_contato_urgente'], 'telefone_contato_urgente_1' => $linha['telefone_contato_urgente_1'], 'telefone_contato_urgente_2' => $linha['telefone_contato_urgente_2'], 'telefone_contato_urgente_3' => $linha['telefone_contato_urgente_3'], 'observacao' => $linha['observacao'], 'certidao' => $linha['certidao_nascimento'], 'curatela' => $linha['curatela'], 'inss' => $linha['inss'], 'loas' => $linha['loas'], 'bpc' => $linha['bpc'], 'funrural' => $linha['funrural'], 'saf' => $linha['saf'], 'sus' => $linha['sus'], 'idInterno' => $linha['id_interno'], 'imgdoc' => $linha['imgdoc'], 'descricao' => $linha['descricao'], 'id_documento' => $linha['id_documento']); + } else { + $interno[] = array('ctps' => $linha['ctps'], 'titulo' => $linha['titulo'], 'casamento' => $linha['certidao_casamento'], 'imagem' => $linha['imagem'], 'nome' => $linha['nome'], 'sobrenome' => $linha['sobrenome'], 'cpf' => mask($linha['cpf'], '###.###.###-##'), 'senha' => $linha['senha'], 'sexo' => $linha['sexo'], 'telefone' => $linha['telefone'], 'data_nascimento' => $linha['data_nascimento'], 'cep' => $linha['cep'], 'cidade' => $linha['cidade'], 'bairro' => $linha['bairro'], 'logradouro' => $linha['logradouro'], 'numero_endereco' => $linha['numero_endereco'], 'complemento' => $linha['complemento'], 'ibge' => $linha['ibge'], 'registro_geral' => $linha['registro_geral'], 'orgao_emissor' => $linha['orgao_emissor'], 'data_expedicao' => $linha['data_expedicao'], 'nome_pai' => $linha['nome_pai'], 'nome_mae' => $linha['nome_mae'], 'tipo_sanguineo' => $linha['tipo_sanguineo'], 'nome_contato_urgente' => $linha['nome_contato_urgente'], 'telefone_contato_urgente_1' => $linha['telefone_contato_urgente_1'], 'telefone_contato_urgente_2' => $linha['telefone_contato_urgente_2'], 'telefone_contato_urgente_3' => $linha['telefone_contato_urgente_3'], 'observacao' => $linha['observacao'], 'certidao' => $linha['certidao_nascimento'], 'curatela' => $linha['curatela'], 'inss' => $linha['inss'], 'loas' => $linha['loas'], 'bpc' => $linha['bpc'], 'funrural' => $linha['funrural'], 'saf' => $linha['saf'], 'sus' => $linha['sus'], 'idInterno' => $linha['id_interno'], 'imgdoc' => $linha['imgdoc'], 'descricao' => $linha['descricao'], 'id_documento' => $linha['id_documento']); } } - }catch (PDOException $e){ - echo 'Error: ' . $e->getMessage(); - } + return json_encode($interno); } public function listarCPF() { - try - { - $cpfs = array(); - $pdo = Conexao::connect(); - $consulta = $pdo->query("SELECT cpf from pessoa p INNER JOIN interno i ON(p.id_pessoa=i.id_pessoa)"); - $x=0; - while($linha = $consulta->fetch(PDO::FETCH_ASSOC)){ - $cpfs[$x] = array('cpf'=>$linha['cpf']); - $x++; - } - } - catch(PDOException $e) - { - echo 'Error:' . $e->getMessage(); + $cpfs = array(); + $pdo = Conexao::connect(); + $consulta = $pdo->query("SELECT cpf from pessoa p INNER JOIN interno i ON(p.id_pessoa=i.id_pessoa)"); + $x = 0; + while ($linha = $consulta->fetch(PDO::FETCH_ASSOC)) { + $cpfs[$x] = array('cpf' => $linha['cpf']); + $x++; } + return json_encode($cpfs); } } -?> \ No newline at end of file
Vulnerability mechanics
Root cause
"Missing validation on the `nextPage` parameter in `InternoControle::listarTodos()` combined with an empty middleware resource whitelist that allows any authenticated user to reach the vulnerable method."
Attack vector
An attacker with any authenticated session can craft a GET request to `/WeGIA/controle/control.php` with parameters `metodo=listarTodos`, `nomeClasse=InternoControle`, and `nextPage=https://evil.example.com/phish` [ref_id=1]. Because the middleware whitelist for `InternoControle` is empty, the permission check passes for any logged-in user [ref_id=1]. The application then issues a 302 redirect with a `Location` header pointing to the attacker-supplied URL, with no validation or restriction on the destination [ref_id=1]. This allows phishing, credential theft, and malware distribution under the trusted WeGIA domain.
Affected code
The vulnerability resides in `controle/InternoControle.php` in the `listarTodos()` method, which calls `header('Location: '.$nextPage)` using the unsanitized `nextPage` parameter from `$_REQUEST` [ref_id=1]. The middleware bypass occurs in `dao/MiddlewareDAO.php`: when the resource list for a class (e.g. `'InternoControle' => []`) is empty, the permission check defaults to `$permissao = true`, allowing any authenticated user to reach the vulnerable method [ref_id=1].
What the fix does
The patch in `dao/InternoDAO.php` (commit `ed34f005139db00467959dbbb6555c11069ae57c`) removes try-catch wrappers and cleans up formatting but does not directly address the open redirect in `InternoControle.php` or the middleware bypass in `MiddlewareDAO.php` [patch_id=2713912]. The advisory states the vulnerability is fixed in version 3.7.3, but the provided patch diff does not show the actual validation logic for `nextPage` or the middleware whitelist changes [ref_id=1]. The fix presumably adds URL validation on the `nextPage` parameter and/or restricts the resource list for `InternoControle` in the middleware configuration.
Preconditions
- authAttacker must have a valid authenticated session (any PHPSESSID)
- configApplication must be running WeGIA version <= 3.7.2
- networkAttacker must be able to send HTTP GET requests to the WeGIA server
- inputThe nextPage parameter must contain an arbitrary external URL
Reproduction
Send the following HTTP request with any valid authenticated session cookie:
``` GET /WeGIA/controle/control.php?metodo=listarTodos&nomeClasse=InternoControle&nextPage=https://google.com HTTP/1.1 Host: sec.wegia.org:8000 Cookie: PHPSESSID=<any authenticated session> ```
The server responds with a `302 Found` status and a `Location: https://google.com` header, redirecting the browser to the attacker-controlled destination [ref_id=1].
Generated on May 27, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
1News mentions
0No linked articles in our index yet.