У меня есть следующий кусок кода, который открывает поток imap:
<?php
session_name('mysession');
session_start();
$mailbox = "{my_mailbox_name}";
$username = (isset($_POST['username'])) ? $_POST['username'] : null;
$password = (isset($_POST['password'])) ? $_POST['password'] : null;
$_SESSION['loggedin'] = false;
if(isset($username) && isset($password)){
if($_SESSION['imapStream'] = imap_open($mailbox,$username,$password)){
$_SESSION['loggedin'] = true;
} else {
$_SESSION['imapStream'] = null;
}
}
$errorArray = imap_errors();
header("Location: ./");
exit;
?>
Однако всякий раз, когда я пытаюсь использовать переменную $ _SESSION [‘imapStream’] где-то еще в моем коде, я получаю такие ошибки:
Warning: imap_num_msg() expects parameter 1 to be resource, integer given in /www/...
Warning: imap_fetch_overview() expects parameter 1 to be resource, integer given in /www/...
Warning: imap_close() expects parameter 1 to be resource, integer given in /www/...
Я пытался сериализовать и десериализовать переменную, но это тоже не работает. Любой совет?
РЕДАКТИРОВАТЬ: Добавлен пример того, как я использую это в моем другом коде:
<?php
session_name('mysession');
session_start();
if(isset($_SESSION['loggedin']) && isset($_SESSION['imapStream'])){
$number_of_messages = imap_num_msg($_SESSION['imapStream']);
$msgArray = imap_fetch_overview($_SESSION['imapStream'], "1:{$number_of_messages}");
imap_close($_SESSION['imapStream']);
}
?>
Задача ещё не решена.
Других решений пока нет …