Pergunta

Estou construindo uma caixa de correio POP3 no PHP. Eu tenho as seguintes arquivos :

  • server_access.php (buscar mails do servidor POP3)
  • data_access.php (que lê / escreve mails para DB local)
  • mime_parser.php (parses MIME conteúdo)
  • core.php (utilizações acima arquivos e armazena correio analisado como uma matriz assoc chamado $ caixa de entrada)

Agora, tenho o páginas mailbox.php para mostrar a caixa de entrada e showmail.php para exibir cada mail. as credenciais do usuário são armazenados em um arquivo .ini e usado conforme necessário. A coisa é, eu faço um require_once ( 'core.php') em ambos mailbox.php e em showmail.php

Eu sou capaz de exibir a caixa de entrada (ie. $ Caixa de entrada tem valores), no entanto, se eu selecionar para ler um e-mail (janela de showmail.php pop-up), a US $ caixa de entrada é uma matriz vazia.

$ caixa de entrada é definir como uma matriz estática em core.php

Foi útil?

Solução

Os dados estáticos só é estática dentro do contexto de uma classe, o que significa um membro de dados estáticos em uma classe é compartilhada por todas as instâncias dessa classe.

O que você parece estar falando é de dados persistentes nas várias solicitações HTTP. dados estáticos não vai fazer isso por você. Isso é o que $ _SESSION dados é para.

Para colocar de outra forma: uma vez um script acabamentos atende o pedido atual, completamente morre. Todos os dados são tive está completamente limpo. O novo pedido começa fresco.

persiste dados sessão até PHP decide limpá-lo ou destruí-lo manualmente. Normalmente tudo que você precisa fazer para usar os dados da sessão é colocado em seu script:

Script 1: mailbox.php

session_start();
$_SESSION['mailbox'] = array( /* messages */ );

Script 2: showmail.php

session_start();
$mailbox = $_SESSION['mailbox'];

Uma coisa a nota: se o seu script é longa tentar colocar um session_commit () in o mais cedo possível, porque bloqueia o acesso da sessão em PHP, ou seja, se um outro script tenta session_start () para o mesmo usuário, ele irá bloquear até os primeiros acabamentos de script execução ou libera a sessão.

Outras dicas

php Sessões precisa de um lugar para armazenar dados de sessão entre solicitações. No seu caso é um temp php sessão pasta \ \ \ em seu diretório home. Quer criar essa pasta ou mudança session.save_path no php.ini para apontar para um diretório válido.

Se o seu arquivo core fornece os dados corretos para mailbox.php, mas não showmail.php está relacionado com algo que você está (ou não está) fazendo em showmail.php.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top