За последние 24 часа нас посетили 16529 программистов и 1679 роботов. Сейчас ищут 846 программистов ...

Обработчик формы

Тема в разделе "PHP для новичков", создана пользователем alien-shot, 14 сен 2009.

  1. alien-shot

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

    С нами с:
    2 сен 2009
    Сообщения:
    17
    Симпатии:
    0
    Уважаемые форумчане подскажите пож. такую вот вещь!

    Есть динамическая форма, формируется из нескольких подключаемы страниц и обрабатывается php! Массив необходимый для отправки висит в html файле, обработчик сам формирует то что ему необходимо отправлять! Вопрос как мне массив обозначить в обработчике формы! Чтобы он тоже отправлялся! Не знаю понятно написал или нет)))) Если что спрашивайте)) Заранее всем огромное спасибо!
     
  2. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    тебе надо написать, что за обработчик и где он работает! А то ничего не понятно!!!
    и это нехорошо, когда тебя надо упрашивать рассказать что же тебе надо!!!!!
     
  3. alien-shot

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

    С нами с:
    2 сен 2009
    Сообщения:
    17
    Симпатии:
    0
    Обработчик работаетв движке Xoops а именно модуль Liaise!Вот так выглядит обработчик!

    PHP:
    1. if( !defined('LIAISE_ROOT_PATH') ){ exit(); }
    2.  
    3. $liaise_ele_mgr =& xoops_getmodulehandler('elements');
    4. $criteria = new CriteriaCompo();
    5. $criteria->add(new Criteria('form_id', $form->getVar('form_id')), 'AND');
    6. $criteria->add(new Criteria('ele_display', 1), 'AND');
    7. $criteria->setSort('ele_order');
    8. $criteria->setOrder('ASC');
    9. $elements =& $liaise_ele_mgr->getObjects($criteria, true);
    10.  
    11. $msg = $err = $attachments = array();
    12. foreach( $_POST as $k => $v ){
    13.     if( preg_match('/^ele_[0-9]+$/', $k) ){
    14.         $n = explode("_", $k);
    15.         $ele[$n[1]] = $v;
    16.     }
    17. }
    18. if( isset($_POST['xoops_upload_file']) && is_array($_POST['xoops_upload_file']) ){
    19.     foreach( $_POST['xoops_upload_file'] as $k => $v ){
    20.         $n = explode("_", $v);
    21.         $ele[$n[1]] = $v;
    22.     }
    23. }
    24.  
    25. foreach( $elements as $i ){
    26.     $ele_id = $i->getVar('ele_id');
    27.     $ele_type = $i->getVar('ele_type');
    28.     $ele_value = $i->getVar('ele_value');
    29.     $ele_req = $i->getVar('ele_req');
    30.     $ele_caption = $i->getVar('ele_caption', 'n');
    31.     if( isset($ele[$ele_id]) && !empty($ele[$ele_id]) ){
    32.         if( $ele_caption != '' ){
    33.             $msg[$ele_id] = "\n".$myts->stripSlashesGPC($ele_caption)."\n";
    34.         }
    35.         switch($ele_type){
    36.             case 'upload':
    37.             case 'uploadimg':
    38.                 if( isset($_FILES['ele_'.$ele_id]) ){
    39.                     require_once LIAISE_ROOT_PATH.'class/uploader.php';
    40.                     $ext = empty($ele_value[1]) ? 0 : explode('|', $ele_value[1]);
    41.                     $mime = empty($ele_value[2]) ? 0 : explode('|', $ele_value[2]);
    42.  
    43.                     if( $ele_type == 'uploadimg' ){
    44.                         $uploader[$ele_id] =& new LiaiseMediaUploader(LIAISE_UPLOAD_PATH, $ele_value[0], $ext, $mime, $ele_value[4], $ele_value[5]);
    45.                     }else{
    46.                         $uploader[$ele_id] =& new LiaiseMediaUploader(LIAISE_UPLOAD_PATH, $ele_value[0], $ext, $mime);
    47.                     }
    48.                     if( $ele_value[0] == 0 ){
    49.                         $uploader[$ele_id]->noAdminSizeCheck(true);
    50.                     }
    51.                     if( $uploader[$ele_id]->fetchMedia('ele_'.$ele_id, null, $i) ){
    52.                         $attachments[] = array(
    53.                                 'id' => $ele_id,
    54.                                 'path' => $_FILES['ele_'.$ele_id]['tmp_name'],
    55.                                 'name' => $_FILES['ele_'.$ele_id]['name'],
    56.                                 'saveto' => $ele_value[3]
    57.                                                 );
    58.                     }else{
    59.                         if( count($uploader[$ele_id]->errors) > 0 ){
    60.                             $err[] = $uploader[$ele_id]->getErrors();
    61.                         }
    62.                     }
    63.                 }
    64.             break;
    65.             case 'text':
    66.                 $ele[$ele_id] = trim($ele[$ele_id]);
    67.                 if( preg_match('/\{EMAIL\}/', $ele_value[2]) ){
    68.                     if( !checkEmail($ele[$ele_id]) ){
    69.                         $err[] = _LIAISE_ERR_INVALIDMAIL;
    70.                     }else{
    71.                         $reply_mail = $ele[$ele_id];
    72.                     }
    73.                 }
    74.                 if( preg_match('/\{UNAME\}/', $ele_value[2]) ){
    75.                     $reply_name = $ele[$ele_id];
    76.                 }
    77.                 $msg[$ele_id] .= $myts->stripSlashesGPC($ele[$ele_id]);
    78.             break;
    79.             case 'textarea':
    80.                 $msg[$ele_id] .= $myts->stripSlashesGPC($ele[$ele_id]);
    81.             break;
    82.             case 'radio':
    83.                 $opt_count = 1;
    84.                 while( $v = each($ele_value) ){
    85.                     if( $opt_count == $ele[$ele_id] ){
    86.                         $other = checkOther($v['key'], $ele_id, $ele_caption);
    87.                         if( $other != false ){
    88.                             $msg[$ele_id] .= $other;
    89.                         }else{
    90.                             $msg[$ele_id] .= $myts->stripSlashesGPC($v['key']);
    91.                         }
    92.                     }
    93.                     $opt_count++;
    94.                 }
    95.             break;
    96.             case 'yn':
    97.                 $v = ($ele[$ele_id]==2) ? _NO : _YES;
    98.                 $msg[$ele_id] .= $myts->stripSlashesGPC($v);
    99.             break;
    100.             case 'checkbox':
    101.                 $opt_count = 1;
    102.                 $ch = array();
    103.                 while( $v = each($ele_value) ){
    104.                     if( is_array($ele[$ele_id]) ){
    105.                         if( in_array($opt_count, $ele[$ele_id]) ){
    106.                             $other = checkOther($v['key'], $ele_id, $ele_caption);
    107.                             if( $other != false ){
    108.                                 $ch[] = $other;
    109.                             }else{
    110.                                 $ch[] = $myts->stripSlashesGPC($v['key']);
    111.                             }
    112.                         }
    113.                         $opt_count++;
    114.                     }else{
    115.                         if( !empty($ele[$ele_id]) ){
    116.                             $ch[] = $myts->stripSlashesGPC($v['key']);
    117.                         }
    118.                     }
    119.                 }
    120.                 $msg[$ele_id] .= !empty($ch) ? implode("\n", $ch) : '';
    121.             break;
    122.             case 'select':
    123.                 $opt_count = 1;
    124.                 $ch = array();
    125.                 if( is_array($ele[$ele_id]) ){
    126.                     while( $v = each($ele_value[2]) ){
    127.                         if( in_array($opt_count, $ele[$ele_id]) ){
    128.                             $ch[] = $myts->stripSlashesGPC($v['key']);
    129.                         }
    130.                         $opt_count++;
    131.                     }
    132.                 }else{
    133.                     while( $j = each($ele_value[2]) ){
    134.                         if( $opt_count == $ele[$ele_id] ){
    135.                             $ch[] = $myts->stripSlashesGPC($j['key']);
    136.                         }
    137.                         $opt_count++;
    138.                     }
    139.                 }
    140.                 $msg[$ele_id] .= !empty($ch) ? implode("\n", $ch) : '';
    141.             break;
    142.             default:
    143.             break;
    144.         }
    145.     }elseif( $ele_req == 1 ){
    146.         $err[] = sprintf(_LIAISE_ERR_REQ, $ele_caption);
    147.     }
    148. }
    149.  
    150. if( is_dir(LIAISE_ROOT_PATH."language/".$xoopsConfig['language']."/mail_template") ){
    151.     $template_dir = LIAISE_ROOT_PATH."language/".$xoopsConfig['language']."/mail_template";
    152. }else{
    153.     $template_dir = LIAISE_ROOT_PATH."language/english/mail_template";
    154. }
    155. $xoopsMailer =& getMailer();
    156. $xoopsMailer->setTemplateDir($template_dir);
    157. $xoopsMailer->setTemplate('liaise.tpl');
    158. $xoopsMailer->setSubject(sprintf(_LIAISE_MSG_SUBJECT, $myts->stripSlashesGPC($form->getVar('form_title'))));
    159. if( in_array('user', $xoopsModuleConfig['moreinfo']) ){
    160.     if( is_object($xoopsUser) ){
    161.         $xoopsMailer->assign("UNAME", sprintf(_LIAISE_MSG_UNAME, $xoopsUser->getVar("uname")));
    162.         $xoopsMailer->assign("ULINK", sprintf(_LIAISE_MSG_UINFO, XOOPS_URL.'/userinfo.php?uid='.$xoopsUser->getVar("uid")));
    163.     }else{
    164.         $xoopsMailer->assign("UNAME", sprintf(_LIAISE_MSG_UNAME, $xoopsConfig['anonymous']));
    165.         $xoopsMailer->assign("ULINK", '');
    166.     }
    167. }else{
    168.     $xoopsMailer->assign("UNAME", '');
    169.     $xoopsMailer->assign("ULINK", '');
    170. }
    171. if( in_array('ip', $xoopsModuleConfig['moreinfo']) ){
    172.     $proxy = $_SERVER['REMOTE_ADDR'];
    173.     $ip = '';
    174.     if( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ){
    175.         $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    176.     }elseif( isset($_SERVER['HTTP_PROXY_CONNECTION']) ){
    177.         $ip = $_SERVER['HTTP_PROXY_CONNECTION'];
    178.     }elseif( isset($_SERVER['HTTP_VIA']) ){
    179.         $ip = $_SERVER['HTTP_VIA'];
    180.     }
    181.     $ip = empty($ip) ? $_SERVER['REMOTE_ADDR'] : $ip;
    182.     if( $proxy != $ip ){
    183.         $ip = $ip.sprintf(_LIAISE_PROXY, $proxy);
    184.     }
    185.     $xoopsMailer->assign("IP", sprintf(_LIAISE_MSG_IP, $ip));
    186. }else{
    187.     $xoopsMailer->assign("IP", '');
    188. }
    189. if( in_array('agent', $xoopsModuleConfig['moreinfo']) ){
    190.     $xoopsMailer->assign("AGENT", sprintf(_LIAISE_MSG_AGENT, $_SERVER['HTTP_USER_AGENT']));
    191. }else{
    192.     $xoopsMailer->assign("AGENT", '');
    193. }
    194. if( in_array('form', $xoopsModuleConfig['moreinfo']) ){
    195.     $xoopsMailer->assign("FORMURL", sprintf(_LIAISE_MSG_FORMURL, LIAISE_URL.'index.php?form_id='.$form_id));
    196. }else{
    197.     $xoopsMailer->assign("FORMURL", '');
    198. }
    199.  
    200. $group = $member_handler->getGroup($form->getVar('form_send_to_group'));
    201. if( $form->getVar('form_send_method') == 'p' && is_object($xoopsUser) && false != $group ){
    202.     $xoopsMailer->usePM();
    203.     $xoopsMailer->setToGroups($group);
    204. }else{
    205.     $xoopsMailer->useMail();
    206.     $xoopsMailer->setFromName($xoopsConfig['sitename']);
    207.     $xoopsMailer->setFromEmail($xoopsConfig['adminmail']);
    208.     if( isset($reply_mail) ){
    209.         $xoopsMailer->multimailer->AddReplyTo($reply_mail, isset($reply_name) ? '"'.$reply_name.'"' : null);
    210.     }
    211.     $charset = !empty($xoopsModuleConfig['mail_charset']) ? $xoopsModuleConfig['mail_charset'] : _CHARSET;
    212.     $xoopsMailer->charSet = $charset;
    213.     if( false != $group ){
    214.         $xoopsMailer->setToGroups($group);
    215.     }else{
    216.         $xoopsMailer->setToEmails($xoopsConfig['adminmail']);
    217.     }
    218. }
    219.  
    220. $uploaded = array();
    221. if( count($attachments) > 0 ){
    222.     foreach( $attachments as $a ){
    223.         if( false == $xoopsMailer->isMail || $a['saveto'] ){
    224.             $uploader[$a['id']]->prefix = $form->getVar('form_id').'_';
    225.             if( false == $uploader[$a['id']]->upload() ){
    226.                 $err[] = $uploader[$a['id']]->getErrors();
    227.             }else{
    228.                 $saved = $uploader[$a['id']]->savedFileName;
    229.                 $uploaded[] = LIAISE_UPLOAD_PATH.$saved;
    230.                 $msg[$a['id']] .= sprintf(_LIAISE_UPLOADED_FILE, LIAISE_URL.'admin/file.php?f='.$saved);
    231.             }
    232.         }else{
    233.             if( false == $xoopsMailer->multimailer->AddAttachment($a['path'], $a['name']) ){
    234.                 $err[] = $xoopsMailer->multimailer->ErrorInfo;
    235.             }else{
    236.                 $msg[$a['id']] .= sprintf(_LIAISE_ATTACHED_FILE, $_FILES['ele_'.$a['id']]['name']);
    237.             }
    238.         }
    239.     }
    240. }
    241.  
    242. $xoopsMailer->assign("MSG", implode("\n", $msg));
    243.  
    244. if( count($err) < 1 ){
    245.     if( !$xoopsMailer->send(true) ){
    246.         $err[] = $xoopsMailer->getErrors();
    247.     }
    248. }
    249.  
    250. if( count($err) > 0 ){
    251.     if( count($uploaded) > 0 ){
    252.         foreach( $uploaded as $u ){
    253.             @unlink($u);
    254.         }
    255.     }
    256.     $xoopsOption['template_main'] = 'liaise_error.html';
    257.     include_once XOOPS_ROOT_PATH.'/header.php';
    258.     $xoopsTpl->assign('error_heading', _LIAISE_ERR_HEADING);
    259.     $xoopsTpl->assign('errors', $err);
    260.     $xoopsTpl->assign('go_back', _BACK);
    261.     $xoopsTpl->assign('liaise_url', LIAISE_URL.'/index.php?form_id='.$form_id);
    262.     $xoopsTpl->assign('xoops_pagetitle', _LIAISE_ERR_HEADING);
    263.     include XOOPS_ROOT_PATH.'/footer.php';
    264.     exit();
    265. }
    266.  
    267. $whereto = $form->getVar('form_whereto');
    268. $whereto = !empty($whereto) ? str_replace('{SITE_URL}', XOOPS_URL, $whereto) : XOOPS_URL.'/index.php';
    269. redirect_header($whereto, 0, _LIAISE_MSG_SENT);
    270.  
    271. function checkOther($key, $id, $caption){
    272.     global $err, $myts;
    273.     if( !preg_match('/\{OTHER\|+[0-9]+\}/', $key) ){
    274.         return false;
    275.     }else{
    276.         if( !empty($_POST['other']['ele_'.$id]) ){
    277.             return _LIAISE_OPT_OTHER.$myts->stripSlashesGPC($_POST['other']['ele_'.$id]);
    278.         }else{
    279.             $err[] = sprintf(_LIAISE_ERR_REQ, $caption);
    280.         }
    281.     }
    282.     return false;
    283. }
    284. ?>
    Вот сам обработчик! В него томне и надо ставить сам массив!
     
  4. alien-shot

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

    С нами с:
    2 сен 2009
    Сообщения:
    17
    Симпатии:
    0
    Извените что такой большой скрипт))) Просто я уже на грани вымирания из-за него)
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    alien-shot
    Что ты подразумеваешь под словом "массив"?
     
  6. alien-shot

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

    С нами с:
    2 сен 2009
    Сообщения:
    17
    Симпатии:
    0
    <?php

    if ($_SERVER ['HTTP_REFERER']== 'http://mu.ru/modules/smartsection/item.php?itemid='.$_GET['itemid']);

    else {
    echo "Ошибка <br>";
    echo "Такого адреса не существует! <br>";
    // Задаем переменную на страницу с которой пришел человек!
    $serv = $_SERVER ['HTTP_REFERER'];
    echo "<p><a href=$serv>Назад</a>";
    exit;
    }
    //Берем контент с нужной нам страницы
    {$content = file_get_contents ($_SERVER ['HTTP_REFERER']);

    //Ищем наши <div> и формируем массив
    preg_match_all ('/<div id=\"0\">(.*)<\/div>/Usi', $content, $elements[0]);
    preg_match_all ('/<div id=\"1\">(.*)<\/div>/Usi', $content, $elements[1]);
    preg_match_all ('/<div id=\"2\">(.*)<\/div>/Usi', $content, $elements[2]);
    preg_match_all ('/<div id=\"3\">(.*)<\/div>/Usi', $content, $elements[3]);
    preg_match_all ('/<div id=\"4\">(.*)<\/div>/Usi', $content, $elements[4]);
    preg_match_all ('/<div id=\"5\">(.*)<\/div>/Usi', $content, $elements[5]);
    preg_match_all ('/<div id=\"6\">(.*)<\/div>/Usi', $content, $elements[6]);
    preg_match_all ('/<div id=\"7\">(.*)<\/div>/Usi', $content, $elements[7]);
    preg_match_all ('/<div id=\"8\">(.*)<\/div>/Usi', $content, $elements[8]);

    //Элементы массива приводим к переменным
    $div0=$elements [0][0][0];
    $div1=$elements [1][0][0];
    $div2=$elements [2][0][0];
    $div3=$elements [3][0][0];
    $div4=$elements [4][0][0];
    $div5=$elements [5][0][0];
    $div6=$elements [6][0][0];
    $div7=$elements [7][0][0];
    $div8=$elements [8][0][0];


    global $courseinf;
    $courseinf="";

    if (isset($div0))
    {
    echo "$div0<br>";
    $courseinf=$courseinf.$div0."\n";
    }
    if (isset($div1))
    {
    echo "$div1<br>";
    $courseinf=$courseinf.$div1."\n";
    }
    if (isset($div2))
    {
    echo "$div2<br>";
    $courseinf=$courseinf.$div2."\n";
    }

    if (isset($div3))
    {
    echo "$div3<br>";
    $courseinf=$courseinf.$div3."\n";
    echo '<input type="radio" name="div" checked="checked" value='.$div3.'<br>';
    $courseinf=$courseinf.'<input type="radio" name="div" checked="checked" value='.$div3.'<br>'."\n";
    }
    if (isset($div4))
    {
    echo '<input type="radio" name="div" value='.$div4.'<br>';
    $courseinf=$courseinf.'<input type="radio" name="div" value='.$div4.'<br>'."\n";
    }
    if (isset($div5))
    {
    echo '<input type="radio" name="div" value='.$div5.'<br>';
    $courseinf=$courseinf.'<input type="radio" name="div" value='.$div5.'<br>'."\n";
    }
    if (isset($div6))
    {
    echo '<input type="radio" name="div" value='.$div6.'<br>';
    $courseinf=$courseinf.'<input type="radio" name="div" value='.$div6.'<br>'."\n";
    }
    if (isset($div7))
    {
    echo '<input type="radio" name="div" value='.$div7.'<br>';
    $courseinf=$courseinf.'<input type="radio" name="div" value='.$div7.'<br>'."\n";
    }
    if (isset($div8))
    {
    echo '<input type="radio" name="div" value='.$div8.'<br>';
    $courseinf=$courseinf.'<input type="radio" name="div" value='.$div8.'<br>'."\n";
    }
    echo $courseinf;



    }
    ?>
    Вот те самые данные, которые мне необходимо отправить!