Главная
 

Все записи в блогах

Вторник, Июль 17, 2012 - 11:37

 

Первым этапом продвижения сайта является составление семантического ядра.

Рассмотрим составление семантического ядра на примере сайта магазина автомобилей.

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

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

  • Автомобиль
  • Машина
  • Audi
  • BMW
  • Chevrolet
  • Ford
  • Honda
  • Mazda
  • Toyota
  • Volvo

Далее расширим этот список за счет того, что добавим в него различные написания и варианты использования этих слов. Например:

  • Audi
  • Ауди
  • BMW
  • БМВ
  • Chevrolet
  • Шевроле
  • Ford
  • Форд
  • Honda
  • Хонда
  • Mazda
  • Мазда
  • Toyota
  • Тойота
  • Тайота
  • Volvo
  • Вольво

Затем идем на сервис Яндекса “Статистика ключевых слов” (http://wordstat.yandex.ru) и по очереди вводим слова из списка. Это необходимо для оценки частоты запросов и выбора оптимального набора слов.

Вводим, например, ключевое слово “Audi”.

Обращаем внимание на столбец “Что искали со словом «audi» — 530238 показов в месяц.”, выбираем из него ключевые слова, удовлетворяющие тематике сайта, и заносим их в таблицу вида:

Ключевое слово

Частотность

 

 

Так же следует обратить внимание на столбец “Что еще искали люди, искавшие «audi»:”, и выбрать запросы, которые так же поместить их в эту таблицу.

Еще расширить список ключевых слов можно используя такой инструмент как “Яндекс.Метрика”, изучив содержимое блока “Поисковые фразы”, которые так же стоит отобрать и внести в эту таблицу.

Далее следует дополнить список запросов вручную. Например, запрос Audiможно расширить так

  • КупитьAudi
  • Audi a4
  • Auti TT
  • Купить Audiв Красноярске
  • и т.д.

Расширенные запросы так же стоит внести в таблицу.

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

После этого нужно разделить полученную таблицу на 3 части. В первую таблицу внести только выскогочастотные запросы, во вторую – среднечастотные, в третью низкочастотные. Четких рамок для данных категорий нет, эти таблицы формируются на основе вашего опыта и мнения.

Затем надо добавить в таблицы столбец “Целевая страница” и заполнить его. Если целевой страницы под запрос на сайте нет, то ее нужно создать, либо удалить запрос. Настоятельно рекомендуется, чтобы одной целевой странице соответствовал один запрос и одному запросу одна целевая страница.

После этого стоит произвести анализ позиций по данным запросам. Сделать это можно при помощи программы Site-Auditor (http://www.site-auditor.ru/). В таблицы нужно добавить столбец ”Позиция” и заполнить его полученными данными.

Далее выбираются ключевые слова, по которым раскрутка необходима и выбирается стратегия продвижения в соответствии с их частотностью.

0
Пятница, Июнь 29, 2012 - 12:19

Немного о раскрутке ЖЖ. 

Перед тем, как раскручивать блог, необходимо определиться, для чего вам это нужно.

Существует 2 основных и принципиально разных метода раскрутки, которые, к слову могут быть использованы одновременно (они друг друга наполняют).

Первый метод направлен на увеличение количества читателей и посетителей вашего блога. Второй служит для повышения таких характеристик блога как Яндекс ТиЦ и GooglePR.

А теперь немного подробнее.

Зачем увеличивать число посетителей?

Думаю ответ очевиден – мало какому блоггеру нужен блог, на который никто не заходит. Он актуален лишь для продажи ссылок, при условии хороших показателей пузомерок  (Яндекс ТиЦ и GooglePR).

Зачем увеличивать значения показателей Яндекс ТиЦ и GooglePR?

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

Как это делается?

Повышение количества читателей производится следующим образом:

  1. Переходим по ссылке http://www.livejournal.com/interests.bml?int=
  2. В поле “Найти людей и сообщества по интересу” вносим ключевое слово, соответствующее тематике вашего блога
  3. Выполняем шаг 2 для всех ключевых слов, результаты поиска вносим в текстовый файл
  4. Переходим по ссылке http://[НАЗВАНИЕ_СООБЩЕСТВА].livejournal.com/profile?mode=full , где [НАЗВАНИЕ_СООБЩЕСТВА] следует поочередно заменить на все сообщества, полученные на шагах 2-3
  5. Копируем всех членов сообщества в текстовый файл(нужно выполнить для всех сообществ)
  6. Форматируем текстовый файл следующим образом.

friendadd [Название_сообщества_1]

friendadd [Название_сообщества_2]

friendadd [Название_сообщества_3]

friendadd [Название_сообщества_4]

………………………………

Переходим на страницу http://www.livejournal.com/admin/console/

  1. Копируем в поле содержимое текстового файла. Сабмитим форму.
  2. Удаляем из начала файла всех добавленных друзей. В сутки допускается добавление до 150 друзей. Определенный процент добавит вас в ответ.
  3. Не забываем чистить список друзей от тех, которые вас не добавили.
  4. Profit!

Следует иметь в виду, что каждый взаимный друг – это ссылка на Ваш блог, а значит приток ТиЦ и Pr, пусть и меньший, чем при использовании второго способа.

Поднятие пузомерок  (Яндекс ТиЦ и GooglePR) производится стандартными методами SEO. То есть:  закупка внешних сслылок на биржах или агрегаторах, написание уникального интересного контента и другие методы.

Преимущества платных аккаунтов.

Покупка платного аккаунта даст вам следующие преимущества:

  1. Возможность изменить дизайн и сделать его уникальным. Например, если это блог компании – вы сможете использовать для его оформления ваш фирменный стиль. Это будет более приемлемо для ваших потенциальных клиентов.
  2. Вы получите достаточно подробную статистику, и сможете оценивать эффективность работы вашего блога.
  3. Вы сможете подключить доменное имя, что сделает ваш блог более доступным для пользователей, а так же поисковые системы будут относиться к нему более лояльно.
  4. В избавитесь от большей части сторонней рекламы на вашем блоге.
0
Вторник, Июнь 26, 2012 - 17:24

Внутренняя перелинковка — связывание страниц  сайта при помощи гиперссылок.

Для чего это нужно?

  1. Перелинковка может упростить навигацию сайта для людей, помочь пользователю найти то что он хочет на сайте
  2. Упростить индексацию сайта поисковыми системами.
  3. Поможет произвести ранжирование страниц сайта и определить релевантные им запросы.

Немного “Лишних сведений

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

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

Узнать данный вес  – проблематично,  так как поисковые системы его не разглашают.

Каждая исходящая со страницы ссылка переносит вес. Ссылка на другой сайт переносит вес на него, ссылка на другую страницу вашего же сайта смещает вес.

Вес переносимый ссылкой можно условно рассчитать по формуле

W=k*(W0/N), где

W – Вес переносимый ссылкой.

W0 – Вес страницы, на которой расположена ссылка.

N – Количество ссылок на странице.

k - Коэффициент, он отвечает, за соответствие страниц по тематике, а так же учитывающий множество других характеристик. Он  не известен, как и методы его расчета и различен для каждой ссылки.

Анкор ссылок -  очень важная вещь. Рекомендуется, чтобы он в точности совпадал ключевому слову, по которому идет раскрутка целевой страницы.

Какие из этого можно сделать выводы, ведь ничего не известно и не понятно?

Все очень просто. Конечно мы не знаем точных значений многих величин, не знаем и точной формулы расчета переносимого веса. Но можем уловить некоторые принципы.

  1. Если нам не обходимо акцентировать внимание поисковой системы  на какой то конкретной странице (в ущерб остальным страницам), то достаточно на нее сослаться с как можно большего количества страниц сайта.
  2. Для повышения позиций сайта рекомендуется убрать или закрыть от поисковых систем все внешние ссылки.
  3. Чем меньше ссылок на странице, тем больше эффект от каждой из них.
  4. Если в поисковую выдачу попала не та страница сайта, которую бы вы хотели там видеть, то с помощью перелинковки можно сделать отток веса от нее, а так же приток веса на нужную страницу.

Циклическая (кольцевая перелинковка).

При условии полного попадания сайта в индекс – данная перелинковка стремится уравновесить вес между страницами, а так же упростить индексацию. Но если в индексе не все страницы  - можно получить разорванное кольцо. Тогда вес будет перетекать на какую либо 1 страницу, последнюю в цепочке.

Для устранения данного недостатка применяют несколько кольцевых перелинковок одновременно.

Например.

Каждая статья блога ссылается на 5 предыдущих.  Статьи, находящиеся в хвосте, ссылаются на 1е статьи блога.  Образуется 5 колец. В случае выпадения нескольких страниц из индекса структура не нарушается.

Данная перелинковка хорошо подходит для блогов. Применяется для того, чтобы старые сообщения не теряли актуальность и не выпадали из поисковой выдачи.

Перелинковка дерево.

При перелинковке деревом – вес смещается к корню дерева. Чем ближе к корню –тем больше вес.

Нужна для акцентирования внимания ПС на конкретной  станице (или страницах).

Другие виды перелинковок.

Для понимания направления смещения веса при произвольной перелинковке – можно построить орграф, где вершинами будут страницы, а ребрами – ссылки. Направлением ребер стоит выбрать следующее: от страницы (вершины) на которой находится ссылка, до той страницы, куда она ссылается.

Далее необходимо взвесить данный граф.

Каждой вершине(странице) следует назначить вес равный 1.

Каждому ребру назначить вес,

W=k*(W0/N), где

W – Вес ребра.

W0 – Вес страницы (вершины), из которой входит ребро (ссылка). Принят равным 1.

N – Количество ссылок (ребер), входящих из вершины.

k - Взять любое число 0

После взвешивания графа следует обойти граф следующим способом.

Обход в порядке соответствующем обходу графа в ширину. Начальная вершина – вершина соответствующая главной странице.

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

После завершения обхода получаем граф с измененными весами вершин. Отток веса происходит от тех страниц, вершины соответствующие которым имеют вес меньше 1 после обхода.  Приток веса происходит к тем страницам, вершины соответствующие которым имеют вес больше 1 после обхода.

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

Наша компания с удовольствием выполнит эту работу за вас.

0
Вторник, Июнь 19, 2012 - 16:19

На самом деле часы для сайта сделать довольно просто и такие модели есть практически во всех известных мне CMS-ках. Но для самого сайта и для пользователя вставка и установка дополнительного модуля, или блока может стать лишней нагрузкой. Поэтому появилась идея сделать инструмент генерации аналоговых часов с возможностью редактирования их дизайна. Все что вам нужно – выбрать понравившийся вид и скопировать код, сгенерированный в поле «Код для вставки» в нужное место интерфейса. Для более продвинутых не составит труда изменить значения переменных, которые указаны в начале кода, на нужные.

Сразу скажу, что поскольку Internet Exprorer в ранних версиях не поддерживает элемент Canvas, то если есть желание отображать JavaScript часы во всех браузерах , то необходимо будет скачать пакет excanvas в шаблон вашего сайта и в разделе заголовка документа (или основного файла шаблона) подключить файл excanvas.js из этого пакета.

 

0
Четверг, Июнь 7, 2012 - 11:04

Работая с Ruby and Rails на Windows, я столкнулась с тем, что многие расширения, например, Coffescript, заставить работать корректно под виндой практически невозможно. Одна из причин проблем элементарна - конец строки в Windows обрабатывается на свой лад во всех редакторах по-разному. Бросив попытки подружить винду и интерпретатор языка, я решила перейти на Ubuntu. В момент установки актуальной версией была 10.04.

Делюсь своим опытом организации среды разработки Ruby and Rails на Ubuntu 10.04.

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

Главный совет начинающим:

Используйте ТОЛЬКО официальные источники и оригинальную документацию. Все инструкции, написанные сторонними разработчиками и умельцами — это лишь вспомогательные средства для решения специфических проблем. Обращайтесь к ним только в том случае, если на официальном сайте не нашли вразумительного для себя объяснения по вашей проблеме.

Итак, официальные источники:

  1. RVM — https://rvm.io/
  2. Githttp://help.github.com/linux-set-up-git/
  3. JDK — http://www.oracle.com/technetwork/java/javase/downloads/index.html
  4. Aptana — http://aptana.com

Далее описаны шаги:

  1. Установка RVM
  2. Установка git
  3. Установка поддержки апачи
  4. Установка Ruby
  5. Установка gemset
  6. Установка Rails
  7. Рабочая папка: тянем проект с git
  8. Установка gem'ов
  9. Дополнительные действия: решение проблемы "...rake aborted! Could not find a JavaScript runtime"
  10. Запуск проекта ruby and rails на своём ПК
  11. Установка редактора Aptana Studio 3

Установка RVM

1. Ставим curl (на чистой убунте он не установлен):

sudo apt-get install curl

2. Ставим rvm.

Для этого заходим на официальный сайт rvm, и следуем инструкции по установке. В терминале выполняем команды (1) — (2):

1)
bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

2)
echo "[[-s "$HOME/.rvm/scripts/rvm"]] &&. "$HOME/.rvm/scripts/rvm" # Load RVM function" >> ~/.bash_profile

