Первый RSS-каталог №1 | Раздел: Вебмастеру http://www.zelenkov.net/ Только свежие новости! en Wed, 22 Feb 2012 23:23:21 +0400 Wed, 22 Feb 2012 23:23:21 +0400 http://www.zelenkov.net/ MZ_CMS VERSION 1.2.0 support@zelenkov.net (Editor) http://www.zelenkov.net/themes/default/images/site/logo.gif Первый RSS-каталог №1 http://www.zelenkov.net/ Только свежие новости! Определение (версий) функций в PHP-скрипте http://webmaster.zelenkov.net/index.php?id=83422 Определение (версий) функций в PHP-скрипте.]]> Sun, 19 Sep 2010 03:48:51 +0400 http://webmaster.zelenkov.net/index.php?id=83422 Оптимизация обновления http://webmaster.zelenkov.net/index.php?id=80462 Почему?Всё предельно просто. Обновление RSS-каталога (получие данных из rss-каналов, размещённых на других Интерент-ресурсах) происходит поэтапно и достаточно медленно (ну, я б не сказал, что очень быстро - на данный момент каталог обновляется полностью за 4 часа,автоматически). Всякий контент требует многоуровневой (тут каждый RSS-каталог использует разные методы) проверки, прежде чем он будет записан в базу каталога. На это тоже требуется достаточно времени. И для многих не секрет, что бесполезное ожидание апдейт-скрипта скрадывает процессорное время хостера впустую. Этого допускать никак нельзя!

Почему же так выходит, что скорость доступа к новостному потоку может быть малой?

Начнём с того, что для того, чтобы получить требуемые данные (точнее - скачать файл rss-канала, который "отдаёт" сайт) нужно время. Это время складывается из времени доступа к каналу и, собственно, самой закачки файла скриптом RSS-каталога. Поэтому, используя некачественный хостинг или слишком удалённый сервер хостера, вы сами, "своими руками", увеличиваете время доступа к своим данным. И это касается не только rss-канала, транслируемого сайтом. Это касается в целом и всего контента, размещённого вашем на Интерент-сайте!
Вот и получается, что чем больше времени требуется на получение данных их одного новостного потока, тем больше времени в целом требуется на обновление всего RSS-каталога. Выходит, плохой хостинг тормозит обновление. Администрация с этим мириться не намеряна. Все новостные потоки, чьи трансляции происходят с некачественного и/или медленного хостинга, будут обновляться в последнюю очередь. Скорее всего, новости с лент-аутсайдеров будут обрабатываться в такой период времени, в который RSS-каталог менее загружен, т.е. ночью.
Возможно, такой шаг Администрации подтолкнёт кого-то к действиям по смене хостера. Дай Бог! Человек всегда ищет чего-то лучшего для себя.]]>
Sun, 12 Sep 2010 05:14:08 +0400 http://webmaster.zelenkov.net/index.php?id=80462
Хочу называться по-новому! http://webmaster.zelenkov.net/index.php?id=78423 web в английской раскладке кириллицей, получаем цуи. Как-то по-восточному выходит :)

Хочу и буду теперь именоваться цуи-мастер!

]]>
Tue, 07 Sep 2010 00:44:29 +0400 http://webmaster.zelenkov.net/index.php?id=78423
Немного о регистрации сайтов в каталогах http://webmaster.zelenkov.net/index.php?id=76870 сам процесс регистрации. Да, именно он, и ничто другое!

И вот моё ИМХО на этот счёт.

Самое прямое влияние на сам процесс добавления сайта в каталог (или вообще куда угодно) оказывают следующие факторы:
  1. длительность всего процесса в целом;
  2. количество и разнообразие указываемых параметров (включая капчу);
  3. отсутствие информации о назначении каждого параметра (поля), который требуется указать;
  4. отсутствие внятной информации о допущенных ошибках при заполнении форм(-ы);
  5. неудобный механизм возобновления регистрации после исправления ошибок (если такой вообще реализован).
Можно найти ещё несколько факторов, но и этого хватит.
Вобщем, длительный процесс добавления, большое количество параметров в формах (причём - не всегда действительно нужных и важных), неудобный механизм проверки введённых данных (с последующим выводом результата регистрации) - всё это не принесёт пользы никакому каталогу сайтов, который хочет развиваться.
Улучшайте механизмы, делайте их удобнее, уважайте своего пользователя, будьте грамотны и вежливы.

