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

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
<?php
	
	( ( (float)phpversion() < 5.3 ) ) ? die ( 'fail amigo.' ) : '';
	
	$site = file_get_contents( "http://www.google.com.br/search?hl=pt-BR&q=VBXMCBVFKJSHDKHDKF" );

	$getLocationViaGoogle = function ( $html ){
		$regex = "#<\w+\s\w+=\"tbos\">([^<]{3,})<\/\w+>#i";
		preg_match_all( $regex, $html, $matches );
		return $matches[1][0];
	};
	
	print $getLocationViaGoogle( $site );
	
?>

Вообще пиздец, определяет местоположение, сканировав страницу гугля и вырезав заданное ручками пользователем местоположение.

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

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

  • 03 и 05 строчки убивают ...

    автор наверное суровый яваскриптер ...
    Ответить
  • Еще не понятно, зачем здесь использова РНР 5.3
    Ответить
    • Потому что автор объявил ниже анонимную функцию getLocationViaGoogle.
      "PHP имеет встроенную поддержку замыканий начиная с версии 5.3"
      Ответить
      • Хотя умирать на несвежих версиях PHP, только из-за того что автору нравится такой стиль объявления функции - это fail amigo.
        Ответить
      • >it loads the whole file in main memory first
        >As a general rule, use file_get_contents()(or -replacement) only when you are sure the file to be loaded is small.
        В интернете вообще для таких целей предлагают использовать cURL.
        Вообще, весь этот код непонятный страшный костыль, вот статья, метод для определения местоположения только с помощью JS. Сейчас многие браузеры поддерживают: http://robertnyman.com/2010/03/15/geolocation-in-web-browsers-to-find-location-google-maps-examples/
        Ответить
        • Вообще file_get_contents всегда будет кушать меньше памяти, если надо просто прочитать файл любого размера в память, для последующей обработки. А писалось не про то что file_get_contents плохо работает с большими файлами, а про то что подход с загрузкой всего контента в память сам по себе неправильный и надо использовать, например, fread, который хоть и работает медленнее, но может секономить память, если им правильно пользоваться.
          А по поводу cURL, недавно пришлось переписать XMLRPC клиент с cURL на file_get_contents, потому что последний безбожно глючит под виндой. Так, что не стоит верить всему что пишут в интернетах.
          Ответить
      • Грустно получение файла с помощью file_get_contents по URL со стороннего сайта. Обязательно нужно объяснять почему?
        Ответить
        • Объясните, интересно послушать… Особенно если использовать контекст. А его тут можно использовать, потому что он появился в 5.0, а для этого скрипта минимальные требования аж 5.3 🙂
          Ответить
  • Говнокод тут заключается ещё в том, что на PHP версии меньше 5.3 он вылетает с Parse error.
    Так что: epic fail, amigo
    Ответить
    • я бы рекомендовал такой autoprepend:

      if (version_compare(PHP_VERSION, '10.0.0', '<')) {
      die 'i do not let u degrade, please go study C ';
      }
      Ответить
  • хм, вобщето самый сок не в коде, а в том, что местоположение определяется по адресу сервера, а не юзера )
    Ответить
    • Точно! Если это в PHP, то глупый запрос на Гугл отправит сервер, а не браузер.
      Код найдёт на странице
      <li class="tbos">какое-то-там-расположение</li>
      и возвратит расположение сервера.

      Кстати, его можно обмануть. Разместить на своей странице текст VBXMCBVFKJSHDKHDKF и код типа
      <pre><li class="tbos">планета Марс</li></pre>
      Если Гугл нашу страницу проиндексирует, будет весело.
      Ответить
      • Да нет, если раскрыть панель гугля слева, там есть поле: … – искать поблизости
        Туда можно ввести адрес. Этот код выдирает адрес именно оттуда, так что наша страничка не при чем.
        Ответить
      • >Разместить на своей странице текст VBXMCBVFKJSHDKHDKF и код типа
        Бессмыслено. Возвращается первое совпадение, а левый столбец найдется раньше.
        Ответить
  • - Не знаю, Лёка, не знаю. Почему это с нами произошло...
    Ответить

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

Из-за тебя ушел bormand, guest!

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


    8