Frage

Ich baue ein POP3-Postfach in PHP. Ich habe folgende Dateien :

  • server_access.php (Fetch Mails vom POP3-Server)
  • data_access.php (die abruft / schreibt Mails an lokale DB)
  • mime_parser.php (parst MIME-Content)
  • core.php (verwendet oben genannten Dateien und speichert Mail als Assoc-Array namens $ Posteingang analysiert)

Nun, ich habe die Seiten mailbox.php den Posteingang und showmail.php zu zeigen, jede E-Mail angezeigt werden soll. Die Anmeldeinformationen des Benutzers werden in einer INI-Datei und als notwendig gespeichert. Die Sache ist, ich habe einen require_once ( 'core.php') in beide mailbox.php und in showmail.php

Ich kann den Posteingang angezeigt werden (dh. $ Inbox haben Werte), aber wenn ich wählen Sie eine E-Mail (Pop-up-Fenster von showmail.php), der $ Posteingang ist ein leeres Array zu lesen.

$ Inbox ist als statisches Array in core.php definieren

War es hilfreich?

Lösung

Statische Daten sind nur statisch im Rahmen einer Klasse, ein statisches Datenelement in einer Klasse bedeutet, von allen Instanzen dieser Klasse geteilt wird.

Was scheinen Sie zu sprechen ist, Daten über mehrere HTTP-Anfragen persistierenden. Statische Daten werden Sie das nicht für Sie. Das ist, was $ _SESSION Daten für.

Um es anders auszudrücken: Sobald ein Skript, um die aktuelle Anforderung beendet Wartung, es vollständig stirbt. Alle Daten werden musste komplett gereinigt. Die neue Anforderung beginnt frisch.

Session-Daten besteht, bis PHP zu reinigen entscheidet oder Sie manuell zerstören. Typischerweise in Ihrem Skript gesetzt wird alles, was Sie tun müssen, um Sitzungsdaten zu verwenden:

Script 1: mailbox.php

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

Script 2: showmail.php

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

Eine Sache zu beachten: Wenn Ihr Skript ist lang andauernde Versuch und legte eine session_commit () in so schnell wie möglich, weil Sitzungszugriffsblöcke in PHP, das heißt, wenn ein anderes Skript zu session_start versucht () für den gleichen Benutzer es blockiert bis das erste Skript beendet Ausführung oder gibt die Sitzung.

Andere Tipps

PHP Sessions benötigen einen Platz Sitzungsdaten zwischen den Anfragen zu speichern. In Ihrem Fall ist es ein temp \ php \ Session \ Ordner in Ihrem Home-Verzeichnis. Entweder erstellen Sie diesen Ordner oder Änderung session.save_path in php.ini auf ein gültiges Verzeichnis zu verweisen.

Wenn Sie Ihre core Datei die richtigen Daten mailbox.php bietet, aber nicht showmail.php es etwas verwandt ist Sie sind (oder nicht) tun in showmail.php.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top