И люди обязательно к вам потянутся!

]]>
Sat, 04 Sep 2010 03:25:34 +0400 http://webmaster.zelenkov.net/index.php?id=76870
Типы переменных в таблицах баз данных http://webmaster.zelenkov.net/index.php?id=75436 ощутимую экономию в пространстве на диске хостера или вашего собственного. Обычная замена INT на SMALLINT для таблицы с ~72к записями даёт экономию около 18%, что является достаточно ощутимым (было 87 Мб, стало 72 Мб)!
Да и, зачем нам, собственно, INT для подсчёта (к примеру) голосов пользователей или переходов на сайты? Максимальное значение положительного INT - 4 294 967 295. Я пока ещё не встречал в Интернете сайт, на котором что-то посмотрели или на что-то нажали 4 миллиарда раз.
Более подробно о цифровых типах и экономии, которую можно получить при правильном их применении, можно почитать на сайте официального источника.]]>
Thu, 02 Sep 2010 04:59:30 +0400 http://webmaster.zelenkov.net/index.php?id=75436
Как получить сведения о WMID? http://webmaster.zelenkov.net/index.php?id=70070 "somevalue"); foreach($formdata AS $key => $val) { $poststring .= urlencode($key)."=".urlencode($val)."&"; } $poststring = substr($poststring,0,-1); $fp = fsockopen("ssl://".$host,$port,$errno,$errstr,$timeout=30); if(!$fp) { $result = $errstr; } else { $data = ""; fputs($fp,"POST $path HTTP/1.1\n\r"); fputs($fp,"Host: $host\n\r"); fputs($fp,"Content-type: application/x-www-form-urlencoded\n\r"); fputs($fp,"Content-length: ".strlen($poststring)."\n\r"); fputs($fp,"Connection: close\n\r\n\r"); fputs($fp,$poststring."\n\r"); while(!feof($fp)) { $data .= fgets($fp,4096); } fclose($fp); if(strstr($data,"VerifyWMIDT.asp")) $result = "Доступ к WebMoney заблокирован!"; else { $data=explode("\n\r",$data); $result["name"] = trim(strip_tags ($data[199])); $result["email"] = trim(strip_tags ($data[457])); $result["epager"] = trim(strip_tags ($data[464])); if($result["name"] == "") $result = "Невалидный кошелёк WebMoney!"; } } return $result; } ?> Пример использования: ]]> Thu, 26 Aug 2010 05:26:45 +0400 http://webmaster.zelenkov.net/index.php?id=70070 Функции для вывода PHP-кода как текста http://webmaster.zelenkov.net/index.php?id=70046 ", $code_string); $whitout_code = str_replace ( "<","<", $whitout_code); return $whitout_code; } // восстановление спецсимволов в строке function remove_php_code ($whitout_code){ $code_string = str_replace ("<", "<", $whitout_code); $code_string = str_replace (">", ">", $code_string); return $code_string; } ?> Функция remove_php_code преобразовывает код для последующего вывода.
Функция remove_php_code - восстанавливает, если требуется.
Обе функции при необходимости могут быть существенно изменены и дополнены.]]>
Thu, 26 Aug 2010 04:57:31 +0400 http://webmaster.zelenkov.net/index.php?id=70046
Гугловский Chrome неполностью показывает XML-файл http://webmaster.zelenkov.net/index.php?id=70031 Chrome (без установленного расширения для чтения RSS-каналов) не покажет следующий код:
< xml version="1.0" encoding="UTF-8" >
Т.е. по нажатию Ctrl-U (Посмотреть исходный код) показывает всё, кроме двух важных параметров - версии XML и кодировки XML-файла.
Почему так происходит - неизвестно. Наверное, этот вопрос стоит адресовать разработчикам этого браузера.

