четверг, 13 ноября 2008 г.

Скрипт для определения браузера, ОС и др. из User-Agent¡!

Скрипт имеет структуру класса. Скрипт определения браузер, (ОС), также скрипт может определит какой именно операционную систему, какой бот зашёл к вам на сайт, т.е. такие ботов, которые ходят не для спама и всяких других пакостей, а для дела (например: Yandex bot).

Скачать скрипт, для определения браузера, операционной системы, вы можете здесь. Размер скрипта в архиве .zip составляет 1.80 Кб.

Скрипт может определять следующие браузеры: Opera Mini, Opera, IceWeasel, Konqueror, Lynx, Flock, AOL Explorer, Avant Browser, Minimo, Amaya, MSIE, Netscape, Chrome, Safari, PlayStation, Mozilla Firefox, w3m. Также скрипт определяет версии большинство вышеперечисленных браузеров.

Скрипт может определять следующие операционные системы (ОС): Ubuntu, Linux, Windows, Windows NT(т.е. XP, Vista и др), Windows Mobile, Macintosh(т.е. Mac OS X, Mac OS 9 и др), SunOS, BeOS, FreeBSD, OpenBSD, IRIX, OS/2, Plan9, Unix, OSF, Nintendo DS, Nokia 770/Maemo, PlayStation, Symbian OS, J2ME. Также скрипт определяет версии операционных систем (ОС).

Скрипт может определять следующих Bot'ов: Googlebot, Googlebot-Image, Accoona-AI-Agent, Gigabot, Grub (LookSmart), Gulper Web Bot, MihalismBot, Microsoft’s MSN Search, OmniExplorer_Bot (Feeds Vast.com), Scooter (AltaVista), W3C Validator, W3C CSS Validator, WebAlta Crawler, Wget, YahooFeedSeeker, Yahoo!-MMCrawler, YandexBlog, YandexSomething, Yandex, Yahoo! Slurp, Alexa, antabot (private), Ask.com/Teoma, Baidu Spider, EltaIndexer, Feedfetcher-Google, GameSpy, PageBull, Yahoo! Slurp. Также у большинства ботов(роботов программ) определяется и версия.

Скрипт просто в обращение для того чтобы он заработал вам достаточно инициализировать переменную и класс:
$agent = (($_SERVER['HTTP_USER_AGENT']==true) ? $_SERVER['HTTP_USER_AGENT'] : $http_user_agent);
$n = new UserAgent($agent);
print ''.$agent.'<br>'.$n->agent[os].' — '.$n->agent[brows].' '.$n->agent[version].' — '.$n->agent[bot].'<br>';


* This source code was highlighted with Source Code Highlighter.



При разработки скрипта сильно помог google.com и материалы wikipedia.org. Это не все возможные параметр, которые можно выделить из User-Agent. В данном скрипте определяются не все браузеры, операционные системы и боты(роботы программы), а только те что перечислены выше, если вы хотите добавить информацию о браузере, операционной системе(ОС) или о боте(робот программ), но сами не в состояние этого сделать вы можете оставить сообщение в комментариях с названием и пометкой(например: браузер DarkSide) и в будущем релизе появиться данный браузер, операционная система(ОС) или же бот.

понедельник, 10 ноября 2008 г.

Функция для вывода даты

Когда-то давно я разбирал движок для форума PunBB и взял от туда функцию, которая выводить дату или время интересным образом. Если дата добавленной информации не превышает одного дня с момента добавления, то выводиться дата в виде — «Сегодня в 15:13:03», если же дата с момента добавления не превышает 2 дней, то дата выводиться в виде — «Вчера в 18:48:26», и наконец, если дата превышает 2 дня с момента добавления информации, то дата выводиться в стандартном виде — «08-11-2008 15:03:24»

Вот сама функция, она простая:
function format_time($timestamp, $date_only = false){
    if ($timestamp == '')
        return "";

    $diff = 0;
    $timestamp += $diff;
    $now = time();

    $date = date("d-m-Y", $timestamp);
    $today = date("d-m-Y", $now+$diff);
    $yesterday = date("d-m-Y", $now+$diff-86400);

    if ($date == $today)
        $date = "Сегодня в ";
    else if ($date == $yesterday)
        $date = "Вчера в ";

    if (!$date_only)
        return $date.' '.date("H:i:s", $timestamp);
    else
        return date("d-m-Y H:i:s", $timestamp);
}


* This source code was highlighted with Source Code Highlighter.


Для того чтобы вывести дату в одном из выше приведённых виде вам надо использовать unix-веремя, пример использования:
echo format_time((time()-15444));

* This source code was highlighted with Source Code Highlighter.

Для того чтобы вывести просто дату и время в стандартном виде, достаточна в функцию добавить ещё один параметр, например:
echo format_time((time()-15444),true);

* This source code was highlighted with Source Code Highlighter.

понедельник, 3 ноября 2008 г.

Функция для вывода даты и времени

Функция выводить дату и время в более понятном для человека виде.

Пример №1: Сегодня Понедельник, 3 Ноября 2008
Пример №2: Сегодня Понедельник, 3 Ноября 2008 13:38:29

function timedate($js=true){
  $month = array(
  '01' => 'Января',
  '02' => 'Февраля',
  '03' => 'Марта',
  '04' => 'Апреля',
  '05' => 'Мая',
  '06' => 'Июня',
  '07' => 'Июля',
  '08' => 'Августа',
  '09' => 'Сентября',
  '10' => 'Октября',
  '11' => 'Ноября',
  '12' => 'Декабря');
  $day = array(
  '0' => 'Воскресенье',
  '1' => 'Понедельник',
  '2' => 'Вторник',
  '3' => 'Среда',
  '4' => 'Четверг',
  '5' => 'Пятница',
  '6' => 'Суббота');
  if ($js==true)
    $js =" <span id=\"ctime\"></span><script>function sTime(){var d = new Date();h = d.getHours() + ''; if (h.length == 1) h = '0' + h;m = d.getMinutes() + ''; if (m.length == 1) m = '0' + m;s = d.getSeconds() + ''; if (s.length == 1) s = '0' + s;document.getElementById('ctime').innerHTML = h + ':' + m + ':' + s;setTimeout('sTime()', 500);}sTime();</script>";
  return date("Сегодня ".ucfirst($day[date("w")]).", j ".ucfirst($month[date("m")])." Y").$js;
}


* This source code was highlighted with Source Code Highlighter.


Для того чтобы вывести дату, пример №1, надо записать следующую строчку
echo timedate($js=false);

* This source code was highlighted with Source Code Highlighter.

Для того чтобы вывести дату, пример №2, надо записать следующую строчку
echo timedate();

* This source code was highlighted with Source Code Highlighter.


Функция для вывода времени использует javascript, а для вывода даты функцию PHP date(). По умолчанию стоит вывод даты и времени.