http://blagtalkan.ru
http://oktpoisk.ru
http://mysorru.ru/
http://san-okt.ru/
http://pes6evolution.ru/
http://chasikigov.ru
http://serafimsovet.ru
http://filmsgov.ru
http://free-domen.ru
http://fithonda.ru/forums/index.php
http://avtogov.ru
http://www.1001bilet.com.ua/base/on-line/
http://pravilavoini.ru
http://school41ufa.ru
http://rusrav4.ru
AjaxMailAction.php | Книга AJAX
 

Сценарий AjaxMailAction.php - это один из сценариев, испол клиентом для выполнения различных действий. При создании: сценария важно не забыть подключить к нему все необходимые! лы. В сценарии используется класс AjaxMailbox, поэтому придется] ключить довольно много файлов, в том числе config.inc.php, файла библиотеки P0P3Lib, AjaxMail. inc. php и JSON. php:
require_once("inc/config.inc.php"); require_once("inc/pop31ib/pop3.class, php"); require_once("inc/pop31ib/pop3message.class.php"); require_once("inc/pop31ib/pop3header.class.php"); • requi re_once("inc/pop31ib/pop3attachment.class, php"); require_once("inc/AjaxMail,inc.php"); require_once("inc/JSON.php");
Также необходимо определить несколько заголовков:
Первый заголовок определяет тип выходных данных как text/plain, потому что данный сценарий возвращает строку в формате JSON, а не HTML или XML. Этот сценарий будет вызываться многократно, поэто¬му, чтобы избежать отображения некорректных данных на стороне клиента, в него необходимо добавить заголовок No-Cache, о котором рассказывалось в главе 3.
При обращении к сценарию Aj axMailAction. php ему передаются по край¬ней мере три параметра: действие, которое необходимо выполнить, чи¬словой идентификатор текущей папки и номер страницы. Для выпол¬нения некоторых действий потребуется передавать четвертый пара¬метр - числовой идентификатор сообщения. Строка запроса, отправ¬ляемая этому сценарию, может выглядеть примерно так:
' AjaxMailAction.php?action=myAction&page=1&folder=18id=123
Поскольку идентификатор сообщения будет использоваться только для выполнения ограниченного круга действий, мы пока не будем из¬влекать его. Зато другие три параметра можно извлечь в самом начале:
.... Sfolder = $_GET["folder"]; '; Spage = (int) $_GET["page"]; Saction = $_GET["action"];
В данном фрагменте параметры, содержащиеся в строке запроса, пере¬писываются в переменные. Для совместимости с методами класса AjaxMailbox номер страницы приводится к целому типу. После этого создаются экземпляры классов AjaxMailbox и JSON, а заодно и перемен¬ная с именем Soutput, куда будет записана строка в формате JSON:
$mailbox = new AjaxMailboxO; SoJSON = new JS0N(); v Soutput =
На следующем шаге необходимо выполнить требуемое действие. Опре¬делить, какое именно действие было запрошено, нетрудно с помощью оператора множественного выбора switch. Два из всех предусмотренных действий требуют передачи значения идентификатора сообщения; это операции delete и restore:
switch($action) { case "delete":
$mallbox->deleteMessage($_GET["id"]); break; case "restore": - «л • $mailbox->restoreMessage($_GETf,"id"]);
break; case "empty":
$mailbox->emptyTrash();
break; case "getfolder":
'Х'^"::-Ф:^ II не требует выполнения каких-либо дополнительных действий break;
' .-7 * х7 7' 7;/7 Д "*;7 '-:;и '?7777'®*77; ^.'
Данный фрагмент выполняет конкретную операцию, основ назначении параметра Saction. Если запрошена операция delete»i зывается метод deleteMessage(), которому передается числовой ] фикатор сообщения. Для выполнения операции restore вызь метод restoreMessageO, которому также передается идентифив общения. Если запрошена операция empty, вызывается метод Trash(). В противном случае, даже если запрошена операция getf никакие дополнительные действия не выполняются, поскольку < рий Aj axMailAction. php всегда возвращает информацию о папке i симо от выполняемой операции:
$info = $mailbox->getFolderPage($folder, Spage); Soutput = $oJSON->encode($info); echo Soutput;
Здесь для получения списка сообщений, возвращаемого клиенту,! зывается метод getFolderPage(). Как вы наверняка помните, этап проверяет наличие новых сообщений, прежде чем вернуть спис ким образом, у пользователя всегда будет самая свежая инфор о состоянии почтового ящика. Результат, возвращаемый методов j FolderPageO, преобразуется в строку JSON с помощью метода: encode() и затем оператором echo отправляется клиенту.