четверг, 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(). По умолчанию стоит вывод даты и времени.

пятница, 31 октября 2008 г.

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

Функция для вывода анонса для новостей, статей, рефератоф, сообщений, ответов на вопросы и для всего остального, где требуется прежде анонсировать информацию.
function countstr( $str, $count=100 ){
$arr = explode(' ', strip_tags( $str
) );
$str = '';

for ($i=0; $i<=$count; $i++){
$str .=" ".$arr[$i];
}

return $str;
}

Не большая, но нужная функция написанная на PHP. По умолчанию выводиться 100 слов из текста. При выводе анонса вырезаются все теги, к анонсам часто прикрепляют картинки и если у вас картинки не выводятся отдельно от текста новости, то нужно изменить следующую строчку $arr = explode(' ', strip_tags( $str ) ); на $arr = explode(' ', strip_tags( $str, "<img>" ) );, также вы можете добавить и другие теги, которые бы хотели видеть в анонсе.

Запускается функция следующим образом:
$str = 'Здесь полный текст новости';
echo countstr( $str );
Чтобы изменить количество выводимых слов в анонсе достаточно изменить функцию countstr( $str ); на countstr( $str, 250 ); число 250 показывает количество слов выводимых в анонс.

среда, 29 октября 2008 г.

Объявление переменных _POST

В PHP после отправки данных методом POST , объявление переменных происходит через массив _POST, который появился в PHP 4.1. Можно упростить объявление и обработку переменных методом _POST и избавить себя от лишних строчек кодописания.

Объявления и обработка переменных выглядит следующим образом:

$login = $_POST['login'];
$psw = $_POST['password'];
$email = $_POST['email'];

//Обработка переменной логин
$login = trim($login);
$login = strip_tags($login);
$login = htmlspecialchars($login);
$login = addslashes($login);

//Обработка переменной пароль
$psw = trim($psw);
$psw = strip_tags($psw);
$psw = htmlspecialchars($psw);
$psw = addslashes($psw);

//Обработка переменной логин
$email = trim($email);
$email = strip_tags($email);
$email = htmlspecialchars($email);
$email = addslashes($email);


* This source code was highlighted with Source Code Highlighter.


Тоже самое действие можно сделать и более простым кодом:
$vars = $_POST;
foreach (array_keys($vars) as $key){
${$key} = trim($vars[$key]);
${$key} = strip_tags(${$key});
${$key} = htmlspecialchars(${$key});
${$key} = addslashes(${$key});
}


* This source code was highlighted with Source Code Highlighter.

Ещё проще выше приведённый код можно представить так:
$vars = $_POST;
foreach (array_keys($vars) as $key){
${$key} = addslashes( htmlspecialchars( strip_tags( trim( $vars[$key] ) ) ) );
}


* This source code was highlighted with Source Code Highlighter.


Данный упрощённый способ можно представить в виде функции, но для того чтобы данная функция заработала вам придётся пренебречь безопасностью, чего я вам не советую делать, включив переменную register_globals в php.ini. При использование данного метода не значительно повышается время исполнения кода, где-то на 21% - это десятитысячные доли мили секунд, так что данный способ вполне можно использовать не опасаясь.

вторник, 28 октября 2008 г.

User API ВКонтакте с этого дня доступна на userapi.com

Сервис предназначен для быстрого построения соц. сети (заявленное минимальное время — 5 мин.)
Новые сети будут использовать данные сети ВКонтакте (пользователи, фото, etc.).
При монетизации проекта: доходы будут делиться на 60% хозяину, 40% User API. Подробнее в уловиях пользования User API.

Документация проекта.

Из блога Дурова:

Мы считаем, что будущее интернета находится в руках отдельных пассионарных личностей, многие из которых сейчас читают это сообщение. Поэтому мы запускаем проект User API В Контакте, который позволяет любому желающему без затрат создавать отдельные социальные сети в различных странах мира.