3) Закрываем окно терминала, открываем новое.

4) Для проверки работоспособности rvm проделаем пару тестов:

Зададим (проверим) путь к баш директории (ответа после выполнения команды не последует — значит всё работает):

source ~/.bash_profile

Проверим, что rvm воспринимается системой, как функция. Для этого в терминале выполняем команду:

type rvm | head −1

Должно выдать:

rvm is a function

5) Проверим, требуется ли что-то ещё системе для работы с rvm:

$ rvm requirements

Последует ответ. У меня он был таким:

Requirements for Linux (DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04.4 LTS")

NOTE: "ruby" represents Matz's Ruby Interpreter (MRI) (1.8.X, 1.9.X)
This is the *original* / standard Ruby Language Interpreter
"ree" represents Ruby Enterprise Edition
"rbx" represents Rubinius

bash >= 4.1 required
curl is required
git is required (>= 1.7 for ruby-head)
patch is required (for 1.8 rubies and some ruby-head's).

To install rbx and/or Ruby 1.9 head (MRI) (eg. 1.9.2-head),
then you must install and use rvm 1.8.7 first.

Additional Dependencies:
# For Ruby / Ruby HEAD (MRI, Rubinius, & REE), install the following:
ruby: /usr/bin/apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion

# For JRuby, install the following:
jruby: /usr/bin/apt-get install curl g++ openjdk-6-jre-headless
jruby-head: /usr/bin/apt-get install ant openjdk-6-jdk

# For IronRuby, install the following:
ironruby: /usr/bin/apt-get install curl mono-2.0-devel

6) В сообщении говорится, что, в частности, для работы вам потребуется определённая версия rvm. Чтобы посмотреть текущую версию rvm, используйте команду: rvm -v

Ответ будет выглядеть примерно так:

rvm 1.11.3 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.beginrescueend.com/]

