Question

Je construis une boîte aux lettres POP3 en PHP. J'ai les fichiers suivants:

  • server_access.php (récupération des mails du serveur POP3)
  • data_access.php (qui récupère / écrit les mails dans la base de données locale)
  • mime_parser.php (analyse le contenu MIME)
  • core.php (utilise les fichiers ci-dessus et stocke le courrier analysé sous la forme d'un tableau associé appelé $ inbox)

J'ai maintenant les pages mailbox.php pour afficher la boîte de réception et showmail.php pour afficher chaque courrier. Les informations d'identification de l'utilisateur sont stockées dans un fichier .ini et utilisées selon les besoins. Le fait est que je fais un require_once ('core.php') dans mailbox.php et showmail.php

.

Je suis en mesure d’afficher la boîte de réception (c’est-à-dire que $ inbox a des valeurs). Toutefois, si je choisis de lire un courrier (fenêtre contextuelle de showmail.php), la boîte de réception $ est un tableau vide.

$ inbox est défini comme un tableau statique dans core.php

Était-ce utile?

La solution

Les données statiques sont uniquement statiques dans le contexte d'une classe, ce qui signifie qu'un membre de données statique dans une classe est partagé par toutes les instances de cette classe.

Vous semblez parler de la persistance de données dans plusieurs requêtes HTTP. Les données statiques ne le feront pas pour vous. C’est à cela que servent les données $ _SESSION.

En d'autres termes: une fois qu'un script a fini de répondre à la demande en cours, il meurt complètement. Toutes les données sont eu est complètement nettoyé. La nouvelle demande commence à zéro.

Les données de session persistent jusqu'à ce que PHP décide de les nettoyer ou de les détruire manuellement. En règle générale, tout ce que vous avez à faire pour utiliser les données de session est placé dans votre script:

Script 1: mailbox.php

session_start();

Les données statiques sont uniquement statiques dans le contexte d'une classe, ce qui signifie qu'un membre de données statique dans une classe est partagé par toutes les instances de cette classe.

Vous semblez parler de la persistance de données dans plusieurs requêtes HTTP. Les données statiques ne le feront pas pour vous. C’est à cela que servent les données $ _SESSION.

En d'autres termes: une fois qu'un script a fini de répondre à la demande en cours, il meurt complètement. Toutes les données sont eu est complètement nettoyé. La nouvelle demande commence à zéro.

Les données de session persistent jusqu'à ce que PHP décide de les nettoyer ou de les détruire manuellement. En règle générale, tout ce que vous avez à faire pour utiliser les données de session est placé dans votre script:

Script 1: mailbox.php

session_start();
$mailbox = 

Les données statiques sont uniquement statiques dans le contexte d'une classe, ce qui signifie qu'un membre de données statique dans une classe est partagé par toutes les instances de cette classe.

Vous semblez parler de la persistance de données dans plusieurs requêtes HTTP. Les données statiques ne le feront pas pour vous. C’est à cela que servent les données $ _SESSION.

En d'autres termes: une fois qu'un script a fini de répondre à la demande en cours, il meurt complètement. Toutes les données sont eu est complètement nettoyé. La nouvelle demande commence à zéro.

Les données de session persistent jusqu'à ce que PHP décide de les nettoyer ou de les détruire manuellement. En règle générale, tout ce que vous avez à faire pour utiliser les données de session est placé dans votre script:

Script 1: mailbox.php

session_start();

Les données statiques sont uniquement statiques dans le contexte d'une classe, ce qui signifie qu'un membre de données statique dans une classe est partagé par toutes les instances de cette classe.

Vous semblez parler de la persistance de données dans plusieurs requêtes HTTP. Les données statiques ne le feront pas pour vous. C’est à cela que servent les données $ _SESSION.

En d'autres termes: une fois qu'un script a fini de répondre à la demande en cours, il meurt complètement. Toutes les données sont eu est complètement nettoyé. La nouvelle demande commence à zéro.

Les données de session persistent jusqu'à ce que PHP décide de les nettoyer ou de les détruire manuellement. En règle générale, tout ce que vous avez à faire pour utiliser les données de session est placé dans votre script:

Script 1: mailbox.php

<*>

Script 2: showmail.php

<*>

Une chose à noter: si votre script est long, essayez de mettre un session_commit () dans dès que possible car l'accès à la session est bloqué en PHP, ce qui signifie que si un autre script tente de session_start () pour le même utilisateur, il sera bloqué jusqu'à ce que le premier script ait terminé l'exécution ou la libération de la session.

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

Script 2: showmail.php

<*>

Une chose à noter: si votre script est long, essayez de mettre un session_commit () dans dès que possible car l'accès à la session est bloqué en PHP, ce qui signifie que si un autre script tente de session_start () pour le même utilisateur, il sera bloqué jusqu'à ce que le premier script ait terminé l'exécution ou la libération de la session.

SESSION['mailbox'];

Script 2: showmail.php

<*>

Une chose à noter: si votre script est long, essayez de mettre un session_commit () dans dès que possible car l'accès à la session est bloqué en PHP, ce qui signifie que si un autre script tente de session_start () pour le même utilisateur, il sera bloqué jusqu'à ce que le premier script ait terminé l'exécution ou la libération de la session.

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

Script 2: showmail.php

<*>

Une chose à noter: si votre script est long, essayez de mettre un session_commit () dans dès que possible car l'accès à la session est bloqué en PHP, ce qui signifie que si un autre script tente de session_start () pour le même utilisateur, il sera bloqué jusqu'à ce que le premier script ait terminé l'exécution ou la libération de la session.

Autres conseils

Les sessions php ont besoin d’un emplacement pour stocker les données de session entre les demandes. Dans votre cas, il s’agit d’un dossier temp \ php \ session \ de votre répertoire personnel. Créez ce dossier ou changez session.save_path dans php.ini pour qu'il pointe vers un répertoire valide.

Si votre fichier core fournit les bonnes données à mailbox.php, mais pas à showmail.php, il est lié à quelque chose que vous faites (ou ne faites pas) dans showmail.php.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top