Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problema com Cookie


Rafael Laurindo

Pergunta

Pessoal, deêm uma olhada neste script

MatriculaDAO.php

<?php

 include_once 'Main.php';

 class MatriculaDAO
 {
     
     private
         $TO,
         $_db;
     
     public function __construct()
     {
         //cria a conexão com o banco de dados, criar sempre com singleton
         $main = Main::getInstance();
         $this->_db = $main->__get('_conn');
         $this->TO = new MatriculaTO();
     }
     
     private function obterDds()
     {
         $this->TO->setId_disciplina($_POST['cbDisciplina']);
     }
     
     private function definirCookies(){
         $sec = 60;
         setcookie('pessoaNome', $_POST['txtNome'], time() + $sec);
     }
         
     public function adicionar()
     {
         $this->_db->beginTransaction();
             $this->obterDds();
             $this->definirCookies();
             $pessoa = new PessoaDAO();
             
             if (!$pessoa->adicionar())
                 $this->_db->rollBack();
                 
             $select = "
                 select max(id)
                 from pessoa
             ";
             $id_pessoa = $this->_db->query($select)->fetchColumn();
             
             $data = strftime('%d/%m');
             $hora = strftime('%H:%M:%S');
             $ano = strftime('%Y');
             $id_disciplina = $this->TO->getId_disciplina();
             $cod = $this->gerar_codMatricula($_POST['cbDisciplina']);
             $add = "
                 insert into matricula(id, ano, id_instrumento, data, hora, ativo, id_pessoa)
                 values(NULL, '$ano', '$id_disciplina', '$data', '$hora', 1, '$id_pessoa')
             ";
             $stmt = $this->_db->prepare($add);
             if ($stmt->execute()){
                 header("Location: http://localhost/esplendor/matricula/confirm_matricula.php");
             }
             else
                 $this->_db->rollBack();
         $this->_db->commit();
     }
 }
confirm_matricula.php
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>SIMESP</title>
</head>
<body>
    <b>Nome: </b> <?php echo $_COOKIE['pessoaNome']; ?>
    <br />
    <b>Data da matrícula: </b> <font size="4pt"><?php //echo $_COOKIE['teste'] ?></font>
    <br />
    <b>Hora: </b> <?php //echo $_COOKIE['horaMatricula'] ?>
</body>
</html>

Os dados são gravados no banco normalmente, mas o cookie não é mostrado na página confirm_matricula.php

Alguém poderia me ajudar

Editado por Rafael Laurindo
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Chamo ela dentro do método adicionar, como na classe.

public function adicionar()

{

$this->_db->beginTransaction();

$this->obterDds();

$this->definirCookies();

$pessoa = new PessoaDAO();

if (!$pessoa->adicionar())

$this->_db->rollBack();

$select = "

select max(id)

from pessoa

";

$id_pessoa = $this->_db->query($select)->fetchColumn();

$data = strftime('%d/%m');

$hora = strftime('%H:%M:%S');

$ano = strftime('%Y');

$id_disciplina = $this->TO->getId_disciplina();

$cod = $this->gerar_codMatricula($_POST['cbDisciplina']);

$add = "

insert into matricula(id, ano, id_instrumento, data, hora, ativo, id_pessoa)

values(NULL, '$ano', '$id_disciplina', '$data', '$hora', 1, '$id_pessoa')

";

$stmt = $this->_db->prepare($add);

if ($stmt->execute()){

header("Location: http://localhost/esplendor/matricula/confi...ula.php");

}

else

$this->_db->rollBack();

$this->_db->commit();

}

Editado por Rafael Laurindo
Link para o comentário
Compartilhar em outros sites

  • 0

Testei e não funcionou, o engraçado é que eu abro o Firefox --> Ferramentas --> Opções --> Aba "Privacidade" --> botão "Exibir cookies" e o maldito está lá, com o seu nome e valor. Só Jesus nessa causa aí eim, huahuaha. Será um bug do PHP? Por que eu do refresh na página confirm_matricula.php com F5 com Ctrl + F5 e nada aparece nessa jossa.

Está aparecendo isso na página

Nome:

Notice: Undefined index: pessoaNome in C:\usr\bin\apache\htdocs\esplendor\matricula\confirm_matricula.php on line 9

Matricula:

Data da matrícula:

Hora:

Editado por Rafael Laurindo
Link para o comentário
Compartilhar em outros sites

  • 0

Descobri o que é, o parâmetro path quando omitido, o cookie fica visível apenas no mesmo path onde foi criado, como falam no link http://br2.php.net/manual/pt_BR/function.setcookie.php

Eu estava estudando sobre cookie no js, desenvolvi um objeto e tudo mais, e não dei muita atenção para a correta sintaxe, não lendo atentamente sobre caminho que estava no manual, achando assim que poderia omiti-lo que o padrão é '/', mas lendo atentamente vi que o padrão é '.' (ponto), ou seja, visível no mesmo diretório.

Ao meu ver, o padrão devia ser '/', então fiz uma classe modificando a função setcookie, podendo assim omitir o expires e o path.

Por tanto, ao lerem o manual, tente ler atentamente sobre todos os parâmetros de um método, caso de erro, tente outros caminhos, tente usar mais parâmetros, pois às vezes achamos que uns podem ser omitidos. Demorei para entender isso, mas finalmente percebi.

Abraço a todos, Deus os abençoe.

Editado por Rafael Laurindo
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...