1. Список говнокодов пользователя Morgan

    Всего: 14

  2. PHP / Говнокод #5020

    +159

    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
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    $link = 'http://www.logofon.ru/xml/ips.xml';
    
    $file = win_to_utf(file_get_contents($link));
    
    $file = trim(substr((substr($file,0,strripos($file,'</operators>'))),(stripos($file,'<operators>') + 11)));
    
    #echo substr_count($file,'<operator').'<br />';
    
    #preg_match_all('|\<operator(.*)\>(.*)\<\/operator\>|sUu',$file,$res);
    #array_dump($res);
    
    preg_match_all('|\<operator id="([0-9]*)" name="([[:space:]a-zA-Zа-яА-ЯёЁ0-9-(){}_.:]*)" label="([[:space:]a-zA-Z0-9]*)" tld="([a-zA-Z0-9]*)" country="([[:space:]a-zA-Zа-яА-Я0-9-(){}_.]*)" publish="([0-9]*)"\>(.*)\<\/operator\>|Usu',$file,$result);
    
    
    
    //-- Количество операторов
    $count_oper = count($result[0]);
    
    //-- Массив операторов
    $operators = array();
    
    //-- Запускаем цикл
     for($i = 0;$i < $count_oper; $i ++)
    {
    //-- Массив текущего оператора
    $operators[$i] = array();
    
    $operators[$i]['id'] = $result[1][$i];
    $operators[$i]['name'] = $result[2][$i];
    #$operators[$i]['label'] = $result[3][$i];
    $operators[$i]['tld'] = $result[4][$i];
    $operators[$i]['country'] = $result[5][$i];
    
    
    
    //-- Создаем базы IP
    $operators[$i]['ip'] = array();
    
    preg_match_all('|\<range ip1="([0-9]{10})" ip2="([0-9]{10})" mode="([0-9]*)" \/\>|Usu',$result[7][$i],$result2);
    #echo '<b>#'.($i + 1).'.</b>'.htmlspecialchars($result[7][$i]).'<br />';
    #array_dump($result2);
    
    //-- Количество диапазанов для текущего опера
    $count_ip = count($result2[0]);
    
    //-- Еще один цикл
      for($j = 0;$j < $count_ip; $j ++)
     {
     	query("INSERT INTO `$db[prefix]ips` SET `name`='{$operators[$i]['name']}',`id_op`='{$operators[$i]['id']}',`country`='{$operators[$i]['country']}',`tld`='{$operators[$i]['tld']}',`ip1`='{$result2[1][$j]}',`ip2`='{$result2[2][$j]}' ")or my_error();
    # $operators[$i]['ip'][$j] = array($result2[1][$j],$result2[2][$j]);
    #echo long2ip($result2[1][$j]).' --- '.long2ip($result2[2][$j]).'<br />';
     }
    
    }
    
    
    echo 'Операторов после : <b>'.($count_op_after = mysql_num_rows(query("SELECT COUNT(*) FROM `$db[prefix]ips` GROUP BY `id_op` "))).'</b><br />';
    echo 'Диапазонов после : <b>'.($count_di_after = mysql_result(query("SELECT COUNT(*) FROM `$db[prefix]ips` "),0)).'</b><br />';

    Парсинг диапазонов IP мобильных операторов

    Morgan, 22 Декабря 2010

    Комментарии (13)
  3. PHP / Говнокод #4786

    +151

    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
    function clean_url ($url) {
    
      if ($url == '') return;
    
      $url = str_replace("http://", "", strtolower($url));
      $url = str_replace("https://", "", $url );
      if (substr($url, 0, 4) == 'www.')  $url = substr($url, 4);
      $url = explode('/', $url);
      $url = reset($url);
      $url = explode(':', $url);
      $url = reset($url);
    
      return $url;
    }
    
    
    if (clean_url($_SERVER['HTTP_REFERER']) != clean_url($_SERVER['HTTP_HOST'])) die("Hacking attempt!");

    DLE 9.0, /engine/modules/antibot.php
    В браузере выключена передача реферера, последняя строчка особо не нужна, ибо HTTP_REFERER не подделывают только из-за лени, а вот полезные пользователи действительно страдают.
    Да и получение хоста из реферера радует.

    Morgan, 29 Ноября 2010

    Комментарии (5)
  4. PHP / Говнокод #4494

    +158

    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
    // Итак, определим класс Namer.
    class Namer {
       var $name;
       var $surname;
       function getName() { return $this->name; }
       function getSurname() { return $this->surname; }
    }
    
    
    
    // Как видим, интерфейсная часть полностью определена. Осталось реализовать два механизма обработки входной строки. Сделаем это мы в двух классах-наследниках SpaceNamer и CommaNamer.
    
    
    //// класс для обработки строки в формате "имя фамилия"
    class SpaceNamer extends Namer {
       function SpaceNamer($full_name) {
          $splitter_pos = strpos($full_name, ' '); // находим пробел
          $this->name = substr($full_name, 0, $splitter_pos); // все, что до пробела - это имя
          $this->surname = substr($full_name, $splitter_pos+1); // после пробела - фамилия
       }
    }
    
    //// класс для обработки строки в формате "фамилия,имя"
    class CommaNamer extends Namer {
       function CommaNamer($full_name) {
          $splitter_pos = strpos($full_name, ','); // находим запятую
          $this->name = substr($full_name, $splitter_pos+1); // все, что до запятой - это фамилия
          $this->surname = substr($full_name, 0, $splitter_pos); // после запятой - имя
       }
    }

    и интерфейсы не нужны!

    Morgan, 31 Октября 2010

    Комментарии (14)
  5. PHP / Говнокод #4452

    +162

    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
    // юзер просит :
    // "Дату выводит как записано в базе к примеру 2010-10-26 15:17:01. А мне нужно вывести Только 15:17. Как так сделать не меняя записи в базе?"
    $infochat=SQLrow("select datesend, id_user, message from minichat order by datesend desc limit 0,1");
    
    // и варианты
    
    $exp=explode(" ", $date); 
    $exp=explode(":", $exp); 
    echo $exp[0].':'.$exp[1];
    
    //.........
    
    $exp=substr("$date", 11, 3); 
    echo $exp;
    
    // :D

    С одного форума

    Morgan, 26 Октября 2010

    Комментарии (10)
  6. PHP / Говнокод #4439

    +155

    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
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    // Юзер просит завернуть в функцию и оптимизировать следующий кусок кода.
    // Статус 
    echo "<u>Статус<u>: "; 
    if ($ank['status']==0){echo 'Нет статуса!<br>';} 
    else if ($ank['status']==1){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Думаю: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==2){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Дела: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==3){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Магазины: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==4){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Печатаю: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==5){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Вопрос: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==6){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Сердитый: '.$ank['status_text'].'<br>';} 
    ........................
    else if ($ank['status']==30){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Пью пиво: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==31){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Слушаю музыка: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==32){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Учеба: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==33){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />Работа: '.$ank['status_text'].'<br>';} 
    else if ($ank['status']==34){echo '<img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />В туалете: '.$ank['status_text'].'<br>';} 
    // Статус
    
    
    
    // Сразу же постит "программист", который зарабатываем на своем деле
    
    function a($st,$t,$H){ 
    $s=range(0,34); 
    unset($s[0]); 
    $r=array('радость','дела','печаль и т.д.'); 
    if(!$s){ 
    echo 'нету статуса'; 
    }else{ 
    echo '<img src=""'. $H . '/icons/status/'.$st.'.gif">'.$r[$st].' '.$t.'<br/>'; 
    } 
    
    } 
    
    
    ########################## 
    a($ank['status'],$ank['text_status'],$H);
    
    
    
    // ну и мой варинат (для сравнения)
      function get_user_status($status_id) 
       { 
        
       $statuses = array 
          ( 
          0 => 'Нет', 
          1 => 'Думаю', 
    ...
          33 => 'Работа', 
          34 => 'В туалете' 
          ); 
    
       return $statuses[$status_id]; 
        
       }
    
    // использовать
    echo 'Статус : <img src="'. $H . '/icons/status/'.$ank['status'].'.gif" />'.get_user_status($ank['status']).': '.$ank['status_text'].'<br>';

    Без комментариев

    Morgan, 25 Октября 2010

    Комментарии (17)
  7. PHP / Говнокод #4243

    +167

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    /**
    	* Получение длины строки для utf-8
    	*/
    	public static function strlen($str) {
        	$rus=array('й','ц','у','к','е','н','г','ш','щ','з','х','ъ','ф','ы','в','а','п','р','о','л','д','ж','э','я','ч','с','м','и','т','ь','б','ю',
                   'Й','Ц','У','К','Е','Н','Г','Ш','Щ','З','Х','Ъ','Ф','Ы','В','А','П','Р','О','Л','Д','Ж','Э','Я','Ч','С','М','И','Т','Ь','Б','Ю');
        	return strlen(str_replace($rus,'0',$str));
    	}

    зачем нам всякие (iconv|mb)_strlen ?
    хотя при отсутствии этих библиотек метод интересный

    Morgan, 13 Сентября 2010

    Комментарии (22)
  8. PHP / Говнокод #4184

    +165

    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
    class microTimer {
    	function start() {
    		global $starttime;
    		$mtime = microtime();
    		$mtime = explode( ' ', $mtime );
    		$mtime = $mtime[1] + $mtime[0];
    		$starttime = $mtime;
    	}
    	function stop() {
    		global $starttime;
    		$mtime = microtime();
    		$mtime = explode( ' ', $mtime );
    		$mtime = $mtime[1] + $mtime[0];
    		$endtime = $mtime;
    		$totaltime = round( ($endtime - $starttime), 5 );
    		return $totaltime;
    	}
    }

    DLE 9.0

    Morgan, 06 Сентября 2010

    Комментарии (4)
  9. PHP / Говнокод #3977

    +151

    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
    <?php  
    
    // фиксация времени начала генерации страницы  
    $begin = microtime();  
    // матрица начального времени с секундами и миллисекундами  
    $arrbegin = explode(" ",$begin);  
    // Полное начальное время 
    $allbegin = $arrbegin[1] + $arrbegin[0];  
    
    ?>  
    
    <?php  
    
    // фиксация времени останова   
    $stop = microtime();  
    // матрица времени останова с секундами и миллисекундами  
    $arrend = explode(" ",$stop);  
    // Полное время останова 
    $allend = $arrend[1] + $arrend[0];  
    // вычитание из конечного времени начального  
    $alltime = $allend - $allbegin;  
    
    // вывод в браузер времени генерации страницы  
    $format = "Страница сгенерирована за %f секунд"; 
    printf($format,$alltime);  
    
    ?>

    http://acvarif.info/wbsphp/additphp/gener.html
    извращенный подсчет времени генерации

    Morgan, 13 Августа 2010

    Комментарии (6)
  10. PHP / Говнокод #3971

    +151

    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
    <?php 
    $result2 = mysql_query("SELECT id,title FROM menu",$db);
    if (!$result2)
    {
    echo "<p>Запрос на выборку из базы не прошел.<br>Код ошибки:</p>";
    exit(mysql_error());
       }
    if (mysql_num_rows($result2) > 0)
    {
    $myrow2 = mysql_fetch_array($result2);
    do 
    {
    printf ("<p class='menu1'><a class=menu href='podelkin.php?cat=%s'>%s</a></p>",$myrow2["id"], $myrow2["title"]);
       }
    
    $cat=$myrow2 ["id"]
    
    $result3 = mysql_query("SELECT id,title FROM data WHERE cat=$cat",$db);
    if (!$result3)
    {
    echo "<p>Запрос на выборку из базы не прошел.<br>Код ошибки:</p>";
    exit(mysql_error());
       }
    if (mysql_num_rows($result3) > 0)
    {
    $myrow3 = mysql_fetch_array($result3);
    do 
    {
    printf ("<p class='menu1'><a class=menu href='podelkin_post.php?cat=%s'>%s</a></p>",$myrow3["id"], $myrow3["title"]);
       }
    while ($myrow3 = mysql_fetch_array($result3));
       }
    while ($myrow2 = mysql_fetch_array($result2));
       }
    else
    {
    echo "<p>Информация по запросу неможет быть извлечена в таблице нет записей</p>";
    exit ();
       }
    ?>

    http://ruseller-board.com/viewtopic.php?f=41&t=4777
    доска Гк xD

    Morgan, 13 Августа 2010

    Комментарии (3)
  11. PHP / Говнокод #3908

    +155

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    <?php
    function dump($var) 
     {
    ob_start();
    echo '<pre>';
    if(is_array($var))print_r($var);
    else var_dump($var);
    echo '</pre>';
    return ob_get_contents();
    ob_end_clean();
    }
    ?>

    не зная про то что у print_r() есть второй параметр, а также, про класс Dumphper писал так (...

    Morgan, 08 Августа 2010

    Комментарии (2)