Вопрос к старожилам возьмется ли кто проверить безвозмездно соответствие написанного кода тех.заданию код небольшой, поэтому времени много не отнимет А то у меня сомнения насчёт его работоспособности)) Для начала, если не трудно, прокомментируйте то что написано (желательно построчно ) $mbox = imap_open("{imap.server.ru:143}INBOX", "login", "pass"); or die("can't connect: ".imap_last_error()); function validation($id, $username, $nummer_fax, $list_fax, $mail, $subject){ $HOST = 'localhost'; $LOGIN = 'root'; $PASSWORD = ''; $DATABASE = 'test'; $TABLE = 'stat_fax'; $link = mysql_connect($HOST, $LOGIN, $PASSWORD); $db = mysql_select_db($DATABASE); $result = mysql_query("SELECT id FROM $TABLE WHERE (id=$id)AND(username=\"$username\")AND(nummer_fax=\"$nummer_fax\")"); if(mysql_fetch_assoc($result) == false){ $result = mysql_query("SELECT * FROM $TABLE WHERE id=$id"); if(mysql_affected_rows() != -1){ $data = mysql_fetch_assoc($result); $table_data = $data['id'].' '.$data['username'].' '.$data['nummer_fax'].' '.$data['list_fax']; send_mail($mail, $subject.' non', "$subject\n $table_data"); }else{ send_mail($mail, $subject, "$subject\n «Запись отсутствует»"); } }else{ mysql_query("UPDATE $TABLE SET list_fax=$list_fax WHERE id=$id"); send_mail($mail, $subject.' ok', ''); } mysql_close($link); }
переслал на email а вы скайпом не пользуетесь, так что б в режиме реального времени ??? и что б мне балбесу попонятней было )
$mbox = imap_open("{imap.server.ru:143}INBOX", "login", "pass"); то что здесь написано - в доку по imap_open or die("can't connect: ".imap_last_error()); написана полная лажа - зачем-то закрыли предыдущую операцию ";" function validation($id, $username, $nummer_fax, $list_fax, $mail, $subject){ ой, определили функцию $HOST = 'localhost'; ой, присвоили значение переменной. писать имена локальных переменных в верхнем регистре плохой тон. вы в этом плане комментариев ждете?
PHP: <?php $PASSWORD = ''; // присвоили переменной $PASSWORD значение $DATABASE = 'test'; // присвоили переменной $DATABASE значение $TABLE = 'stat_fax'; // присвоили переменной $TABLE значение $link = mysql_connect($HOST, $LOGIN, $PASSWORD); // соединились с сервером $db = mysql_select_db($DATABASE); //и выбрали базу данных $result = mysql_query("SELECT id FROM $TABLE WHERE (id=$id)AND(username=\"$username\")AND(nummer_fax=\"$nummer_fax\")"); //выполняем запрос где надо выбрать id равный заданному И username равное задонному и nummer_fax равное заданному ?> ещё 7 строчек готово!!
вот это самое главное! Запрос делаем, а заданных значений нет, правильно? или их можно определить потом потом нельзя, так как отправляем почту с результатами, так?
Вот часть тех задания а часть кода выше. По моему соответствия нет? ***************************************** При заходе на сервер ищем 1. письма примерно вот с такой темой 18 warm 8-123-1234567 2 или 2345 RybA 8-4567-234567 5 и т.п. и сравниваем с данными таблицы stat_fax (mysql): где, например, 18 – поле id warm – поле username 8-123-1234567 – поле nummer_fax 2 - поле list_fax Eсли полностью совпадают поля id, username, nummer_fax, то обновляем поле list_fax, подставляя значение из четвёртой части темы входящего письма. Отправляем на почтовый адрес $f_mail письмо с темой аналогичной теме входящего письма и в конце через пробел дописываем $fok = “ok”; То есть, получаем письмо примерно с такой темой 18 warm 8-123-1234567 2 ok Если поля id, username, nummer_fax в чём-то не совпадают, то отправляем на $f_mail письмо с темой аналогично теме входящего письма , только в конце через пробел дописываем в конце $fnon = “non”; получаем письмо примерно с такой темой 18 warm 8-123-1234567 2 non а в содержании письма пишем первой строкой тему входящего письма, второй строкой данные username, nummer_fax, list_fax из таблицы stat_fax соответствующие этому id получаем примерно с такое содержание 18 warm 8-123-1234567 2 18 primer 8-324-1162759 4 В том случае, если в таблице нет записи под этим id, то второй строкой пишем «Запись отсутствует»
тьфу ты.... это же всё функция... значит надо вызывать её с аргументами, которыми и являются нужные айди, юзер и т.д.
уже вторая страниц обсуждения пошла, а вывод так и не прозвучал. В начале первой страницы есть код, в конце - тех.задание. Они имеют отношение друг к другу или нет?
вот так? код целиком. Вопрос: он может выполнять первую часть тех.задания? PHP: <?php $mbox = imap_open("{imap.server.ru:143}INBOX", "login", "pass"); or die("can't connect: ".imap_last_error()); function validation($id, $username, $nummer_fax, $list_fax, $mail, $subject){ $HOST = 'localhost'; $LOGIN = 'root'; $PASSWORD = ''; $DATABASE = 'test'; $TABLE = 'stat_fax'; $link = mysql_connect($HOST, $LOGIN, $PASSWORD); $db = mysql_select_db($DATABASE); $result = mysql_query("SELECT id FROM $TABLE WHERE (id=$id)AND(username=\"$username\")AND(nummer_fax=\"$nummer_fax\")"); if(mysql_fetch_assoc($result) == false){ $result = mysql_query("SELECT * FROM $TABLE WHERE id=$id"); if(mysql_affected_rows() != -1){ $data = mysql_fetch_assoc($result); $table_data = $data['id'].' '.$data['username'].' '.$data['nummer_fax'].' '.$data['list_fax']; send_mail($mail, $subject.' non', "$subject\n $table_data"); }else{ send_mail($mail, $subject, "$subject\n «Запись отсутствует»"); } }else{ mysql_query("UPDATE $TABLE SET list_fax=$list_fax WHERE id=$id"); send_mail($mail, $subject.' ok', ''); } mysql_close($link); } function FS($id, $pages, $status, $list_fax){ $HOST = 'localhost'; $LOGIN = 'root'; $PASSWORD = ''; $DATABASE = 'test'; $TABLE = 'stat_fax'; $link = mysql_connect($HOST, $LOGIN, $PASSWORD); $db = mysql_select_db($DATABASE); if($list_fax === 0){ mysql_query("UPDATE $TABLE SET list_fax=$list_fax, status_fax=\"$id $pages $status\" WHERE id=$id"); }else{ mysql_query("UPDATE $TABLE SET status_fax=\"$id $pages $status\" WHERE id=$id"); } mysql_close($link); } function send_mail($to, $subject, $body){ imap_mail($to, $subject, $body); } function send_spam($subject, $body, $from){ $TO_SPAM = [email='spam@ya.ru]'spam@ya.ru[/email]'; imap_mail($TO_SPAM, $subject, $body, "From: $from"); } function decode_header($header){ $Subject = ''; $SubjectElements = imap_mime_header_decode($header); for($i=0;$i<count($SubjectElements);$i++) { $Charset = $SubjectElements[$i]->charset; $Subject .= $SubjectElements[$i]->text; } if($Charset == 'windows-1251'){ $Subject = convert_cyr_string($Subject, 'w', 'k'); } return mb_convert_encoding($Subject, "UTF8", "KOI8-R"); } function get_FAXID($mail, $FID){ $mail_body = split("\n", $mail); $FaxID = explode(':', $mail_body[$FID]); return substr($FaxID[1], 7, 3); } function get_PAGES_STATUS($mail, $FID){ $mail_body = split("\n", $mail); $DATA = explode(':', $mail_body[$FID]); return $DATA[1]; } $mbox = imap_("{imap.server.ru:143}INBOX", "login", "pass"); if($mbox !== false){ for($i=1; $i<=imap_num_msg($mbox); $i++){ $mail = imap_headerinfo($mbox, $i); //echo $mail->sender[0]->personal.'<br>'; $Subject = decode_header($mail->Subject); if($mail->sender[0]->personal === 'FaxService'){ //echo $Subject.'<br>'; $data = explode(" ", $Subject); if(count($data) == 4){ validation($data[0], $data[1], $data[2], $data[3], $mail->sender[0]->mailbox.'@'.$mail->sender[0]->host, $mail->Subject); }else{ if(stristr($Subject, 'NOT SENT') != false){ FS(get_FAXID(imap_body($mbox, $i), 21), get_PAGES_STATUS(imap_body($mbox, $i), 23), get_PAGES_STATUS(imap_body($mbox, $i), 24), 0); }elseif(stristr($Subject, 'successfully sent') != false){ FS(get_FAXID(imap_body($mbox, $i), 25), get_PAGES_STATUS(imap_body($mbox, $i), 27), get_PAGES_STATUS(imap_body($mbox, $i), 28), 1); }else{ send_spam($Subject, imap_body($mbox, $i), $mail->sender[0]->mailbox.'@'.$mail->sender[0]->host); } } }else{ send_spam($Subject, imap_body($mbox, $i), $mail->sender[0]->mailbox.'@'.$mail->sender[0]->host); } echo '<hr>'; imap_delete($mbox, 1); } }else{ echo 'Ошибка соединения с почтовым ящиком!!!'; } imap_expunge($mbox); imap_close($mbox); ?> [/code]
имеют. Самое непосредственное. Показанный скрипт соответствует ТЗ на 2/3. Реализован поиск по базе и генерирование соответствующего письма. Но здесь нет поиска писем с подходящей темой на почтовом сервере. +Вы не показали функции для отправки почты. Хотя, это, думаю, лучше проверить фактом прихода писем. P.$. Скажите, пожалуйста, это вы таким образом проверяете сделанный на заказ скрипт? Я имею ввиду, сделанный для вас. Почему бы не проверить его в реальных условиях? Разместить на серваке несколько писем с возможными вариантами и посмотреть, что сделает скрипт. P.P.$. й:shock:пт. Это сообщение - про скрипт в первом посте.
В реальных условиях он не работает. Исполнитель утверждает, что скрипт рабочий. Я, как блондин, пытался всячески его заставить выполнять необходимые действия, но всё в пустую. Поэтому и обратился за помощью в разрешении вопроса.
да, кстати, в последнем коде из второй строки уберите в конце точку с запятой. И в 25й строке к $subject допишите .' non' (как на строку выше)