7) Согласно инструкции с официального сайта вносим изменения в .bash_profile. Это можно сделать любым удобным для вас способом. Я воспользовалась встроенным редактором через терминал:

gedit.bash_profile

Скопируйте содержимое открывшегося файла:

[[-s "$HOME/.rvm/scripts/rvm"]] &&. "$HOME/.rvm/scripts/rvm" # Load RVM function

8) gedit.bashrc

В открывшийся файл в конце добавьте путь из предыдущего файла:

Вместо строки

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting

вставьте

[[-s "$HOME/.rvm/scripts/rvm"]] &&. "$HOME/.rvm/scripts/rvm" # Load RVM function

Установка git

В процессе установки опираемся на официальный мануал по установке Git на Linux. Выполняем в терминале команды:

1) sudo apt-get install git-core git-gui git-doc

2)
cd ~/.ssh

— должен ответить, что такой директории нет. Если есть, очистите её, воспользовавшись командами ниже:

$ ls
$ mkdir key_backup
$ cp id_rsa* key_backup
$ rm id_rsa*

3)ssh-keygen -t rsa -C "your_email@youremail.com"

4) Получаем пароль ssh для ввода на сайте github.com:

gedit.ssh/id_rsa.pub

Откроется файл, копируем из него код в настройки своего аккаунта на сайте: https://github.com/settings/ssh

$ git config -global user.name "Firstname Lastname"
$ git config -global user.email "your_email@youremail.com"

Установка sqlite

sudo apt-get install sqlite3 libsqlite3-dev

Установка поддержки апачи

sudo apt-get install g++ apache2-utils

Установка Ruby

Доустанавливаем гемы, которые желательно ставить перед установкой ruby:

rvm pkg install zlib
dpkg -L openssl
sudo apt-get install libssl-dev
sudo apt-get install libxml2 libxml2-dev libxslt1-dev

*** При возникновении ошибки rake aborted! Could not find a JavaScript runtime доустановить:

 sudo apt-get install nodejs
gem install execjs
gem install therubyracer

Ставим Ruby:

 
rvm install 1.9.2
rm -rf $rvm_path/us

Если возникают ошибки при установке, то потребуется удалять и заново ставить ruby.

Для удаления используйте команду:

~$ rvm remove 1.9.2

Для установки:

rvm install 1.9.2

Либо (для переустановки Ruby):

rvm reinstall 1.9.2

Установка gemset

Создаём среду проекта на ruby, ставим gemset:

Объявляем, какую версию ruby использовать. В моём случае — версия 1.9.2:

user@user-desktop:~$ rvm use 1.9.2

Ответ:

Using /home/user/.rvm/gems/ruby-1.9.2-p318

Создаём сам gemset, задав ему имя. Здесь board — название проекта (гемсета).
rvm gemset create board

Ответ:

"board" gemset created (/home/user/.rvm/gems/ruby-1.9.2-p318@board).

Важно! Если гемсет (gemset) ранее был уже создан в rvm, он будет существовать, пока вы не удалите rvm или сам проект. Для просмотра списка существующих гемсетов используйте команду:

$ rvm gemset list

Пример:

user@user-desktop:~$ rvm use 1.9.2
Using /home/user/.rvm/gems/ruby-1.9.2-p318
user@user-desktop:~$ rvm gemset list

gemsets for ruby-1.9.2-p318 (found in /home/user/.rvm/gems/ruby-1.9.2-p318)
board
global

user@user-desktop:~$ rvm use 1.9.2@board
Using /home/user/.rvm/gems/ruby-1.9.2-p318 with gemset board

Установка Rails

Ставим Rails:

gem install rails -v=3.2
gem install bundle

