1. PHP / Говнокод #2449

    +175.6

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    <?php
    if (isset ($_POST['OOO'])) {$OOO = $_POST['OOO'];}
    if (isset ($_POST['OAO'])) {$OAO = $_POST['OAO'];}
    if (isset ($_POST['ZAO'])) {$ZAO = $_POST['ZAO'];}
    if (isset ($_POST['nazvanierus'])) {$nazvanierus = $_POST['nazvanierus'];}
    if (isset ($_POST['name'])) {$name = $_POST['name'];}
    if (isset ($_POST['email'])) {$email = $_POST['email'];}
    if (isset ($_POST['nazvanieeng'])) {$nazvanieeng = $_POST['nazvanieeng'];}
    if (isset ($_POST['juradres'])) {$juradres = $_POST['juradres'];}
    if (isset ($_POST['kapital'])) {$kapital = $_POST['kapital'];}
    if (isset ($_POST['denvznos'])) {$denvznos = $_POST['denvznos'];}
    if (isset ($_POST['imushvznos'])) {$imushvznos = $_POST['imushvznos'];}
    if (isset ($_POST['obich'])) {$obich = $_POST['obich'];}
    if (isset ($_POST['usn6'])) {$usn6 = $_POST['usn6'];}
    if (isset ($_POST['usn15'])) {$usn15 = $_POST['usn15'];}
    if (isset ($_POST['direktor'])) {$direktor = $_POST['direktor'];}
    if (isset ($_POST['gendirektor'])) {$gendirektor = $_POST['gendirektor'];}
    if (isset ($_POST['izuchr'])) {$izuchr = $_POST['izuchr'];}
    if (isset ($_POST['novoelico'])) {$novoelico = $_POST['novoelico'];}
    if (isset ($_POST['novoelico1'])) {$novoelico1 = $_POST['novoelico1'];}
    if (isset ($_POST['izuchrbuh'])) {$izuchrbuh = $_POST['izuchrbuh'];}
    if (isset ($_POST['novoelicobuh'])) {$novoelicobuh = $_POST['novoelicobuh'];}
    if (isset ($_POST['buh'])) {$buh = $_POST['buh'];}
    if (isset ($_POST['zaiavitel'])) {$zaiavitel = $_POST['zaiavitel'];}
    if (isset ($_POST['deiat'])) {$deiat = $_POST['deiat'];}
    if (isset ($_POST['inet'])) {$inet = $_POST['inet'];}
    if (isset ($_POST['press'])) {$press = $_POST['press'];}
    if (isset ($_POST['rekomend'])) {$rekomend = $_POST['rekomend'];}
    if (isset ($_POST['inoe'])) {$inoe = $_POST['inoe'];}
    if (isset ($_POST['koment'])) {$koment = $_POST['koment'];}
    if (isset ($_POST['name'])) {$name = $_POST['name'];}
    if (isset ($_POST['vashtel'])) {$vashtel = $_POST['vashtel'];}
    if (isset ($_POST['Submit'])) {$Submit = $_POST['Submit'];}
    $address = '[email protected]';
    $sub = "Сообщение с моего сайта от посетителя по имени". $name."Его адрес". $email;
    $mes = "Текст: $nazvanierus \n Указал свой адрес: $email \n Содержание письма: $message \n Русское название: $nazvanierus \n Англиское название: $nazvanieeng \n Юридический адрес: $juradres \n Уставной капитал: $kapital \n Денежный взнос: $denvznos \n Имущественный взнос: $imushvznos \n Обычное налогообложение: $obich \n УСН 6%: $usn6 \n УСН 15%: $usn15 \n Директор: $direktor \n Генеральный директор: $gendirektor \n Из учредителей: $izuchr \n Новое лицо: $novoelico \n Бух из учредителей: $izuchrbuh \n  Бух новое лицо: $novoelicobuh \n Бухгалтер: $buh \n Заявитель: $zaiavitel \n Деятельность: $deiat \n Из интернета: $inet \n Из прессы: $press \n По рекомендации: $rekomend \n Иное: $inoe \n Коментарий: $koment \n Имя: $name \n Телефон для связи: $vashtel \n";
    $verify = mail ($address,$sub,$mes,"Content-type:text/plain; 
    charset = windows-1251\r\nFrom:$email"); 
    If ($verify ='true') {echo "Всё отлично, ваше сообщение отправлено!";}
    Else {echo "Из-за сбоев сообщение не может быть доставлено";}
    ?>

    Запостил: atarix12, 19 Января 2010

    Комментарии (43) RSS

    • а если бы параметров было не 32 а 102 ?
      китайские методы такие китайские
      Ответить
      • Именно китайские, взяли бы на написание кода не 32, а 102 китайца, каждому по строчке.
        Ответить
        • xDD я уже говорил как то: на строчку кода - по китайцу!
          Ответить
    • Главное, что $Submit не забыли
      Ответить
    • Памятник и медаль за упорство и настойчивость :)
      Ответить
    • Будут сбои, юзер же так и не поймет :)
      Ответить
    • эй, а как по другому проверить все параметры? А если их ещё от xss\sql inj фильтровать надо?
      Ответить
      • ты это серьезно ?
        про массивы/хэши слышал ?
        Ответить
        • хотя о чем это я)
          аноним продолжай хавать свой кактус и заводи по переменной на каждый чих
          Ответить
          • Пожалуйста, ваше решение в 10 строк в студию.
            Ответить
            • Такой Вы наивный... ха!

              p.s. в любом учебнике пример в 10 строк есть, просто нужно открыть и прочитать.
              Ответить
              • Спасибо, я так и думал.
                Ответить
                • $fields= array('OOO', 'zao', 'oao', 'juradres' ....);
                  $data = array();
                  
                  foreach ($_POST as $key => $val) 
                       if (in_array($key, $fields))
                             $data = filter_input ($val);
                  
                  // если прям хотите как в эпоху динозавров, то
                  foreach ($_POST as $key => $val) 
                       $$key = @filter_input($val);


                  Даже 10 строк не будет.
                  Ответить
          • Не поленитесь объяснить, что значит ваша фраза "заводи по переменной на каждый чих" применительно для данного конкретного говнокода.
            Ответить
            • $post_name_submit = {...}
              $post_id_submit = {...}
              $post_rusname_submit = {...}
              $post_html_submit = {...}
              $post_anotherfuckingshit_submit = {...}

              вместо простого

              $post['submit'] = array("name"=>{...}, "id"=>{...});
              (я не он, но аноним за анонима скажет)
              Ответить
      • долго смеялся .. )
        по моему это просто фейк!!
        вообще, если ничего не получается - почитай инструкцию )
        или литературу о "xss\sql inj".....
        Ответить
    • А еще код при любых обстоятельствах будет выводить "Всё отлично, ваше сообщение отправлено!"
      Ответить
    • пример ис децтва
      Ответить
    • У самого такое было.
      Сейчас так делаю:
      foreach ($_POST as $parameter => $value) {
      $data[$parameter] = xss_protection($_POST[$parameter], true);
      }
      Функцией xss_protection() проверяю переменные.
      Ответить
      • Смишно.
        И что ты там проверяешь?
        Ответить
        • function xss_protection($input_variable, $for_sql = false)
          {
          $input = htmlentities($input_variable, ENT_QUOTES, "UTF-8");

          if (get_magic_quotes_gpc()) {
          $input_variable = stripslashes($input_variable);
          }

          if ($for_sql) {
          $input_variable = mysql_real_escape_string($input_variable );
          }

          $input_variable = trim(strip_tags($input_variable));
          return $input_variable;
          }
          Ответить
          • простите, но это глупось.. На каком основании здесь делается trim? А strip_tags? 0-о
            Ответить
            • Тут просто все кучу свалено и обозвано xss
              Ответить
            • Потому что мне нужно удалять из переменных все тэги, пробелы, табуляции и тп., что бы пользователи не писали в комментариях что то типа "<script>alert('Глупость')</script>", всё это я делаю этой функцией, если это можно делать каким либо другим способом, расскажите, буду рад, так как этим занимаюсь совсем мало.
              Ответить
              • Как видишь, написал <script>alert('Глупость')</script> и ничего не произошло

                Данные нужно экранировать при выводе, а не вырезать теги
                Ответить
          • $safe_post = array_map('htmlspecialchars', $_POST);

            вполне достаточно
            Ответить
            • А если в посте массив?

              Входящие данные не нужно экранировать. Нужно только при выводе или сохранении
              Ответить
              • А как же sql injection? Она тоже при выводе делается до?
                Ответить
                • где тут запрос к базе? я лично не вижу.
                  Ответить
    • Построчная оплата)
      Ответить
    • Наскольно я понимаю, будет notice и куча ненужного в письме, из-за способа сборки строки с неопределенными переменными.
      $nazvanieeng = isset ($_POST['nazvanieeng']) ? 'Англиское название: '.$nazvanieeng. '\n' : '';
      $mes = "Текст:".$nazvanierus.$nazvanieeng. ....

      В этом случае такая простыня была бы оправдана.
      Но человек, который пишет true в кавычках наверное доволен что хоть как-то работает?
      А, да кстати, клиент видит "Всё отлично", а значит внешне все отлично))
      Ответить
      • еще и вот это:
        charset = windows-1251 )))
        ох, наивность..
        Ответить

    Добавить комментарий