Firefox удобно (чтоб не бросалось в глаза, наверно) выделяет этот код серым цветом и курсивом. Разметки для удобства прочтения не делает.
Opera в тексте код не выделяет, но он там присутствует. Визуальная разметка XML-кода есть.
IE замечательно открывает "Блокнот" со всем, что там должно быть. Правда, без визуальной разметки.
Netscape Navigator, так же, как и Firefox, выделяет с разметкой курсивом и цветом код с версией и кодировкой XML-файла. ]]>
Thu, 26 Aug 2010 03:20:47 +0400 http://webmaster.zelenkov.net/index.php?id=70031
Парсинг RSS-потоков в PHP 5: Ура или нет? http://webmaster.zelenkov.net/index.php?id=69725 simplexml_load_file в PHP 5: channel->item as $item) { echo "

".$item->title."

"; // вывод заголовка записи (статьи) echo $item->description; // вывод описания (текста статьи) } } else die("Ошибка создания XML-объекта"); ?> Обратите внимание на тот факт, что данная функция не всегда правильно интерпретирует данные, например, при "разборе" ленты в формате ATOM. Все данные из потока с feeds.feedburner.com тоже получить не удастся - только заголовки и тексты статей, без ссылок.
Так что можно сделать вывод, что, как это ни печально, функция simplexml_load_file вовсе не становится панацеей для парсинга RSS-каналов, хотя и способна несколько облегчить работу с XML-документами.
А ещё simplexml_load_file не "понимает" неймспейсеc (namespaces). Ну, во всяком случае, я так понял.]]>
Wed, 25 Aug 2010 21:42:07 +0400 http://webmaster.zelenkov.net/index.php?id=69725
file_exists в скриптах парсинга XML http://webmaster.zelenkov.net/index.php?id=69721 php.net, работать будет только локально: Всё потому, что функция file_exists работает только с локальными файлами и/или директориями.]]> Wed, 25 Aug 2010 21:18:41 +0400 http://webmaster.zelenkov.net/index.php?id=69721 iframe killer 0.0.1 http://webmaster.zelenkov.net/index.php?id=69222 Единственное - установите chmod 0775 для всех файлов сайта, а после лечения не забудьте восстановить права.
Копируем в корень сайта и просто запускаем из строки браузера.
P.S. Короткие ремарки () в этой версии не удаляется.
2009
]]>
Tue, 24 Aug 2010 14:18:10 +0400 http://webmaster.zelenkov.net/index.php?id=69222
AJAX - это просто! http://webmaster.zelenkov.net/index.php?id=67350
function ajaxLoad(obj,url,message,post,callback)
{
    var ajaxObj,id=obj
    if(message) document.getElementById(obj).innerHTML="<img src="load2.gif" title="Загрузка данных...">"+message
    if(window.XMLHttpRequest){
        ajaxObj=new XMLHttpRequest()
        if(ajaxObj.overrideMimeType)
            ajaxObj.overrideMimeType("text/xml")
    }else if(window.ActiveXObject){
        ajaxObj=new ActiveXObject("Microsoft.XMLHTTP")
    }else return
    ajaxObj.open((post?"POST":"GET"),url)
    if(post&&ajaxObj.setRequestHeader)
        ajaxObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=windows-1251;")
    ajaxObj.onreadystatechange=ajaxCallBack(obj,ajaxObj,(callback?callback:null))
    ajaxObj.send(post)
    return false
}

function updateObj(obj,data){
    if(document.getElementById(obj).tagName=="INPUT")document.getElementById(obj).value=data
    else document.getElementById(obj).innerHTML=data
}

function ajaxCallBack(obj,ajaxObj,callback){
    return function(){
        if(ajaxObj.readyState==4)
        {
            if(callback)
                if(!callback(obj,ajaxObj))return
            if(ajaxObj.status==200)
                updateObj(obj,ajaxObj.responseText)
            else updateObj(obj,ajaxObj.status+" "+ajaxObj.statusText)
        }
    }
}

function getXmlHttp(){
    var xmlhttp
    if(window.XMLHttpRequest){
        xmlhttp=new XMLHttpRequest()
        if(xmlhttp.overrideMimeType)
            xmlhttp.overrideMimeType("text/xml")
        }else if(window.ActiveXObject){
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
    }else return
    return xmlhttp
}
Изображение load2.gif можно взять тут.]]>
Fri, 20 Aug 2010 04:54:07 +0400 http://webmaster.zelenkov.net/index.php?id=67350
Ловушка для спам-бота http://webmaster.zelenkov.net/index.php?id=67356 robots.txt (описание стандарта Вы можете прочесть здесь www.robotstxt.org/wc/exclusion.html robots.txt standard).
Можно, конечно, пойти путём записи нужных инструкций в файл robots.txt, а можно и предпринять другой способ, который мы опишем ниже.