Если завершится ошибкой, то нужно посмотреть, какого гема ему ещё не хватает, поставить не достающее, и снова запускать gem install bundle.

Рабочая папка: тянем проект с git

Создаём на ПК папку, в которой будем работать с проектами.

Тянем проект с github. Для этого в терминале переходим в папку, где планируем работать, затем набираем:

git clone <a href="https://github.com/user/user-name/Project-Name-Board.git" title="https://github.com/user/user-name/Project-Name-Board.git">https://github.com/user/user-name/Project-Name-Board.git</a>

Ссылку на проект копируем со страницы проекта на гитхабе.

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

$ cd ~
$ ln -s ~/Documents/Work/Rails/Project-Name-Board board

После этого для перехода в папку проекта можно использовать просто

cd board

вместо

cd Documents/Work/Rails/Project-Name-Board.

Установка gem'ов

Для установки gem'ов используйте команду gem install. Однако в любом gemset (наборе гемов), как правило, присутствует rake, поэтому на этом этапе мы просто ставим rake.

gem install rake

Дополнительные действия

*** Это решило проблему: "...rake aborted! Could not find a JavaScript runtime".

В рабочей папке создаём каталог java, заходим в него через терминал и выполняем команды

$ git clone git://github.com/ry/node.git
$ cd node
$./configure
$ make
$ sudo make install

К примеру, у меня первая команда выглядела так: user@user-desktop:~/Documents/work/java$ git clone git://github.com/ry/node.git

Запуск проекта ruby and rails на своём ПК

Инициализируем проект ruby and rails на своём ПК. Любой чужой проект или проект, потянутый с git нужно синициализировать: поставить недостающие гемы, активировать базу данных проекта в текущей среде разработки в Ruby and Rails, а также запустить сервер rails.

Для этого выполняем стандартные 3 команды:

$ bundle install
$ rake db:migrate
$ rails server

Команды для просмотра версий:

rvm -v
ruby -v
rails -v

Установка JDK

Ставим JDK:

1) Качаем дистрибутив JDK 6 с официального сайта. В моём случае, это был файл
jdk-6u31—linux-x64.bin

В терминале переходим в каталог, в котором находится файл для установки JDK, с расширением.bin.

2) В терминале запускаем:

chmod a+x./file.bin

заменив слово file на имя необходимого файла. Эта команда даст возможность выполнять запуск файла.bin в Ubuntu.

3) И, наконец, выполните в командной строке терминала, команду:

./file.bin

которая позволит запустить файл с расширением.bin из командной строки Ubuntu. Далее выполняйте шаги по установке.

В центре приложений убунты (Application -> Ubuntu Software Center) в поиске набираем java и выбираем в списке OpenJDK Java 6 Runtime.

Установка редактора Aptana Studio 3

Ставим редактор Aptana Studio 3 (для разработки под Ruby and Rails). Качаем дистрибутив с http://aptana.com/products/studio3/download

Он уже готов к работе. Разархивируем его в любую удобную директорию и запускаем.

В заключение замечу, что после всего проделанного не рекомендуется обновлять операционку Ubuntu, т.к. есть вероятность, что слетят настройки rvm или языка ruby, что впрочем для продвинутого пользователя убунты не проблема. Для начинающих же пользователей рекомендуют избегать обновлений ОС.

0
Вторник, Май 22, 2012 - 15:48

Поле множественного выбора с использованием JQuery Не так давно в рамках разработки дизайна сайта мне понадобилось реализовать определенный вид поля с возможностью множественного выбора (рис. 1). Причем таких полей в том проекте, за который взялась, было немало (штук 20-30) . Причем заказчика устраивал именно такой вид и чтобы блок с вариантами появлялся при наведении на поле, где потом отображаются результаты – в общем, минимум дизайна – максимум функционала.

Для начала определим, определим, что же представляет из себя этот блок:

- блок общий

- - блок поля для результатов (вначале в нем написано – «Любой»)

- - блок вариантов (изначально невидимый)

- - - вариант 1 (чекбокс и сопутствующий ему label)

- - - …

- - - вариант n (чекбокс и сопутствующий ему label)

Или в виде HTML

Теперь необходимо сделать так, чтобы блок с вариантами выбора всплывал при наведении мыши – этот функционал реализуется по подобию функционала всплывающей подсказки: есть родительский блок с position:relative и текстом, при наведении на который должна всплывать подсказка, в нем есть блок с position:absolute и display:none. При появлении псевдокласса hover для родительского объекта назначаем для дочернего display:block. Вот как это выглядит в CSS

.multiSelectBlock { 
   font-size: 13px; 
   position: relative; 
   margin-left:53px; 
} 
.multiSelectInBlock { 
   border:1px solid #036; 
   border-top:none; 
   padding:4px; 
   position: absolute; 
   display:none; 
   width:155px; } 
.multiSelectBlock:hover .multiSelectInBlock { display:block; z-index:1000;}

В общем - ничего сложного – теперь при наведении мыши блок всплывает

Теперь самое интересное – нужно сделать так, чтобы: 1) У всех чекбоксов, которые являются дочерними для блоков с классом multiSelectBlock появилась реакция на изменение 2) При изменении упомянутых выше чекбоксов в блок поля для результатов добавлялись/удалялись необходимые элементы Очевидно, что лучше получить доступ к чекбоксам и упомянутым полям с помощью известного нам класса родительского элемента. Тем более, что родительских элементов в моем случе было 20 шт, а класс у них один. Самый оптимальный вариант для поиска и ассоциации – использовать возможности JQuery. Создаем функцию:

$('#form_filter') .find('.multiSelectInBlock input').change(function() { 
  //тут описываем действия в ответ на изменения чекбокса 
});

Этот вызов позволяет задать определенные действия на изменение найденных input. Сначала получаем доступ к объекту формы, ищем в нем все нужные нам inputы (можно было искать input [type=checkbox], но для моей задачи можно было и обойтись без уточнений ). Если посмотреть на HTML, то понятно, что внутрь блока для результатов мне нужно было помещать текст, который содержится внутри тэга Label соответствующего input. Поскольку именно инпут является вызывающим эту функцию элементом, то команда $('label[for="'+this.name+'"]').html() будет содержать ссылку на нужный Label, а запись this.parents('.multiSelectBlock').find('.multiSelectInput') даст ссылку на элемент поля. Получается такая команда:

