Я создаю почтовый ящик POP3 в PHP. У меня есть следующие файлы :
Теперь у меня есть страницы mailbox.php, чтобы показать входящие и showmail.php для отображения каждой почты. Учетные данные пользователя хранятся в файле .ini и используются по мере необходимости. Дело в том, что я делаю require_once ('core.php') как в mailbox.php, так и в showmail.php
Я могу отображать почтовый ящик (т. Е. $ Inbox имеет значения), однако, если я выбираю читать почту (всплывающее окно showmail.php), $ inbox – пустой массив.
$ inbox определяется как статический массив в core.php
Статические данные статичны только в контексте класса, что означает, что статический член данных в классе разделяется всеми экземплярами этого класса.
То, о чем вы, похоже, говорите, – это данные, сохраняющиеся в нескольких HTTP-запросах. Статические данные не сделают этого для вас. Вот для чего нужны данные $ _SESSION.
Иначе говоря: когда скрипт заканчивает обслуживание текущего запроса, он полностью умирает. Все данные были полностью очищены. Новый запрос начинается с нового.
Данные сеанса сохраняются до тех пор, пока PHP не решит его очистить или вы не уничтожите вручную. Как правило, все, что вам нужно сделать, чтобы использовать данные сеанса, помещается в ваш скрипт:
Сценарий 1: mailbox.php
session_start(); $_SESSION['mailbox'] = array( /* messages */ );
Сценарий 2: showmail.php
session_start(); $mailbox = $_SESSION['mailbox'];
Одно замечание: если ваш сценарий длительный, попробуйте и поставите session_commit () как можно скорее, потому что блоки доступа к сеансу в PHP, то есть если другой скрипт пытается session_start () для того же пользователя, он будет блокироваться до первого сценарий завершает выполнение или освобождает сеанс.
Для сеансов php требуется место для хранения данных сеанса между запросами. В вашем случае это папка temp \ php \ session \ в вашем домашнем каталоге. Либо создайте эту папку, либо измените параметр session.save_path в php.ini, чтобы указать на действительный каталог.
Если ваш core
файл предоставляет правильные данные почтовому ящику.php, но не showmail.php, это связано с тем, что вы (или не используете) в showmail.php.