За последние 24 часа нас посетили 18022 программиста и 1649 роботов. Сейчас ищут 1734 программиста ...

помощь в проверке написанного кода тех.заданию

Тема в разделе "Вопросы от блондинок", создана пользователем warm, 6 авг 2007.

  1. warm

    warm Активный пользователь

    С нами с:
    31 янв 2007
    Сообщения:
    74
    Симпатии:
    0
    Вопрос к старожилам
    возьмется ли кто проверить безвозмездно :) соответствие написанного кода тех.заданию
    код небольшой, поэтому времени много не отнимет
    А то у меня сомнения насчёт его работоспособности:)))

    Для начала, если не трудно, прокомментируйте то что написано (желательно построчно :))

    $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);
    }
     
  2. Davil

    Davil Guest

    В студию пожалста.
     
  3. warm

    warm Активный пользователь

    С нами с:
    31 янв 2007
    Сообщения:
    74
    Симпатии:
    0
    переслал на email

    а вы скайпом не пользуетесь, так что б в режиме реального времени ???
    и что б мне балбесу попонятней было :))
     
  4. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    $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';
    ой, присвоили значение переменной. писать имена локальных переменных в верхнем регистре плохой тон.

    вы в этом плане комментариев ждете?
     
  5. warm

    warm Активный пользователь

    С нами с:
    31 янв 2007
    Сообщения:
    74
    Симпатии:
    0
    ну я же блондин :))
     
  6. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Ладно, я 4 строчки откамментил, подождем следующего старожила
     
  7. basist

    basist Активный пользователь

    С нами с:
    7 июл 2007
    Сообщения:
    388
    Симпатии:
    0
    Адрес:
    Орел
    PHP:
    1. WHERE (id==$id)
    ну и там дальше также....
     
  8. warm

    warm Активный пользователь

    С нами с:
    31 янв 2007
    Сообщения:
    74
    Симпатии:
    0
    разницу вижу, а к чему это :)
     
  9. basist

    basist Активный пользователь

    С нами с:
    7 июл 2007
    Сообщения:
    388
    Симпатии:
    0
    Адрес:
    Орел
    PHP:
    1.  
    2. <?php
    3. $PASSWORD = '';       // присвоили переменной $PASSWORD значение
    4. $DATABASE = 'test';   // присвоили переменной $DATABASE значение
    5. $TABLE = 'stat_fax';   // присвоили переменной $TABLE значение
    6.  
    7. $link = mysql_connect($HOST, $LOGIN, $PASSWORD);   // соединились с сервером
    8. $db = mysql_select_db($DATABASE);
    9. //и выбрали базу данных
    10. $result = mysql_query("SELECT id FROM $TABLE WHERE                                         (id=$id)AND(username=\"$username\")AND(nummer_fax=\"$nummer_fax\")");   //выполняем запрос  где надо выбрать id равный заданному И username равное задонному и  nummer_fax равное заданному
    11. ?>
    12.  
    ещё 7 строчек готово!! ;)
     
  10. warm

    warm Активный пользователь

    С нами с:
    31 янв 2007
    Сообщения:
    74
    Симпатии:
    0
    вот это самое главное!
    Запрос делаем, а заданных значений нет, правильно? или их можно определить потом :)
    потом нельзя, так как отправляем почту с результатами, так?
     
  11. basist

    basist Активный пользователь

    С нами с:
    7 июл 2007
    Сообщения:
    388
    Симпатии:
    0
    Адрес:
    Орел
    к тому, что "=" - это присваивание
     
  12. basist

    basist Активный пользователь

    С нами с:
    7 июл 2007
    Сообщения:
    388
    Симпатии:
    0
    Адрес:
    Орел
    каких значений??? я чё-то не понимаю
     
  13. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    basist, какое ещё присваивание в sql? :)
     
  14. basist

    basist Активный пользователь

    С нами с:
    7 июл 2007
    Сообщения:
    388
    Симпатии:
    0
    Адрес:
    Орел
    dark-demon
    гы.... во я блондин....
    надо чистым воздухом подышать сходить.....
     
  15. warm

    warm Активный пользователь

    С нами с:
    31 янв 2007
    Сообщения:
    74
    Симпатии:
    0
    Вот часть тех задания а часть кода выше.
    По моему соответствия нет?
    *****************************************
    При заходе на сервер ищем

    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, то второй строкой пишем «Запись отсутствует»
     
  16. basist

    basist Активный пользователь

    С нами с:
    7 июл 2007
    Сообщения:
    388
    Симпатии:
    0
    Адрес:
    Орел
    значит надо сначала присвоить переменным $id, $username, $nummer_fax какие-то значения
     
  17. basist

    basist Активный пользователь

    С нами с:
    7 июл 2007
    Сообщения:
    388
    Симпатии:
    0
    Адрес:
    Орел
    тьфу ты.... это же всё функция... значит надо вызывать её с аргументами, которыми и являются нужные айди, юзер и т.д.
     
  18. warm

    warm Активный пользователь

    С нами с:
    31 янв 2007
    Сообщения:
    74
    Симпатии:
    0
    уже вторая страниц обсуждения пошла, а вывод так и не прозвучал. В начале первой страницы есть код, в конце - тех.задание. Они имеют отношение друг к другу или нет?
     
  19. Davil

    Davil Guest

    warm
    Я просил суда выложить.
    На email оно мне зачем? У меня и так работы хватает.
     
  20. warm

    warm Активный пользователь

    С нами с:
    31 янв 2007
    Сообщения:
    74
    Симпатии:
    0
    2/3 кода и тех.задания уже здесь лежат.
    Код в начале первой страницы
    тех.задание в конце :)
     
  21. Davil

    Davil Guest

    Только код отформатировать осталось
     
  22. warm

    warm Активный пользователь

    С нами с:
    31 янв 2007
    Сообщения:
    74
    Симпатии:
    0
    вот так? код целиком. Вопрос: он может выполнять первую часть тех.задания?

    PHP:
    1. <?php
    2. $mbox = imap_open("{imap.server.ru:143}INBOX", "login", "pass");
    3. or die("can't connect: ".imap_last_error());
    4.  
    5.  
    6. function validation($id, $username, $nummer_fax, $list_fax, $mail, $subject){
    7.     $HOST = 'localhost';
    8.     $LOGIN = 'root';
    9.     $PASSWORD = '';
    10.     $DATABASE = 'test';
    11.     $TABLE = 'stat_fax';
    12.    
    13.     $link = mysql_connect($HOST, $LOGIN, $PASSWORD);
    14.     $db = mysql_select_db($DATABASE);
    15.    
    16.     $result = mysql_query("SELECT id FROM $TABLE WHERE (id=$id)AND(username=\"$username\")AND(nummer_fax=\"$nummer_fax\")");
    17.  
    18.     if(mysql_fetch_assoc($result) == false){
    19.         $result = mysql_query("SELECT * FROM $TABLE WHERE id=$id");
    20.         if(mysql_affected_rows() != -1){
    21.             $data = mysql_fetch_assoc($result);
    22.             $table_data = $data['id'].' '.$data['username'].' '.$data['nummer_fax'].' '.$data['list_fax'];
    23.             send_mail($mail, $subject.' non', "$subject\n $table_data");
    24.         }else{
    25.             send_mail($mail, $subject, "$subject\n «Запись отсутствует»");
    26.         }
    27.     }else{
    28.         mysql_query("UPDATE $TABLE SET list_fax=$list_fax WHERE id=$id");
    29.         send_mail($mail, $subject.' ok', '');
    30.     }
    31.        
    32.     mysql_close($link);
    33. }
    34.  
    35. function FS($id, $pages, $status, $list_fax){
    36.     $HOST = 'localhost';
    37.     $LOGIN = 'root';
    38.     $PASSWORD = '';
    39.     $DATABASE = 'test';
    40.     $TABLE = 'stat_fax';
    41.    
    42.     $link = mysql_connect($HOST, $LOGIN, $PASSWORD);
    43.     $db = mysql_select_db($DATABASE);
    44.    
    45.     if($list_fax === 0){
    46.         mysql_query("UPDATE $TABLE SET list_fax=$list_fax, status_fax=\"$id $pages $status\" WHERE id=$id");
    47.     }else{
    48.         mysql_query("UPDATE $TABLE SET status_fax=\"$id $pages $status\" WHERE id=$id");
    49.     }
    50.        
    51.     mysql_close($link);
    52. }
    53.  
    54. function send_mail($to, $subject, $body){
    55.     imap_mail($to, $subject, $body);
    56. }
    57.  
    58. function send_spam($subject, $body, $from){
    59.     $TO_SPAM = [email='spam@ya.ru]'spam@ya.ru[/email]';
    60.     imap_mail($TO_SPAM, $subject, $body, "From: $from");
    61. }
    62.  
    63. function decode_header($header){
    64.     $Subject = '';
    65.     $SubjectElements = imap_mime_header_decode($header);
    66.     for($i=0;$i<count($SubjectElements);$i++) {
    67.         $Charset = $SubjectElements[$i]->charset;
    68.         $Subject .= $SubjectElements[$i]->text;
    69.     }
    70.     if($Charset == 'windows-1251'){
    71.         $Subject = convert_cyr_string($Subject, 'w', 'k');
    72.     }  
    73.     return mb_convert_encoding($Subject, "UTF8", "KOI8-R");        
    74. }
    75.  
    76. function get_FAXID($mail, $FID){
    77.     $mail_body = split("\n", $mail);
    78.    $FaxID = explode(':', $mail_body[$FID]);
    79.     return substr($FaxID[1], 7, 3);    
    80. }
    81.  
    82. function get_PAGES_STATUS($mail, $FID){
    83.     $mail_body = split("\n", $mail);
    84.    $DATA = explode(':', $mail_body[$FID]);
    85.     return $DATA[1];       
    86. }
    87.  
    88. $mbox = imap_("{imap.server.ru:143}INBOX", "login", "pass");
    89. if($mbox !== false){
    90.     for($i=1; $i<=imap_num_msg($mbox); $i++){
    91.         $mail = imap_headerinfo($mbox, $i);    
    92.         //echo $mail->sender[0]->personal.'<br>';
    93.        
    94.         $Subject = decode_header($mail->Subject);
    95.        
    96.         if($mail->sender[0]->personal === 'FaxService'){
    97.             //echo $Subject.'<br>';
    98.             $data = explode(" ", $Subject);
    99.             if(count($data) == 4){
    100.                 validation($data[0], $data[1], $data[2], $data[3], $mail->sender[0]->mailbox.'@'.$mail->sender[0]->host, $mail->Subject);
    101.             }else{
    102.                 if(stristr($Subject, 'NOT SENT') != false){
    103.                     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);
    104.                 }elseif(stristr($Subject, 'successfully sent') != false){
    105.                     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);
    106.                 }else{
    107.                     send_spam($Subject, imap_body($mbox, $i), $mail->sender[0]->mailbox.'@'.$mail->sender[0]->host);
    108.                 }
    109.             }
    110.         }else{
    111.             send_spam($Subject, imap_body($mbox, $i), $mail->sender[0]->mailbox.'@'.$mail->sender[0]->host);
    112.         }
    113.     echo '<hr>';
    114.     imap_delete($mbox, 1);
    115.     }
    116. }else{
    117.     echo 'Ошибка соединения с почтовым ящиком!!!';
    118. }
    119.  
    120. imap_expunge($mbox);
    121.  
    122. imap_close($mbox);
    123.  
    124. ?>
    [/code]
     
  23. pel

    pel Активный пользователь

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    имеют. Самое непосредственное.
    Показанный скрипт соответствует ТЗ на 2/3.
    Реализован поиск по базе и генерирование соответствующего письма. Но здесь нет поиска писем с подходящей темой на почтовом сервере. +Вы не показали функции для отправки почты. Хотя, это, думаю, лучше проверить фактом прихода писем.


    P.$. Скажите, пожалуйста, это вы таким образом проверяете сделанный на заказ скрипт? Я имею ввиду, сделанный для вас.
    Почему бы не проверить его в реальных условиях? Разместить на серваке несколько писем с возможными вариантами и посмотреть, что сделает скрипт.


    P.P.$. й:shock:пт.
    Это сообщение - про скрипт в первом посте.
     
  24. warm

    warm Активный пользователь

    С нами с:
    31 янв 2007
    Сообщения:
    74
    Симпатии:
    0
    В реальных условиях он не работает.
    Исполнитель утверждает, что скрипт рабочий. Я, как блондин, пытался всячески его заставить выполнять необходимые действия, но всё в пустую. Поэтому и обратился за помощью в разрешении вопроса.
     
  25. pel

    pel Активный пользователь

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    да, кстати, в последнем коде из второй строки уберите в конце точку с запятой.
    И в 25й строке к $subject допишите .' non' (как на строку выше)