$('#form_filter') .find('.multiSelectInBlock input').change(function() { 
   //строим строчку вывода 
   sttt=$('label[for="'+this.name+'"]').html(); // ссылка на элемент Label 
   input_t=this.parents('.multiSelectBlock').find('.multiSelectInput'); // на элемент поля вывода 
   steck=input_t.html(); 
   if (this.checked) { 
      if (steck.indexOf('Любой')>-1) // если это первый выбор 
      { input_t.html(sttt); 
      } else { 
      input_t.append(', '+sttt); 
      } 
   } Else //если чекбокс не выбран 
   { 
      n2=steck.replace((', '+sttt),''); 
      n2=steck.replace(sttt,''); 
      n2=n2.replace(' ,',''); 
      if (n2.length<3) { 
            n2='Любой'; 
      } 
      input_t.html(n2); 
   } 
})

Теперь осталось поставить вызов этой команды на загрузку документа и все заработает.

0
Вторник, Октябрь 4, 2011 - 11:30

MD5 — алгоритм 128-битного криптографического хеширования. Был разработан профессором Массачусетского технологического института Рональдом Ривестом из в 1991 году. Используется для создания «отпечатков» сообщений произвольной длины и последующей проверки их подлинности. Является последователем более старого алгоритма MD4.



На практике данный алгоритм в основном используется следующим образом:

  1. Для проверки целостности файлов
    здесь используется то свойство MD5, что при изменении даже незначительной части текста (например 1 символ в тексте объемом 10гБ) хэш претерпевает значительные изменения. Разумеется, так как разному набору символов могут соответствовать одинаковые хэши - есть вероятность ошибки при проверки целостности файлов, но она настолько мала, что ее не берут во внимание (если ежесекундно проводить хэширование десяти случайных наборов букв, то совпадение ориентировочно произойдет через несколько сотен тысяч лет).
  2. Для систем авторизации в интернет ресурсах:
    Здесь используется свойство необратимости алгоритма md5(его невозможно напрямую расшифровать)
    Логины и пароли пользователей многих интернет-ресурсов хранятся в базах данных. Существует несколько распространенных способов хранить этиданные

    • В явном виде: если злоумшленник получит доступк базе данных - он получит доступ ко всем паролям.
    • В виде хэшей(самый распространенный метод): пароли хранятся в виде хэшей. При получении доступа к сайту, если пароли находятся в словарях для перебора или достаточно просты, то они могут быть подобраны.
    • В виде хэшей с суффиксами. Суффикс представляет собой набор произвольных символов, приписываемый в конце и\или в начале пароля пользователя, делая его не подбираемым по словарю. После этого полученная строка хэшируется. Данный метод делает практически невозможным извлечение пароля из хэша.



Авторизация происходит следующим образом.

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

Пользователь вводит пароль в форму авторизации - пароль приходит на сервер. С ним происходят те же преобразования, что и с паролями в базе, результаты сравниваются. Слабым местом такой защиты является только канал связи - пароль пересылается в незашифрованном виде. Это решается использованием защищенного HTTPS протокола.

Наш сайт предлагает вам инструмент для кодирования и декодирования MD5 хэшей

0
Вторник, Сентябрь 20, 2011 - 18:03

Контроль ввода данных, поступающих на сайт можно разделить на 2 вида: контроль на стороне сервера и контроль на стороне клиента.
Контроль данных на стороне клиента нужен для того, чтобы сделать визуальное оформление, в случае неверно введенных данных (выделить красным; указать, что длина текста превышена и т.д.). Он не дает больших преимуществ в безопасности сайта, а лишь может обезопасить пользователя от ввода некорректных данных. Злоумышленник же может отправить нужные ему данные мимо предусмотренных создателем сайта форм ввода.
Контроль данных на стороне сервера – один из залогов защищенности сайта. В идеале все данные должны контролироваться на входе в каждый скрипт, и на выходе из него. Качественный контроль данных делает невозможными такие хакерские атаки, как PHP-инъекции, SQL-инъекции и эксплуатирование XSS уязвимостей.
В связи с тем, что информационные системы развиваются и потоки данных постоянно растут –растет и число ошибок и недочетов, контроль данных получается не всегда качественным, и из-за этого появляются бреши в безопасности информационных систем.
Ярким примером недостаточного контроля данных служила до середины 2008 года популярная социальная сеть “ВКонтакте”, где пользователь, отправив некорректные данные, мог поставить семейное положение “все сложно” с самим собой. Это было не предусмотрено создателем сайта, но контроль на стороне сервера не осуществлялся. Это одно из наиболее безобидных проявлений данной ошибки.
Еще одним примером, который явным образом лишал производителей программного продукта определенного процента доходов, является flash игра “Ферма”, во все той же социальной сети “ВКонтакте”. В ней так же отсутствовал контроль полученных от приложения сервером данных. Это позволяло злоумышленникам “на лету” перехватывать пакеты идущие от приложения на сервер, исправлять интересующие их параметры (количество монет или предметов) и отправлять измененные пакеты на сервер, который их принимал без проверки и вносил изменения в базу данных.
В идеале, все данные должны качественно обрабатываться и контролироваться. Не всегда это возможно, в силу человеческого фактора (программы пишут люди, а люди ошибаются или учитывают не все нюансы), но к данному идеалу стоит стремиться.

0
Вторник, Сентябрь 20, 2011 - 09:58

Что такое XSS?
XSS - межсайтовый скриптинг. Данный вид уязвимости заключается в том, что в выдаваемая сервером страница содержит скрипты (например java), написанные пользователями.

Данная уязвимость преимущественно присутствует на страницах, где допустим прямой вывод пользовательского html кода в необработанном виде, либо плохо обрабатываются BBcode.
Если пользователь откроет зараженную страницу - на его компьютере выполнится скрипт, который может выполнить потенциально опасные действия, например отправить cookies на сервер злоумышленника, что может позволить злоумышленнику авторизоваться на сайте от имени пользователя.
Еще одно из потенциально опасных мест - title станицы, где скрипт может быть замаскирован сменой кодировки(которая может не совпадать с кодировкой страницы), что может позволить ему пройти сквозь фильтрацию.