Метод №1

Используем специальную директорию /bot-trap:
1. создайте поддиректорию /bot-trap (можете использовать любое другое имя)
2. сделайте такую запись в файле robots.txt:
User-agent: *
Disallow: /bot-trap/
3. вставьте невидимую ссылку (это пиксел размера 1х1) в самом начале входной страницы сайта:
Теперь можно ждать и просматривать лог сервера, чтобы посмотреть кто перешёл по этой ссылке.
Человек не увидит этой ссылки, поэтому не сможет по ней перейти, а поисковые системы управляются директивами, записанными в фале robots.txt, поэтому никогда не посетят директорию /bot-trap.
4. В созданную нами директорию мы поместим /bot-trap/index.php. С помощью этого скрипта мы будем автоматически сохранять все IP адреса в файл blacklist.dat.
Для начала создайте пустой файл ../blacklist.dat и сделайте его доступным для чтения и записи на сервере.
* В тексте скрипта измените значения, выделенные курсивом. = "4.2.0") { extract($_SERVER); } ?>
    <html>
    <head><title> </title></head>
    <body>
    <p>Здесь нечего смотреть. Так что же Вы здесь делаете?</p>
    <p><a href="http://your.domain.ru">вернуться назад</a></p>
"); while ($line = fgets($fp,255)){ $u = explode(" ",$line); if (ereg($u[0],$REMOTE_ADDR)) {$badbot++;} } fclose($fp); if ($badbot == 0) { /* отсылаем информацию веб-мастеру */ $tmestamp = time(); $datum = date("Y-m-d (D) H:i:s",$tmestamp); $from = "badbot-watch@domain.ru"; $to = "hostmaster@domain.ru"; $subject = "Внимание! На сайт заходил спам-бот!"; $msg = "Бот пришёл с $REQUEST_URI $datum"; $msg .= "адрес $REMOTE_ADDR, агент $HTTP_USER_AGENT"; mail($to, $subject, $msg, "From: $from"); /* добавляем запись в лог-файл blacklist.dat */ $fp = fopen($filename,"a+"); fwrite($fp,"$REMOTE_ADDR - - [$datum] $REQUEST_METHOD $REQUEST_URI". " $SERVER_PROTOCOL $HTTP_REFERER $HTTP_USER_AGENT"); fclose($fp); } ?>
    </body>
    </html>
