Pregunta

Estoy creando un buzón de correo POP3 en PHP. Tengo los siguientes archivos :

  • server_access.php (recupera correos desde el servidor POP3)
  • data_access.php (que busca / escribe correos en la base de datos local)
  • mime_parser.php (analiza el contenido MIME)
  • core.php (usa los archivos anteriores y almacena el correo analizado como una matriz assoc llamada $ bandeja de entrada)

Ahora, tengo las páginas buzón.php para mostrar la bandeja de entrada y showmail.php para mostrar cada correo. Las credenciales del usuario se almacenan en un archivo .ini y se usan según sea necesario. La cosa es que hago un require_once ('core.php') tanto en el buzón.php como en showmail.php

Puedo mostrar la bandeja de entrada (es decir,. $ bandeja de entrada tiene valores), sin embargo, si selecciono leer un correo (ventana emergente de showmail.php), la bandeja de entrada $ es una matriz vacía.

$ inbox se define como una matriz estática en core.php

¿Fue útil?

Solución

Los datos estáticos solo son estáticos dentro del contexto de una clase, lo que significa que todas las instancias de esa clase comparten un miembro de datos estáticos en una clase.

De lo que parece estar hablando es de los datos que persisten en múltiples solicitudes HTTP. Los datos estáticos no harán eso por ti. Para eso están los datos de $ _SESSION.

Para decirlo de otra manera: una vez que un script termina de atender la solicitud actual, muere por completo. Todos los datos que se tienen están completamente limpios. La nueva solicitud comienza de nuevo.

Los datos de la sesión persisten hasta que PHP decide limpiarlos o la destruyes manualmente. Normalmente, todo lo que tiene que hacer para usar los datos de la sesión se incluye en su script:

Script 1: buzón.php

session_start();

Los datos estáticos solo son estáticos dentro del contexto de una clase, lo que significa que todas las instancias de esa clase comparten un miembro de datos estáticos en una clase.

De lo que parece estar hablando es de los datos que persisten en múltiples solicitudes HTTP. Los datos estáticos no harán eso por ti. Para eso están los datos de $ _SESSION.

Para decirlo de otra manera: una vez que un script termina de atender la solicitud actual, muere por completo. Todos los datos que se tienen están completamente limpios. La nueva solicitud comienza de nuevo.

Los datos de la sesión persisten hasta que PHP decide limpiarlos o la destruyes manualmente. Normalmente, todo lo que tiene que hacer para usar los datos de la sesión se incluye en su script:

Script 1: buzón.php

session_start();
$mailbox = 

Los datos estáticos solo son estáticos dentro del contexto de una clase, lo que significa que todas las instancias de esa clase comparten un miembro de datos estáticos en una clase.

De lo que parece estar hablando es de los datos que persisten en múltiples solicitudes HTTP. Los datos estáticos no harán eso por ti. Para eso están los datos de $ _SESSION.

Para decirlo de otra manera: una vez que un script termina de atender la solicitud actual, muere por completo. Todos los datos que se tienen están completamente limpios. La nueva solicitud comienza de nuevo.

Los datos de la sesión persisten hasta que PHP decide limpiarlos o la destruyes manualmente. Normalmente, todo lo que tiene que hacer para usar los datos de la sesión se incluye en su script:

Script 1: buzón.php

session_start();

Los datos estáticos solo son estáticos dentro del contexto de una clase, lo que significa que todas las instancias de esa clase comparten un miembro de datos estáticos en una clase.

De lo que parece estar hablando es de los datos que persisten en múltiples solicitudes HTTP. Los datos estáticos no harán eso por ti. Para eso están los datos de $ _SESSION.

Para decirlo de otra manera: una vez que un script termina de atender la solicitud actual, muere por completo. Todos los datos que se tienen están completamente limpios. La nueva solicitud comienza de nuevo.

Los datos de la sesión persisten hasta que PHP decide limpiarlos o la destruyes manualmente. Normalmente, todo lo que tiene que hacer para usar los datos de la sesión se incluye en su script:

Script 1: buzón.php

<*>

Script 2: showmail.php

<*>

Una cosa a tener en cuenta: si su script es de larga duración, intente poner un session_commit () tan pronto como sea posible porque el acceso a la sesión se bloquea en PHP, lo que significa que si otro script intenta session_start () para el mismo usuario, bloqueará hasta que el primer script termine de ejecutarse o libere la sesión.

SESSION['mailbox'] = array( /* messages */ );

Script 2: showmail.php

<*>

Una cosa a tener en cuenta: si su script es de larga duración, intente poner un session_commit () tan pronto como sea posible porque el acceso a la sesión se bloquea en PHP, lo que significa que si otro script intenta session_start () para el mismo usuario, bloqueará hasta que el primer script termine de ejecutarse o libere la sesión.

SESSION['mailbox'];

Script 2: showmail.php

<*>

Una cosa a tener en cuenta: si su script es de larga duración, intente poner un session_commit () tan pronto como sea posible porque el acceso a la sesión se bloquea en PHP, lo que significa que si otro script intenta session_start () para el mismo usuario, bloqueará hasta que el primer script termine de ejecutarse o libere la sesión.

SESSION['mailbox'] = array( /* messages */ );

Script 2: showmail.php

<*>

Una cosa a tener en cuenta: si su script es de larga duración, intente poner un session_commit () tan pronto como sea posible porque el acceso a la sesión se bloquea en PHP, lo que significa que si otro script intenta session_start () para el mismo usuario, bloqueará hasta que el primer script termine de ejecutarse o libere la sesión.

Otros consejos

sesiones de php necesita un lugar para almacenar datos de sesión entre solicitudes. En su caso, es una carpeta temporal \ php \ session \ en su directorio de inicio. Cree esa carpeta o cambie session.save_path en php.ini para apuntar a un directorio válido.

Si su archivo core proporciona los datos correctos a buzón.php, pero no showmail.php está relacionado con algo que está (o no) haciendo en showmail.php.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top