За последние 24 часа нас посетили 17230 программистов и 1626 роботов. Сейчас ищут 1545 программистов ...

Огранка кода

Тема в разделе "Вопросы от блондинок", создана пользователем burndalen, 4 май 2011.

  1. burndalen

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

    С нами с:
    29 апр 2011
    Сообщения:
    25
    Симпатии:
    0
    Добрый день, всем, есть следующий код PHP скрипта формы обратной связи:

    Код (Text):
    1.  
    2. <?php
    3. header('Content-Type: text/html; charset=Windows-1251');
    4. if(isset($_GET["mail"]))
    5.     echo 'Ваше письмо отправлено...';
    6. session_start();
    7. $admin = 'email';
    8. if ( isset( $_POST['sendMail'] ) ) {
    9.     $name  = substr( $_POST['name'], 0, 64 );
    10.     $email   = substr( $_POST['email'], 0, 64 );
    11.     $subject = substr( $_POST['subject'], 0, 64 );
    12.     $message = substr( $_POST['message'], 0, 250 );
    13.    }
    14.  
    15.     // обработка ошибок
    16.     $error = '';
    17.     if ( empty( $name ) ) $error = $error.'<li>Не заполнено поле "Имя"</li>';
    18.     if ( empty( $email ) ) $error = $error.'<li>Не заполнено поле "E-mail"</li>';
    19.     if ( empty( $subject ) ) $error = $error.'<li>Не заполнено поле "Тема"</li>';
    20.     if ( empty( $message ) ) $error = $error.'<li>Не заполнено поле "Сообщение"</li>';
    21.     if ( !empty( $email ) and !preg_match( "#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i", $email ) )
    22.         $error = $error.'<li>поле "E-mail" должно соответствовать формату somebody@somewhere.ru</li>';
    23.     if ( !empty( $error ) ) {
    24.         $_SESSION['sendMailForm']['error']   = '<p>При заполнении формы были допущены ошибки:
    25.         </p><ul>'.$error.'</ul>';
    26.         $_SESSION['sendMailForm']['name']    = $name;
    27.         $_SESSION['sendMailForm']['email']   = $email;
    28.         $_SESSION['sendMailForm']['subject'] = $subject;
    29.         $_SESSION['sendMailForm']['message'] = $message;
    30.         header( 'Location: '.$_SERVER['PHP_SELF'] );
    31.         // перенаправление в корневую страницу если есть ошибки
    32.         die();
    33.     }
    34.  
    35.     $body = "АВТОР:".$name." E-MAIL".$email." ТЕМА:".$subject." СООБЩЕНИЕ:".$message;
    36.     if ( mail($admin, "Заполнена форма на сайте", $body) ){
    37.         $_SESSION['success'] = true;
    38.       echo "Сообщение успешно отправлено";
    39.     }
    40.     else
    41.    {
    42.         $_SESSION['success'] = false;
    43.     header( 'Location: '.$_SERVER['PHP_SELF'] );
    44.     die();
    45.     }
    46. ?>
    Достаточно добротный и рабочий код, но есть две хорошоватости:

    1) письма с заполненной формы приходят в непонятной кодировке;
    2) после нажатия кнопки отправить пользователь получает белый экран с собщением что оно успешно ушло, хотелось бы конечно чтобы это напись возникала всплывающе, на той же странице не давая белый экран.

    У кого какие мысли, да под мыслями конечно автор темы понимает конкретные строчки кода :)
     
  2. Benjamin

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

    С нами с:
    23 янв 2009
    Сообщения:
    154
    Симпатии:
    0
    Адрес:
    Тула
    Выложите весь код.
     
  3. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    ajax, jquery. примеров в интернете достаточно
     
  4. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    зачем создавать 3 темы
     
  5. burndalen

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

    С нами с:
    29 апр 2011
    Сообщения:
    25
    Симпатии:
    0
    Benjamin
    Весь код чего? я вам выложил весь код php скрипта, html страница на которой есть форма обратной связи выслается на обработку его
     
  6. Benjamin

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

    С нами с:
    23 янв 2009
    Сообщения:
    154
    Симпатии:
    0
    Адрес:
    Тула
    И html страницу давайте сюда.
     
  7. burndalen

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

    С нами с:
    29 апр 2011
    Сообщения:
    25
    Симпатии:
    0
    Benjamin
    на двух страницах форма обратной связи вам обе?
     
  8. burndalen

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

    С нами с:
    29 апр 2011
    Сообщения:
    25
    Симпатии:
    0
    Вот код страницы contact.html
    HTML:
    1.  
    2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    4.  
    5.   <title>Заказать услуги - BBAPPLE.RU</title>
    6.   <meta name="description" content="website description" />
    7.   <meta name="keywords" content="website keywords, website keywords" />
    8.   <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    9.   <link rel="stylesheet" type="text/css" href="style/style.css" />
    10. </head>
    11.  
    12.   <div id="main">
    13.     <div id="links"></div>
    14.     <div id="header">
    15.       <div id="logo">
    16.         <div id="logo_text">
    17.           <!-- class="logo_colour", allows you to change the colour of the logo text -->
    18.           <a href="http://www.bbapple.ru">
    19.           <h1>Blackberry<span class="logo_colour">_Apple FIX</span></h1>
    20.           <h2>Нет проблемы, которую бы мы не решили</h2>
    21.         </div>
    22.       </div>
    23.       <div id="menubar">
    24.         <ul id="menu">
    25.           <!-- put class="tab_selected" in the li tag for the selected page - to highlight which page you're on -->
    26.           <li><a href="index.html">ГЛАВНАЯ</a></li>
    27.           <li><a href="our_services.html">УСЛУГИ</a></li>
    28.           <li><a href="about_us.html">О НАС</a></li>
    29.           <li><a href="goods.html">ТОВАРЫ</a></li>
    30.           <li class="tab_selected"><a href="contact.html">ЗАКАЗАТЬ УСЛУГИ</a></li>
    31.         </ul>
    32.       </div>
    33.     </div>
    34.     <div id="site_content">
    35.       <div id="sidebar_container">
    36.         <!-- insert your sidebar items here -->
    37.         <div class="sidebar">
    38.           <div class="sidebar_top"></div>
    39.           <div class="sidebar_item">
    40.             <h1>Последние Новости</h1>
    41.             <h4>Продается NOKIA E7</h4>
    42.             <p>Nokia E7 &mdash; безукоризненно стильный коммуникатор с полным набором инструментов для работы и развлечений. <br />
    43.             <a href="goods.html">Посмотреть</a></p>
    44.           </div>
    45.           <div class="sidebar_base"></div>
    46.         </div>
    47.         <div class="sidebar">
    48.           <div class="sidebar_top"></div>
    49.           <div class="sidebar_item">
    50.             <h1>Полезные Ссылки</h1>
    51.             <ul>
    52.               <li><a href="http://ru.blackberry.com/support/">Blackberry</a><a href="#"></a></li>
    53.               <li><a href="http://www.apple.com/ru/support/">Apple</a><a href="#"></a></li>
    54.               <li><a href="http://support.sony-europe.com/index.aspx?site=odw_ru_RU">Sony</a><a href="#"></a></li>
    55.               <li><a href="http://www.nokia.ru/support">Nokia</a><a href="#"></a></li>
    56.             </ul>
    57.           </div>
    58.           <div class="sidebar_base"></div>
    59.         </div>
    60.         <div class="sidebar">
    61.           <div class="sidebar_top"></div>
    62.           <div class="sidebar_item">
    63.             <h1>P.S.</h1>
    64.             <p>Вы всегда платите только за результат.</p>
    65.           </div>
    66.           <div class="sidebar_base"></div>
    67.         </div>
    68.       </div>
    69.       <div id="content_container">
    70.         <div id="content_top"></div>
    71.         <div id="content">
    72.           <!-- insert the page content here -->
    73.           <h1>Заказать услуги</h1>
    74.           <p>Здесь вы можете заказать интересующие вас услуги:</p>
    75.  <form method="post" action="/send.php">
    76.     <div class="form_settings">
    77.       <p><span>Как вас зовут</span>
    78.         <input type="text" value="" name="name" class="contact"></p>
    79.       <p><span>Ваш Email</span>
    80.         <input type="hidden" value="yes" name="sendMail"></p>
    81.       <input type="hidden" value="?????? ? ?????" name="subject" class="contact">
    82.       <input type="text" value="" name="email" class="contact"></p>
    83.      
    84.       <p><span>Сообщение</span>
    85.         <textarea name="message" cols="50" rows="8" class="contact textarea"></textarea></p>
    86.       <p style="padding-top: 15px"><span>&nbsp;</span><input type="submit" value="Отправить" name="contact_submitted" class="submit">
    87.       </p>
    88.     </div>
    89.   </form>
    90.           <p><br /><br />
    91.           ПРИМЕЧАНИЕ: Не забудьте указать ваш Email, иначе мы просто не сможем с вами связаться :)</p>
    92.         </div>
    93.         <div id="content_base"></div>
    94.       </div>
    95.     </div>
    96.     <div id="footer">Copyright &copy; BBAPPLE.RU. ВСЕ ПРАВА ЗАЩИЩЕНЫ. ДИЗАЙН  dcarter</div>
    97. </div>
    98. <div style="text-align: center; font-size: 0.75em;"></div>
    99. </body>
    100. </html>
    101.  
     
  9. Benjamin

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

    С нами с:
    23 янв 2009
    Сообщения:
    154
    Симпатии:
    0
    Адрес:
    Тула
    burndalen, вы издеваетесь?
     
  10. titch

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

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    дримвьювер детектед!
    Benjamin, нет, он не издевается, у него реально всё в таком виде хранится
     
  11. burndalen

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

    С нами с:
    29 апр 2011
    Сообщения:
    25
    Симпатии:
    0
    Benjamin

    не очень понял :)
     
  12. titch

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

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    burndalen, все русские символы html-кодированы. с точки зрения челокева, который пишет в нормальной IDE, такой html практически бесполезен для работы
     
  13. Benjamin

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

    С нами с:
    23 янв 2009
    Сообщения:
    154
    Симпатии:
    0
    Адрес:
    Тула
  14. burndalen

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

    С нами с:
    29 апр 2011
    Сообщения:
    25
    Симпатии:
    0
    titch
    А как это можно было бы исправить?
     
  15. titch

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

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    а хз... вроде дримвьювер умеет работать с кодировками нормально. поставьте себе UTF-8 или CP1251 (на своё усмотрение). то, что уже кодировано не знаю, как вы будете восстанавливать
     
  16. burndalen

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

    С нами с:
    29 апр 2011
    Сообщения:
    25
    Симпатии:
    0
    titch
    понятно, а разве если этот код (который я выложил) открыть в дримвьювере человек не сможет увидет текст как положенно?
     
  17. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    burndalen

    Может и сможет, но ДримвИвер
    1) Говно
    2) Платный
     
  18. burndalen

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

    С нами с:
    29 апр 2011
    Сообщения:
    25
    Симпатии:
    0
    tommyangelo

    я вас понял
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ГОВНОПЛАТНЫЙ!!11

    самый крутой визуальный редактор хтмл - фаербаг =) как это ни печально.
     
  20. Benjamin

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

    С нами с:
    23 янв 2009
    Сообщения:
    154
    Симпатии:
    0
    Адрес:
    Тула
    burndalen, вы вроде как вчера постили нормальную форму полностью. Не?
     
  21. burndalen

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

    С нами с:
    29 апр 2011
    Сообщения:
    25
    Симпатии:
    0
    Benjamin
    вот код скрипта:


    Код (Text):
    1.  
    2. <?php
    3. header('Content-Type: text/html; charset=Windows-1251');
    4. if(isset($_GET["mail"]))
    5.     echo 'Ваше письмо отправлено...';
    6. session_start();
    7. $admin = 'email';
    8. if ( isset( $_POST['sendMail'] ) ) {
    9.     $name  = substr( $_POST['name'], 0, 64 );
    10.     $email   = substr( $_POST['email'], 0, 64 );
    11.     $subject = substr( $_POST['subject'], 0, 64 );
    12.     $message = substr( $_POST['message'], 0, 250 );
    13.    }
    14.  
    15.     // обработка ошибок
    16.     $error = '';
    17.     if ( empty( $name ) ) $error = $error.'<li>Не заполнено поле "Имя"</li>';
    18.     if ( empty( $email ) ) $error = $error.'<li>Не заполнено поле "E-mail"</li>';
    19.     if ( empty( $subject ) ) $error = $error.'<li>Не заполнено поле "Тема"</li>';
    20.     if ( empty( $message ) ) $error = $error.'<li>Не заполнено поле "Сообщение"</li>';
    21.     if ( !empty( $email ) and !preg_match( "#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i", $email ) )
    22.         $error = $error.'<li>поле "E-mail" должно соответствовать формату somebody@somewhere.ru</li>';
    23.     if ( !empty( $error ) ) {
    24.         $_SESSION['sendMailForm']['error']   = '<p>При заполнении формы были допущены ошибки:
    25.         </p><ul>'.$error.'</ul>';
    26.         $_SESSION['sendMailForm']['name']    = $name;
    27.         $_SESSION['sendMailForm']['email']   = $email;
    28.         $_SESSION['sendMailForm']['subject'] = $subject;
    29.         $_SESSION['sendMailForm']['message'] = $message;
    30.         header( 'Location: '.$_SERVER['PHP_SELF'] );
    31.         // перенаправление в корневую страницу если есть ошибки
    32.         die();
    33.     }
    34.  
    35.     $body = "АВТОР:".$name." E-MAIL".$email." ТЕМА:".$subject." СООБЩЕНИЕ:".$message;
    36.     if ( mail($admin, "Заполнена форма на сайте", $body) ){
    37.         $_SESSION['success'] = true;
    38.       echo "Сообщение успешно отправлено";
    39.     }
    40.     else
    41.    {
    42.         $_SESSION['success'] = false;
    43.     header( 'Location: '.$_SERVER['PHP_SELF'] );
    44.     die();
    45.     }
    46. ?>
    Вы о нем?
     
  22. Benjamin

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

    С нами с:
    23 янв 2009
    Сообщения:
    154
    Симпатии:
    0
    Адрес:
    Тула
    Не. Это только обработчик, а там форма была.
     
  23. burndalen

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

    С нами с:
    29 апр 2011
    Сообщения:
    25
    Симпатии:
    0
    Я бы мог выложить два html на который есть форма, только как здесь приложить файл?