5. Чтобы исключить повторный заход спам-бота на страницвы сайта, перед выводом любой страница сайта нужно проверять содержимое файла blacklist.dat: Это текст скрипта blacklist.php, который нужно подключать ко всем страницам Вашего сайта: = "4.2.0"){ extract($_SERVER); } $badbot = 0; /* перебираем все записи файла blacklist.dat */ $filename = "../blacklist.dat"; $fp = fopen($filename, "r") or die ("Ошибка открытия файла...
"); while ($line = fgets($fp,255)){ $u = explode(" ",$line); if (ereg($u[0],$REMOTE_ADDR)) {$badbot++;} } fclose($fp); if ($badbot > 0) { /* это спам-бот, запрещаем вход на сайт */ sleep(12); print (""); print ("Сайт недоступен."); print (""); print ("

Добро пожаловать!

"); print ("

Этот сайт временно недоступен ...

"); print ("

Если Вы считаете, что это ошибка,
отправьте письмо владельцу сайта.

"); print (""); exit; } ?>

Метод №2

Другой метод не использует PHP и также запрещает доступ спам-ботов к Вашему сайту. Он заключается в использовании файла .htaccess.
Пример записи:
SetEnvIfNoCase User-Agent "Indy Library" bad_bot
SetEnvIfNoCase User-Agent "Internet Explore 5.x" bad_bot
SetEnvIf Remote_Addr "195.154.174.[0-9]+" bad_bot
SetEnvIf Remote_Addr "211.101.[45].[0-9]+" bad_bot
Order Allow,Deny
Allow from all
Deny from env=bad_bot
Надеемся, что это поможет Вам избавиться (хотя бы частично) от воровства адресов электронной почты со страниц Вашего сайта.
Текст взят из старой версии Сайта.
]]>
Fri, 20 Aug 2010 04:31:11 +0400 http://webmaster.zelenkov.net/index.php?id=67356
Как напечатать страницу? http://webmaster.zelenkov.net/index.php?id=67355
<script type="text/javascript">
function printpage(){
    if(window.print){
        agree = confirm("Напечатать страницу?")
	if(agree) window.print()
    }
}</script>
Использование:
<a href="javascript: printpage();">Печатать</a>
]]>
Fri, 20 Aug 2010 04:31:11 +0400 http://webmaster.zelenkov.net/index.php?id=67355
Коды и названия цветов http://webmaster.zelenkov.net/index.php?id=67354 fffafa - Белоснежный (Snow)
f8f8ff - Прозрачно-белый (GhostWhite)
faebd7 - Белый антик (Antique White)
fffbf0 - Кремовый (Cream)
ffdab9 - Персиковый (Peachpuff)
ffdead - Белый-навахо (Navajo White)
fff8dc - Шёлковый оттенок (Cornsilk)
fffff0 - Слоновая кость (Ivory)
fffacd - Лимонный (Lemon Chiffon)
fff5ee - Морская раковина (Seashell)
f0fff0 - Медовый (Honeydew)
f0ffff - Лазурный (Azure)
e6e6fa - Бледно-лиловый (Levender)
f0f0fa - Стальной (Steel)
fff0f5 - Голубой с красным отливом (Lavender Blush)
ffe4e1 - Тускло-розовый (Misty Rose)
000000 - Чёрный (Black)
696969 - Тускло-серый (Dim Gray)
708090 - Синевато-серый (Slate Gray)
778899 - Грифельно-серый (Light Slate Gray)
bebebe - Серый (Gray)
c0c0c0 - Светло-серый (Light Grey)
a0a0a4 - Серый нейтральный (Medium Grey)
808080 - Тёмно-серый (Dark Gray)
191970 - Полуночно-синий (Midnight Blue)
000080 - Тёмно-синий (Dark Blue)
6495ed - Васильковый (Cornflower)
6a5acd - Грифельно-синий (Slate Blue)
8470ff - Светлый грифельно-синий (Light Slate Blue)
4169e1 - Голубой королевский (Royal Blue)
0000ff - Синий (Blue)
87ceeb - Небесно-голубой (Sky Blue)
87cefa - Светлый небесно-голубой (Light Sky Blue)
4682b4 - Синий со стальным оттенком (Steel Blue)
b0c4de - Голубой со стальным оттенком (Light Steel Blue)
a6caf0 - Светло-синий (Light Blue)
b0e0e6 - Синий с пороховым оттенком (Powder Blue)
afeeee - Бледно-бирюзовый (Pale Terquoise)
40eod0 - Бирюзовый (Terquoise)
00ffff - Зеленовато-голубой (Cyan)
e0ffff - Светлый зеленовато-голубой (Light Cyan)
008080 - Тёмный зеленовато-голубой (Dark Cyan)
5f9ea0 - Серо-синий (Cadet Blue)
7fffd4 - Аквамарин (Aquamarine)
54ff9f - Цвет морской волны (Seagreen)
20b2aa - Светлая морская волна (Light Seagreen)
98fb98 - Бледно-зелёный (Pale Green)
00ff7f - Весенний зелёный (Spring Green)
7cfc00 - Зелёная лужайка (Lawn Green)
00ff00 - Зелёный (Green)
c0dcc0 - Нейтральный зелёный (Medium Green)
008000 - Тёмно-зелёный (Dark Green)
7fff00 - Зеленовато-жёлтый (Chartreuse)
adff2f - Зелёно-жёлтый (Green Yellow)
32cd32 - Лимонно-зелёный (Lime Green)
9acd32 - Жёлто-зелёный (Yellow Green)
228b22 - Зелёный лесной (Forest Green)
eee8aa - Бледно-золотистый берёзовый (Pale Goldenrod)
fafad2 - Светло-жёлтый золотистый (Light Goldenrod Yellow)
ffffe0 - Светло-жёлтый (Light Yellow)
ffff00 - Жёлтый (Yellow)
808000 - Тёмно-жёлтый (Dark Yellow)
ffd700 - Золотой (Gold)
ffec8b - Светло-золотистый (Light Goldenrod)
daa520 - Золотисто-бирюзовый (Goldenrod)
deb887 - Лёгкий жёлтый (Burly Wood)
bc8f8f - Розово-коричневый (Rosy Brown)
8b4513 - Кожано-коричневый (Saddle Brown)
a0522d - Охра (Sienna)
f5f5dc - Бежевый (Beige)
f5deb3 - Пшеничный (Wheat)
d2b48c - Рыжевато-коричневый (Tan)
d2691e - Шоколадный (Chocolate)
b22222 - Кирпичный (Firebrick)
a52a2a - Коричневый (Brown)
fa8072 - Самон (Salmon)
ffa07a - Светлый самон (Light Salmon)
ffa500 - Оранжевый (Orange)
ff7f50 - Коралловый (Coral)
f08080 - Коралловый светлый (Light Coral)
ff4500 - Оранжево-красный (Orange Red)
ff0000 - Красный (Red)
800000 - Тёмно-красный (Dark Red)
ff69b4 - Тёплый розовый (Hot Pink)
ffc0cb - Розовый (Pink)
ffb6c1 - Светло-розовый (Light Pink)
db7093 - Красно-фиолетовый бледный (Pale Violet Red)
b03060 - Тёмно-бордовый (Maroon)
d02090 - Красно-фиолетовый (Violet Red)
ff00ff - Фуксин, сиреневый Magenta)
800080 - Функсин, сиреневый тёмный (Dark Magenta)
ee82ee - Фиолетовый (Violet)
dda0dd - Тёмно-фиолетовый (Plum)
da70d6 - Орсель (Orchid)
8a2be2 - Фиолетово-синий (Blue Violet)
a020f0 - Пурпурный (Purple)]]>
Wed, 18 Aug 2010 02:38:29 +0400 http://webmaster.zelenkov.net/index.php?id=67354
Перевод строк в верхний и/или нижний регистры http://webmaster.zelenkov.net/index.php?id=67351 ]]> Wed, 18 Aug 2010 02:29:09 +0400 http://webmaster.zelenkov.net/index.php?id=67351 Запрет кэширования страницы http://webmaster.zelenkov.net/index.php?id=67352 ]]> Wed, 18 Aug 2010 02:23:40 +0400 http://webmaster.zelenkov.net/index.php?id=67352 ВременнЫе интервалы в цифрах http://webmaster.zelenkov.net/index.php?id=67353 ]]> Wed, 18 Aug 2010 02:19:29 +0400 http://webmaster.zelenkov.net/index.php?id=67353 Защита e-mail http://webmaster.zelenkov.net/index.php?id=67349 $safe_email"; } ?>]]> Wed, 18 Aug 2010 02:06:14 +0400 http://webmaster.zelenkov.net/index.php?id=67349 Начальная защита от внедрения эксплойта http://webmaster.zelenkov.net/index.php?id=67348 Пример эксплойта:
<script>alert(document.cookie);</script>
- установить все тэги <meta ...> перед тэгами <title>...</title>.
Шаг второй - всегда проверяйте поступающие в скрипты данные:
Пример PHP-кода:
$val){ $new_argv[$key] = rawurlencode(strip_tags(rawurldecode($val))); } $_SERVER[argv] = $new_argv; ?>- данный PHP-код обеспечивает очистку ВСЕХ передаваемых в скрипт параметров ПЕРЕД подготовкой и выводом ДИНАМИЧЕСКОЙ HTML-страницы.
В-третьих - не помешает (на всякий случай!) запретить использование куки (если, конечно, Вы их не используете) при помощи Java:
ini_set("session.cookie_httponly", 1);
Не забывайте, что заголовок "HTTP Content-Type" явно устанавливает кодировку страницы, что делалает его дополнительно защищённым от XSS-атаки.
Такими несложными действиями Вы сможете оградить свой сайт хотя бы от взлома "продвинутыми школьниками", что уже хорошо. :)]]>
Wed, 18 Aug 2010 01:41:25 +0400 http://webmaster.zelenkov.net/index.php?id=67348