variáveis ??estáticas PHP em várias páginas .php
-
03-07-2019 - |
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
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.