"PHP" / Говнокод #12121 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
function db_connect($serverMySql, $db_log, $db_pass) //create connection
{
    $r = mysql_connect($serverMySql, $db_log, $db_pass);
    return $r;
}
//....
// страницы
if (empty($_GET["p"])) {
    $_GET["p"] = "1";
}
$p = $_GET["p"];

// защита от ввода  
if (preg_match("/[%a-z_@.,^=:;Р°-СЏ\"*()&$#в„–+\-!?<>\~`|[{}\]]/i", $p)) {
    die(header("Location:sluch_list.php"));
}

http://hashcode.ru/questions/163555/php-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4-%D1%84%D1%80%D0%B0%D0%B7-%D0%BF%D0%BE-%D1%80%D0%B5%D0%B9%D1%82%D0%B8%D0%BD%D0% B3%D1%83

Запостил: nolka4 nolka4, (Updated )

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

  • // защита от ввода
    if (preg_match("/./", $p)) {
        die(header("Location:sluch_list.php"));
    }
    Ответить
    • И кстати "в" тоже.

      P.S. А, понял, там были символы в utf-8, а ОП или изначальный автор скопастил не в той кодировке.

      P.P.S.
      $ echo "Р°-СЏ" | iconv -f utf-8 -t cp1251
      а-я
      Ответить
      • Вот так всегда и бывает. Одна сплошная беда с этими национальными кодировками.
        Ответить
        • Это еще не самый худший вариант. Я как-то скачал торент с музыкой, в котором все cue-shitы были сохранены сначала в cp1252, потом прочитаны как cp1251 и сконвертированы в utf8. Вообще говоря, подобная херня есть почти в половине раздач, а во второй половине вместо тэгов просто ерудна.
          Ответить
          • Видели мы теги и в KOI8 и в Windows-1251. Это не самое плохое. Теги хоть автоматом конвертировать можно.
            Ответить
          • Проблема однобайтных кодировок стоит чуть шире. Русский текст и его метаморфозы - мелочи, в конце концов, можно и перекодировать, действительно.
            Дело в том (на правах КО), что вторая половина кодовой таблицы отдана под национальные символы. Под [b]любые/b] национальные символы. Берём классическую песню, которая в итальянском называется La donna è mobile. Беда спряталась в символе "è". Его в русской половине нет ни в кои-то вин-досе. ЕМНИМП, на месте этого символа стоит "и". Часто текстовые редакторы честно предупреждают и отбрасывают "хвостик", оставляя "e". Но обычно при копировании с/на FAT, файловая система распоряжается именами вульгарно и как ей вздумается. Ничего про итальянский она не знает, потому спокойно считает это "и". В итоге получаем La donna и mobile (Результатов: примерно 76 200). Подобную ситуацию можно наблюдать во многих испано-италоязычных текстах в однобайтной кодировке, в т. ч. и в инторнет-страницах.
            Вывод один. Однобайтные кодировки должны умереть.
            Ответить
                • utf-8 разве не 8-мибитная (следовательно однобайтная)?

                  upd: Почитал, разобрался, спасибо за просвящение.
                  Ответить
                  • Один символ может быть представлен с помощью от одного до шести байтов. Так что нет, не однобайтная.
                    Ответить
                    • Жил отважный капитан, он объездил много стран. И не раз он бороздил океан...

                      > upd: Почитал, разобрался, спасибо за просвящение.
                      Ответить
                  • > спасибо за просвящение
                    Нам нисколько не жалко делиться нашей святостью
                    Ответить
            • А еще, помнится, при записи на CD имена файлов обрезались по букве "л". Получалось что-то типа:
              - Звезда по имени со
              - Это не
              - Черный а
              - Пос
              Не знаю, связано ли это с программой или с самим форматом фс; и имеет ли значение, что в коде для буквы л присутствует то символ ";", то ли "<"...
              Ответить

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8