Что такое CSRF?
CSRF - отправка запросов на сторонние ресурс от имени жертвы. Данная атака обычно применяется, как метод использования XSS уязвимостей сайта. Человек заходит на сайт с CSRF-скриптом, который был туда помещен злоумышленником, который использовал уязвимость XSS и от его имени происходят какие то действия (от "шуточных" до переводов денег).

Как еще можно использовать XSS?
Так же возможно значительно замедлить работу сайта, если поместить в его код скрипт, производящий загрузку большого объема данных (или небольшого объема, но с медленных серверов).

Методы борьбы
Для того, чтобы обезопасить себя от данного типа атак - необходимо фильтровать все данные, вводимые пользователями на предмет возможных скриптов. Данные скрипты могут находиться как в html тэгах, так и в их атрибутах вида OnClick и др. В случае с BBcode, если их обработка проводится некорректно - так же возможно добавление скриптов аналогичным способом. В частности уязвимость XSS в BBcode была обнаружена в одной из версий форумного движка SMF.
Так же следует держать на контроле остальные данные, поступающие в скрипт извне. Например сервис “почта.ру” был в свое время взломан за счет того, что на нем был необрабатываемый вывод данных, поступающих в скрипт из GET запроса. Злоумышленники внедряли в качестве одного из параметров запроса фишинговый скрипт и отправляли полученную ссылку различным пользователям. Если пользователь переходил по этой ссылке, его cookies отправлялись злоумышленнику и он получал доступ к почтовому ящику.

Методом защиты от CSRF атак служит механизм, когда сайты требуют подтверждения болшего количества действий пользователя и ведут проверку поля HTTP_REFERER, если оно есть в запросе.
Еще один способ защиты - ассоциировать с сессией ключ,который будет передаваться посредством POST-запросов и проверяться сервером, во время каждого такого запроса.Это сделает бесполезной кражу cookies (информация будет бесполезна без данного ключа).
Методы обнаружения
Для обнаружения данной уязвимости можно проанализировать фильтрацию данных, вводимых пользователями. Так же можно попробовать добавить скрипт (например alert(‘Ups’);) на страницу всеми возможными способами. В случае успеха – исправить фильтры, отвечающие за обработку данных содержащих скрипт.

1
Понедельник, Сентябрь 19, 2011 - 01:41

Сайты, использующие php могут быть подвержены такому виду атак, как php-инъекции. Данный вид атак очень похож на описанные ранее "SQL - инъекции".
Атака заключается в выполнении произвольного кода на стороне сервера. Атака может быть возможной, если следующим функциям передаются неконтроллируемые данные:

eval(),
preg_replace(),
include() или include_once(),
require() или require_once(),
create_function().

Методы борьбы
Для борьбы с данной уязвимостью необходимо произвести контроль входных данных, где любым из доступных способов сделать так, чтобы в качестве аргументов этих функций были данные, которые не могут нарушить логику работы скрипта. Под “доступными способами” подразумевается фильтрация с помощью регулярных выражений, явный выбор из всех допустимых значений (если их не много), запрет спецсимволов (для того чтобы злоумышленник не мог подключить удаленный скрипт к вашему) и др.
Так же можно прописать в .htaccess:

php_value allow_url_fopen Off

Или в php.ini

allow_url_fopen Off

Это запретит вашим скриптам подключать файлы извне.
Если вы используете CMS – необходимо своевременно устанавливать все обновления безопасности. Если вы обнаружили уязвимость, а патча-заплатки для CMS еще не выпущено – сообщите в ее техподдержку. Так же, если это разрешено лицензией – можете попробовать
самостоятельно закрыть уязвимость (но делать это необходимо предельно осторожно).

Методы диагностики
Сначала необходимо проанализировать, есть ли в ваших скриптах потенциально уязвимые функции, перечисленные выше. Если их нет, либо они есть, но их аргументы – константы, то ваши скрипты не подвержены данному типу атак.
В противном случае необходимо проверить каждый аргумент данных функций. Откуда он в нее попадает, как он проверяется. В случае обнаружения необрабатываемых аргументов – дописать их обработку, так как они являются потенциальной уязвимостью.
После этого можно пойти другим путем:
В качестве аргументов функций include(), include_once(), require() или require_once() попробовать передать всеми возможными способами удаленный (находящийся на другом сервере) скрипт. Если скрипт удалось подключить – то это уязвимость, которой может воспользоваться потенциальный злоумышленник.
В качестве аргументов остальных функций попробовать передать какую-нибудь безобидную, но заметную функцию, например die('Ups'). Если функцию получится передать – это уязвимость.
Если фильтрация аргументов проводится – необходимо попробовать обойти ее. Если это удастся – то это опять же уязвимость.

0
Суббота, Сентябрь 17, 2011 - 23:36

О чем собственно речь
Как известно - базы данных и программы обмениваются между собой данными посредством SQL запросов. SQL - язык запросов, применяемый для управления, создания, изменения, а так же получения данных из БД.

Базы данных - мощный инструмент для работы с данными, позволяющий значительно ускорить работу программы (в сравнении с аналогичной программой, работающей с файлами, особенно если они зашифрованы).

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

Ближе к делу
Существует вид атак на программы и вэб-приложения, использующие базу данных, называемый SQL-инъекциями. Эта атака заключается в подстановке в SQL запрос таких данных, которые полностью или частично меняют логику запроса. Уязвимость, позволяющая провести данный вид атак, находится непосредственно в коде скрипта или программы и заключается во вставке в текст запроса неконтролируемых данных.

Эти данные могут быть непосредственно введены пользователем в поля ввода сайта или программы.
Так же они могут быть изменены в адресной строке, если это вэб-приложение, использующее GET запросы.
Например:
Следующий PHP скрипт:

$user = $_REQUEST['user'];
$query = mysql_query("SELECT * FROM `users` WHERE `username` = $user");

Ожидает следующих данных:

"http://test.ru/index.php?user=Ivan"

Скрипту передаются данные user=Ivan, и скрипт в ответ на них выдает какие-либо данные, которые должны быть доступны только пользователю Ivan.
Но если пользователь подправит запрос следующим образом, то в ответ получит все данные всех пользователей, что недопустимо:

"http://test.ru/index.php?user=Ivan+OR+1=1"