Благодаря User API ВКонтакте (http://userapi.com), Вы можете создать аналог ВКонтакте, например, в Корее (Южной) или Чехии и будете обладать полным контролем над собственной социальной сетью, ее функциями, внешним видом и доходами. В то же время, Вы сможете делать это на основе единой базы данных ВКонтакте с уже существующими миллионами пользователей и миллиардами фотографий.

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

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


Подробная информация о User API ВКонтакте

среда, 22 октября 2008 г.

PHP-скрипт прогноза погоды для сайта скачать бесплатно

Не большой скрипт предназначенный для грабинга погоды с сайта gismeteo.ru, а именно скрипт открывает с сайта gismeteo.ru данные из XML файла и разбирает его на составляющие.

Скрипт просто в использовании вам достаточно знать ID вашего города, узнать ID вашего города вы можете на сайте http://informer.gismeteo.ru/xml.html, далее выбираете в списках страну и город, например, страна Россия город Москва. Находим url следующего вида
http://informer.gismeteo.ru/xmlinf/27612_1.xml из него мы берём последнюю часть 27612_1.xml для того чтобы нам вывести погоду на сайте нужно скачать архив Weather, скачать его можно по следующей ссылке [скачать 53.1 Кб].

После чего распаковываем архив, открываем файл weather.php убираем всё что там есть и вставляем следующее 5 строчек, не забывайте
  1. require_once'class.weather.php';
  2. $w = new Weather;
  3. $w->ConnectCache('28367_1.xml');
  4. echo $w->city;
  5. echo $w->weather;
* This source code was highlighted with Source Code Highlighter.

Потом закидываем на хостинг и запускаем weather.php и вот у вас погода в Москве на 24 часа вперёд.

Данные полностью разобраны вы можете изменять класс как вам угодно, вывести данные тоже, возможно, как угодно, для этого открываем файл class.weather.php, он, более менее, от комментирован.

Есть возможность кешировать данные и задавать время обновления, по умолчанию 7200 сек или 2 часа, в приведённом выше примере данные кешируются, для того чтобы задать время кеширование посмотрите след. пример., т.е. через 3 часа кеш-файл обновиться.
  1. require_once'class.weather.php';
  2. $w = new Weather;
  3. $w->ConnectCache('28367_1.xml','10800');
  4. echo $w->city;
  5. echo $w->weather;
* This source code was highlighted with Source Code Highlighter.
Для того чтобы вывести данные без кеширования достаточно изменить одну строчку, смотрите след. пример.
  1. require_once'class.weather.php';
  2. $w = new Weather;
  3. $w->Connect('28367_1.xml');
  4. echo $w->city;
  5. echo $w->weather;
* This source code was highlighted with Source Code Highlighter.
Переменная $w->city это название города, а переменная $w->weather это погода в городе.

Скрипт больше всего подходит для создания блока погоды на сайте, но вы можете зменить его как вам угодно. Сразу предупрежу быдло пыхпых код. Вопросы предложения пожелания в комментариях.

Могут возникнуть проблемы с функцией file_get_contents() т.к. на некоторых хостингах директива allow_url_fopen в php.ini выключена и включить её через .htaccess не получится.

суббота, 19 июля 2008 г.

База имён скачать

Как-то я сделал скрипт и собрал с одного проекта базу имён, теперь хочу поделиться с вами, базой имён.

У меня она пока не нашла применения, может у вас на ваших проектах найдёт. База имён была взята с проекта http://www.peoples.ru/name/.

Сама база в файле .sql, в базе имён 306 строчек, структура базы имён состоит из 5 колонок, это id - уникальный идентификатор, name - имя (на русском, например: Александр), pol - пол (имеет два значения, женское или мужское), grech - значение имени в древне греческом (например: др. -греч. - "защитник людей"), text - поле с описанием характера имени.

Скачать базу имён можно по этой ссылки скачать[База имён]. Размер архива состовляет всего 158 Кб.

понедельник, 14 июля 2008 г.

Для экономии трафика, можно использовать блокировку изображения. Вернее будет сказать запрет на использование картинок с другого сайта.

Чтобы запретить использовать картинки с вашего сайта на другом проекте, нужно создать файл .htaccess со следующим содержанием:
RewriteEngine On
RewriteOptions MaxRedirects=100
RewriteCond %{HTTP_REFERER} !^http://(tyuwoork\.)?blogspot\.com/ [NC]
RewriteRule \.(jpe?g|gif|bmp|png)$ http://
tyuwoork.blogspot.com/tyuwoork.gif [L]
После чего закинуть созданный файл .htaccess в папку с картинами, например, /images/.
Для того чтобы вся система работала в Apache должен быть установлен Mod Rewrit и рас комментирован.

В данной строке
RewriteCond %{HTTP_REFERER} !^http://(tyuwoork\.)?blogspot\.com/ [NC]
Адрес http://(tyuwoork\.)?blogspot\.com/ нужно заменить на адрес вашего сайта, например, http://(www\.)?inet72\.ru/

В данной строке
RewriteRule \.(jpe?g|gif|bmp|png)$ http://tyuwoork.blogspot.com/tyuwoork.gif [L]
Адрес http://tyuwoork.blogspot.com/tyuwoork.gif является картинкой, которая будет отображаться в случаи запроса картинки другим сайтом из папки /images/, вы можете поставить свой логотип, например, http://www.inet72.ru/thems/logo.jpg.

Первый винчестер на 1,5 ТБ

Seagate рапортовала о выпуске первого в мире винчестера объёмом 1,5 ТБ для настольных ПК. Максимальная ёмкость дисков разом выросла в полтора раза: с одного до полутора терабайтов. Таким образом, модель Barracuda 7200.11 знаменует собой самый большой скачок в ёмкости дисков за всю 50-летнюю историю существования HDD.

Одновременно Seagate выпустила HDD для ноутбуков на 500 ГБ. Оба винчестера основаны на технологии перпендикулярной записи (PMR, perpendicular magnetic recording).

Винчестер Barracuda 7200.11 состоит из четырёх пластин, а интерфейс Serial ATA 3 Гбита/c гарантирует скорость передачи данных на уровне 120 МБ/с.

Поставки винчестеров на полтора терабайта начнутся в августе 2008 года.
Gogo.ru поисковая система от холдинга Mail.ru сменила дизайн.

воскресенье, 13 июля 2008 г.

Шаблон v1




Вот такой шаблончик...вроде бы неплохо.

Вот только как обычно...работает в разных браузерах совсем по разному( Ппц(

среда, 9 июля 2008 г.

Создание шаблона к Google.Blog

  1. Открываем админку.
  2. Лезем в макет.
  3. Выбираем шаблон с наиболее понравившейся версткой. (расположением объектов)
  4. Изменить HTML.
  5. Находим все строки подобного типа
    url "http://www1.blogblog.com/harbor/rocks_$startSide.jpg")
  6. startside переменная у нас принимает значения left и right. Хотя разобравшись я понял что например для меня нужны только left. Зачем поддержка отображаемого шаблона зеркально непонятно.
  7. Поочередно подставляя эти значения выкачиваем все картинки шаблона.
  8. Заходим на наш блог.
  9. Делаем скрин.
  10. Подставляем скрин в фотошоп.
  11. Поверх накладываем сохраненные изображения как мозайку.
  12. Делаем разметку с помощью Slice для удобства.
  13. Поверх расставляем свои элементы slice'ом копируем их в отдельные изображения.
  14. Сохраняем все полученные картинки.
  15. Аттачим их к любому сообщению в блоге.
  16. Прописываем в HTML абсолютные пути до данных изображений.
  17. Радуемся новому шаблону. Щас посмотрим чего получилось у меня.