Так же данная уязвимость может быть использована посредством POST запросов, путем передачи скрипту непредусмотренных данных.
Данные могут вводиться в неявном виде, например на сайтах использующих BBcode:

|url=http://site.ru|Сайт|/url|

Обычно такие выражения в коде обрабатываются при помощи регулярных выражений. Из данного выражения в скриптом извлекается 2 переменных:
Значение первой будет адресом http://site.ru
Значение второй - анкором: Сайт

Оба этих значения требуют проверки, так как могут быть использованы злоумышленниками для атаки, если будут вноситься в БД в явном виде. Ярким примером служит такие форумные движки, как phpBB и SMF. В некоторых версиях этих движков были подобные уязвимости в BBcode. Разумеется, они были сразу же закрыты, после их обнаружения, но это показывает, что даже опытные программисты могут делать грубые ошибки.

Как искать данную уязвимость?
Найти уязвимость достаточно просто: вводить поочередно символы ' и " во все поля ввода сайта или программы, пытаться заменить все данные которые возможно, входящие в скрипт на эти символы.

Какие выводы можно сделать из всего этого?
1) Любые данные, поступающие в скрипт извне - должны быть обработаны, перед тем как передаться в запрос. В php есть функция, позволяющая проводить такую обработку:

$varible = mysql_real_escape_string($varible);

Данные, в случае если они по своей логике имеют небольшую длину - могут быть ограничены по длине.
Даныне могут быть явно переведены в тип данных, которому они должны соответствовать:

$number = (int) $number;

2) Если вы используете CMS – необходимо своевременно устанавливать все патчи и обновления безопасности. Либо если данное обновление еще не вышло, но вы обнаружили такую уязвимость - сообщить о ней в службу техподдержки. Так же можно попробовать самостоятельно изменить код CMS(если это разрешено лицензией производителя), но делать это нужно с большой осторожностью, так как вы можете открыть другие уязвимость закрыв эту или нарушить работу кода.

0
Пятница, Сентябрь 16, 2011 - 13:27

Очень часто спрашивают - "с чего начать придумывать дизайн?". Так вот, всегда первична сама идея сайта и здравый смысл. Можно отправной точкой  считать логотип, какой-то элемент, который вызывает ассоциации с поставленной задачей, основной цвет и пр. Если же вы не относите себя к творческим людям, можно использовать подходы компоновки сайта и страниц. В этом случае основным критерием оценки является удобство и грамотность интерфейса.

0
Четверг, Сентябрь 15, 2011 - 11:25

О сложном

Сегодня уже фактически нет такого человека, который бы не знал что такое сайт. Но когда в разговоре с заказчиком на вопрос "Зачем вам сайт?" слышу "Сайт должен быть функциональным и содержать много понятного материала, там должны быть крутилки-вертелки, и чтобы было ярко и интересно", становится как-то не по себе. Поэтому предпочитаю строить отношения так: мы знакомимся с деятельностью заказчика, узнаем цели разработки/сопровождения/реконструкции сайта,  ищем и предлагаем решение для задач, которые должны быть реализованы средствами сайта.

Тут важно понять, что по сути само понятие "сайт" сочетает в себе два разных представления -  визуальное и информационно-техническое. Интерфейс должен обеспечивать выполнение самой цели сайта (поэтому первостепенная роль отводится понятному и удобному дизайну), в то же время информация должна быть сгруппирована логически понятно и прозрачно, а функционал должен поддерживать связь "визуальное представление - понятная информация - результат для пользователя".

Итак, сайт – это рекламно-информационный продукт, цель которого – обеспечить эффективную рекламу (подачу информации) и продвижение продукта (вещи, картинки, информация,  или даже рабочая сила и прочее).

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

Зная об этих особенностях, будет проще вести диалог заказчик - исполнитель.

0
Среда, Сентябрь 14, 2011 - 14:55

DoS - аббривиатура от словосочетания "Denial of Service", что дословно переводится как отказ в обслуживании. DoS-атака - это атака нацеленная на вычислительную систему с целью затруднения доступа к ее ресурсам, либо атака, создающая условия, при которых система вовсе оказывается недоступной.

DDoS-атака ("Distributed Denial of Service" - распределенной отказ в обслуживании) - это разновидность DoS атак, подразумевающая, что атака ведется с нескольких устройств. Данная атака более совершенна, в связи с тем, что она ведется с большого количества устройств - и от нее не так просто защитится фаерволлом.

DDoS-атаки в виду своей относительной простоты реализации и разрушительного эффекта являются одним из наиболее распространенных видов атак. Самый популярный метод их проведения - заваливание сервера жертвы пакетами(забивание канала связи). Данные пакеты могут быть самыми разными: от обычного пинга, до специально подобранных для конкретной атаки. Так же существуют такие DDoS-атаки, которые используют уязвимости в программном обеспечении сервера-жертвы.

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

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

Подготовка сервера к защите от DDoS заключается в следующих принципах:
1) Грамотная настройка сетевых служб и фаерволла. Должны быть открыты только те порты, которые необходимы для работы сервера. Рекомендуется прятать сервер за NAT, для того, чтобы исключить возможность прямого его сканирования.
2) Часто службу удаленного доступа к консоли сервера атакуют одновременно с основными его сервисами, чтобы на момент атаки администратор потерял контроль над сервером (или этот контроль был затруднен). Для того чтобы этого не произошло - необходимо внести доступ к серверу по SSH на другой IP адрес, а на IP сервисов - вовсе отключить SSH.
3) Регулярно обновляйте ПО сервера, устанавливайте заплатки (патчи) на все известные уязвимости сразу после их выхода - не откладывая.
4) Блокируются ping и trace.
5) Существуют аппаратные устройства для защиты от DDoS атак от таких производителей как Cisco. Это довольно эффективное, но дорогостоящее решение.

Если произошла атака, необходимо сделать следующее:
1) В случае если атака идет на сервис, который не принципиален в данный момент - можно "поставить на нуль роутинг". Тогда эффект от атаки сойдет на нет, это спасет весь сервер, но цели атаки будут достигнуты - ресурс, на который шла атака - станет недоступен.
2) Анализировать пакеты идущие на сервера, вносить IP атакующих машин в черные списки. Так же возможно провести контратаку, с целью получения информации о атакующей программе и в зависимости от данной информации подбирать возможные решения. Если компьютеры получают управляющий сигнал с какого-то центрального сервера - достаточно закрыть им к нему доступ (например ответной DDoS атакой или другими способами).
3) Регулярно проверяйте свободное место на сервере на разделе жесткого диска в который пишутся логи - он может переполниться и вызвать крах системы. Так же можно отключить часть логов на время атаки.
4) В случае зависания сервера - перезагрузите его. Работоспособность восстановится на некоторое время, в зависимости от интенсивности атаки.

2
Вторник, Сентябрь 13, 2011 - 12:40

В данной статье будут рассмотрено качество услуг недорогих платных хостингов. Оценки выставлены по 10тибальной шкале.
Мастерхост
Стабильность работы(Uptime): 10
Ресурсы(RAM,CPU)*: 3(4)
Админ-панель: 2
Комментарий: На данном хостинге пользователям предоставляется 32Мб(или 64Мб, в зависимости от выбранной версии PHP) оперативной памяти, что недостаточно для серьезных CMS. Хостинг работает достаточно стабильно. Админ-панелей несколько (по разделам - для управления DNS зонами - одна, для управления хостингом - другая итд), кроме того все они не удобны в использовании.
* В зависимости от вбранного тарифного плана

Nthost
Стабильность работы(Uptime): 3
Ресурсы(RAM,CPU): 3
Админ-панель: 9
Комментарий: Данный хостинг крайне не надежен - постоянно отваливается база данных, а так же падает сам сайт.

TimeWeb
Стабильность работы(Uptime): 10
Ресурсы(RAM,CPU): 8
Админ-панель: 9
Комментарий: Хостинг с хорошим uptime. Оперативной памяти по умолчанию(гарантирвано) предоставляется 64Мб, но данная характеристика может быть повышена через .htaccess. Хостинг не дает гарантий, что указанное вами количество RAM будет предоставлено, но за долгое время использования - проблем не возникало. Админ-панель - Cpanel.

4
Вторник, Сентябрь 13, 2011 - 12:05

Суть проблемы:
Перестала работать wi-fi сетевая карта Broadcom 4311 после обновления системы.
Решение:
Удалите стандартный STA драйвер (в меню "Дополнительных драйвеах/ Additional drivers")
В консоли вполние от пользователя (при условии наличия настроенного пакета sudo):

$sudo apt-get install firmware-b43-installer
$sudo rfkill unblock all
$sudo apt-get install linux-backports-modules-net-2.6.38-8-generic
$sudo reboot

Или от root'а:

#apt-get install firmware-b43-installer
#rfkill unblock all
#apt-get install linux-backports-modules-net-2.6.38-8-generic
#reboot

0
Вторник, Сентябрь 13, 2011 - 11:57

Суть проблемы:

E:Encountered a section with no Package: header,
E:Problem with MergeList /var/lib/apt/lists/ru.archive.ubuntu.com_ubuntu_dists_natty_main_binary-i386_Packages,
E:Списки пакетов или status-файл не могут быть открыты или прочитаны.

?Ошибка стала возникать после обрвасвязи с интернет во время обновления списка пакетов реопзитариев.
Решение:
Для решения проблемы нужно вручную очитстить список пакетов, а потом его обновить:
Наберите в консоли от пользователя (если есть настроенный пакет sudo):

$sudo rm /var/lib/apt/lists/* -vf 
$sudo apt-get update

Или от root'а

#rm /var/lib/apt/lists/* -vf 
#apt-get update

0
Вторник, Сентябрь 13, 2011 - 11:38

Суть проблемы:
Кодировка указана следующим образом:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 

Но отказывается определяться автоматически.

Решение:
Добваить в .htaccess строку
(для Windows-1251)

AddDefaultCharset Windows-1251 

(для UTF-8)

AddDefaultCharset UTF-8

0
Вторник, Сентябрь 13, 2011 - 10:41

Суть проблемы:
Одно или несколько сообщений об ошибках:
Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Krasnoyarsk' for 'KRAT/7.0/no DST' instead in ********************* on line 401

Ненужное "зазвездил".

Решение:
Ошибка возникает изза
Достапно несколько вариантов решения, в зависимости от того, какими правами вы обладаете
1) Если у вас есть доступ к редактированию файла /usr/local/etc/php.ini
Устанавливаем параметр часового пояса(обратитевнимение, что данный параметр будет установлен для всего сервера):

;;;;;;;;;;;;;;;;;;; 
; Module Settings ; 
;;;;;;;;;;;;;;;;;;; 
[Date] 
; Defines the default timezone used by the date functions 
date.timezone = ВАШ_ЧАСОВОЙ_ПОЯС 

Далее делаем рестарт сервера (дальнейший код зависит от используемой на сервере ОС, и выглядит примерно так, как приведено ниже)

 # /usr/local/etc/rc.d/apache22 restart  

2) У вас есть доступ .htaccess и разрешено изменение парамерта date.timezone посредтвом этого файла
Добавте в файл .htaccess строку

php_value date.timezone ВАШ_ЧАСОВОЙ_ПОЯС 

3) У вас нет доступа к php.ini и .htaccess
Вписываем в начале скриптов выдающих ошибку строку:

date_default_timezone_set('ВАШ_ЧАСОВОЙ_ПОЯС');

Список доступнх часовых зон

0
Четверг, Сентябрь 8, 2011 - 16:13

Суть проблемы:
Кодировка страницы Windows-1251, а кодировка ответа на SQL запросы UTF-8. Итог - все данные из базы на странице отображаются некорректно.

Решение:
Сразу после подключение к БД выполнить код:
mysql_query("SET NAMES КОДИРОВКА_ВАШЕЙ_СТРАНИЦЫ;");
Например:
mysql_query("SET NAMES cp1251;");

Подразумевается, что кодировка страницы была определена одним из следующих способов:

1) В header HTML документа было прописано:
<meta http-equiv="Content-Type" content="text/html; charset=КОДИРОВКА_ВАШЕЙ_СТРАНИЦЫ" />
Напимер:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

2) header был отослан средствами PHP

 <?php  header('Content-type: text/html; charset=КОДИРОВКА_ВАШЕЙ_СТРАНИЦЫ'); ?>

0

Связаться с нами