wordpress пустая страница page/2

Недавно только заметил на одном блоге, что при переходе на страницу page/2 или page/1 и так далее по шаблону адрес сайта/page/* чистая, пустая, белая страничка, ни байтика кода. Мучился я с этой проблемой мучился. Много чего перепробовал и на одной из шагов выяснения причины, а это было переименование папки с плагинами plugins которая находится в wp-content в любое другое имя, ну например в plugins2. Соответственно все плагины отваливаются и можно точно удостовериться в плагинах ли это дело. И действительно в них. После данной операции страницы открывались как нужно… Переименовав обратно стал отключать по одному плагины и смотреть, и дело оказалось в плагине Advanced Permalinks. Отключил его нафиг. Особой смысловой нагрузки он не несет и погоды не делает. Так что у кого такая проблема проделайте то же самое и посмотрите, вдруг проблема кроется в плагинах, как это было у меня…

Авторизация в WordPress

Авторизация в wordpressПонадобилось мне тут написать кусочек кода, который брал пароль из базы данных wordpress’а. Полез в базу… Заранее предполагая, что пароль не может храниться в открытом виде, был уверен на 90%, что он в md5. Увидев значение поля user_pass, таблицы wp_users и хорошо зная как выглядит хеш md5 я понял, что это точно не md5,по крайней мере может быть не в чистом виде… хеш пароля имеет такой вид

$P$Bhxnus21iNEGqYViRQ9yrGwBrMbAtN1

пароль который равен этому хешу 123.
Полез искать в интернете, на форумах, задавая вопросы великому Гууглу пытаясь найти истину. Вся найденная мною полезная информация гласила, что яко бы это многократное использование алгоритма md5, или md5 и какие случайные цифры и буквы вначале, то, что есть определенная закономерность и т.д. Ясное дело бред, я даже не поленился проверить теорию о многократном шифровании в md5. Все не то. Ну и разумеется пришлось копать истину самому… Полез разбирать исходники многоуважаемого wordpressа. Копаясь в исходниках и следуя от одного файла к другому, от одной функции к другой. Все приводило к вызову некого метода PasswordHash. Далее ниточка привела меня почти к истине…
Оказывается хеширование пароля в wordpress выполняется неким усиленным, своим методом. То есть пароль хранящийся в базе данных, хранится там не в обычном хешированном md5 виде, а в усиленно хешированном виде. Как я понял, а в подробности я не вдавался, метод шифрования это модифицированный или чистый Blowfish. Порыскав еще, я вышел на официальный сайт этой разработки и называется все это дело Portable PHP password hashing framework, кратко phpass — Это класс написанный на PHP. Как правильно подмечают авторы, правильно говорить не шифрование пароля, а хеширование (а я разок употребил слово шифрование =) ). На этом сайте Вы всегда сможете скачать исходники, почитать поподробнее про phpass. Истина найдена, не все так сложно!

Sublime Text 2 — как установить плагин

Привет всем. Многие наверное пользуются этим замечательным редактором. Не буду многословен, а просто скажу, что лучше самим попробовать, чем сейчас писать много букв и рассказывать про этот замечательный редактор кода =), а лишь напишу как устанавливать плагины на этот редактор. Так вот, этот замечательный редактор еще и обладает не маленьким набором плагинов, из-за своей популярности множество программистов пересевших на Sublime Text 2 стали усердно разрабатывать новые и новые плагины, реализуя те плюшки, которых им не хватает или которые были в их прошлых любимых редакторах кода. И так по порядку…
Найти и выбрать для себя нужный плагин можно здесь (официальный форум). Далее, запоминаем название. Открываем Sublime Text 2, вызываем консоль сочетанием горячих клавиш Ctrl+` и вставляем следующий снипет:

import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation'

много букав и все в одну строку… Жмем Enter и смотрим как в нижней панели, где показываются номер текущий строки и позиция курсора весело происходит анимация, которая наводит на ностальгию…
Затем пере запускаем наш редактор, о чем любезно напишут в той же панельке. Далее Preferencens > Package Control > Install Package и вводим название понравившегося плагина, находим и устанавливаем. Все! Приятной Вам работы! Если возникнут вопросы, к Вашим услугам комментарии =)

Quick Translator не работает

Привет всем! Не работает всеми любимое расширение для Firefox? И скорее всего стоит версия 0.9? Сам вот мучался с такой проблемой, решение — скачать бета версию 1.0b2. ссылку даю официальную, чтобы не было подозрений.
http://groups.google.com/group/quick-translator/browse_thread/thread/a03e58bd9ea45775
Наслаждайтесь. Все работает, так как и работало. От себя добавлю, супер дополнение. Позволяет по быстрому перевести кусочек выделенного текста или одно слово. Понимает множество языков.

origin null is not allowed by access-control-allow-origin

origin null is not allowed by access-control-allow-originПривет всем! У Вас бывают такие ошибки? Мне вот выползла в консоли ошибок браузера Iron (Chrome, Chromium). Если Вы при этом разрабатываете что то на JavaScript, то эта ошибка означает, что браузер ругается на то, что скрипт выполняется не на сервере, а где то локально. Т.е. допустим есть у нас JS скрипт и он передает какие либо данные PHP скрипту. А JS скрипт находится не на сервере (к примеру Денвере) а просто лежит где нибудь на диске. Залейте скрипт на сервер и будет Вам счастье!

Как ускорить Google Chrome или Chrome и жесткий диск

Google Chrome fastЗдравствуйте! Сегодня в этой статье хочу рассказать об «ускорении» и без того быстрого браузера Google Chrome. Расскажу как я ускорял свой Chrome с помощью переноса файлов профиля на виртуальный диск, который создается в ОЗУ компьютера. Расскажу какие это ускорение дает результаты. Какие подводные камни существуют при этом. Стоит ли игра свеч и как вернуть все на сои места, если Вам что либо не понравилось…
More »

RegexBuddy помощник в составлении регулярных выражений

RegexBuddyПривет! Сегодня расскажу о не заменимой програмке для отладки/составления регулярных preg match’евых выражений или как коротко их называют — regex выражений. Напишу отзыв так сказать.
Лично я долго пользовался полезной тулзой написанной на JavaScripte которая находилась на сайте pcre.ru. Ну, на тот момент шаблончики были маленькие и мне вполне хватало мощностей той онлайн утилитки. Но со временем шаблоны усложнились и появились более специфичные понятия обо всем этом и соответственно мне понадобился помощник по мощнее. Я убил почти весь вечер на поиски подходящей программы. Смотрел и такие же онлайн утилиты, как на pcre, и плагины для всем известного firefox и обычные десктоп версии, но ничего нужного мне не попадалось. Либо был скудный функционал, либо не хватало мощностей обрабатывать большие тексты и т.д. Но когда мой взор пал на RegexBuddy — мне она сразу понравилась. Особенно понравилось отображение всех знаков табуляции, таких как пробел, который отображается точкой, переход на новую строку и так далее. Как я считаю очень полезная штука. Например когда получаешь целый текст или html какой то страницы а он разделен на строки или используется табуляция и ты в составлении шаблона этого не указываешь, а потом долго недоумеваешь почему не работает «правильно» составленный шаблон (так было у меня). Также можно выбирать какой движок используется для интерпретации. Удобное выделение найденных шаблонов в тексте, желтым и голубым цветом. Работа с большими объемами текста. Сохранение шаблонов. В общем удобная, продуманная многофункциональная программа. Моя оценка твердые 5 баллов. Ну правда есть один минус — программа платная, но в нашей стране это не минус =) Есть еще одно НО, если Вы используете написанные шаблоны в PHP в функциях preg_match и им подобным иногда интерпретатор этих функций в PHP выдает ошибки о том, что некоторые символы шаблона не работают (точнее он их не понимает), эти символы необходимо предварить знаком бэкслеш «\». То есть в самой программе шаблон исправно функционирует без этого предварения, а в PHP выдает ошибки, поэтому будьте внимательны. Советую всем завести такую сову у себя на рабочей машинке =)

PHP авторизация vkontakte

Сегодня расскажу как авторизоваться вконтакте средствами PHP и CURL. Начну с теории. Моя цель была авторизоваться в мобильной версии vkontakte.ru, т.е. m.vkontakte.ru и выдернуть оттуда нужные мне данные. Объясню почему… Во первых мобильная версия сайта проще для парсинга, с мобильной версии легче получить какие либо данные. В принципе по функционалу, тоже самое. Единственный минус — доступны не все функции и фичи. Но мне фичи были не нужны, мне нужно было только страница друзей, которые находятся в онлайне.
Давно не вникал в методы авторизации этого контакта. Поюзав поиск не нашел нужного мне решения и решил приступить к написанию сам, к тому же найденные методы почему то на данный момент не работали, видимо вконтакте не редко меняет алгоритм авторизации. Разумеется я использовал связку PHP+CURL. Как без нее нынче =) Авторизация вконтакте нынче сложная, с двумя или даже тремя редиректами. Чтобы вникнуть во всю суть я использовал сниффер. Разобравшись что к чему получился вот такой код:

<?

$user_agent='Opera/9.80 (S60; SymbOS; Opera Mobi/499; U; ru) Presto/2.4.18 Version/10.00';//браузер
$login='';//мыло, логин или номер телефона
$password='';//пароль

if (!$ch=curl_init()) {//инициализируем curl, если не получается выдаем ошибку
    echo 'error curl init!';
    exit;
}

//отключаем проверку корневых сертификатов
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
//включаем показ заголовков в выводе
curl_setopt($ch, CURLOPT_HEADER, true);
//true т.к. мы будем отправлять post запрос
curl_setopt($ch, CURLOPT_POST, true);
//обманываем сайт, пусть думает что мы браузер
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
//ответ сервера будем записывать в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
//по редиректам будем переходить автоматически
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, 'https://login.vk.com');

//формируем запрос
$post=array(
    'act' => 'login',
    'pda' => '1',
    'from_host' => 'm.vkontakte.ru',
    //'ip_h' => '8f69244421976fb1a5',//для чего?
    'from_protocol' => 'http',
    'to' => '',
    'email' => $login,
    'pass' => $password
);

$post=http_build_query($post);
//отправляем post запрос
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

if (!$answer=curl_exec($ch)) {//если нет ответа - выдаем ошибку
    echo 'error get answer!';
}

//вытаскиваем remixsid
$p='/remixsid=([a-z0-9]{10,70})/';//регулярка
preg_match($p, $answer, $tmp);
$remixsid=$tmp[1];

$cookie='remixsid='.$remixsid;//создаем печеньку =)

curl_setopt($ch, CURLOPT_POST, false);//переключаемся обратно к методу GET
curl_setopt($ch, CURLOPT_COOKIE, $cookie); //даем контакту скушать начу печеньку
curl_setopt($ch, CURLOPT_URL, 'http://m.vkontakte.ru/friendsonline');//страница друзей онлайн ->
//-> Вы можете вставить сюда ссылку на любую другую страницу контакта, которая нужна Вам

$answer=curl_exec($ch);//итоговый результат хранится в переменной $answer

echo $answer;//тут я вывожу содержимое этой переменной на экран, Вы же можете делать с ней все что хотите

//если что то не получается, можно раскомментировать две строки ниже и посмотреть ошибки
//echo "CURL error number: ".curl_errno($ch)."<br>";
//echo "CURL error: ".curl_error($ch)."<br>";
curl_close($ch);//закрываем curl сессию и очищаем память

?>

Вкратце постараюсь рассказать что да как. Скрипт использует библиотеку CURL. Написан на PHP. Старался писать с множеством комментариев чтобы было понятней тем, кто будет использовать данный скрипт, ну и писал не «загнуто» по «крутопрограммистски», а ля сокращение всего и вся в какие то специфические конструкции которые знают только те кто вкусил большую часть знаний. При написании столкнулся с такой проблемкой: при авторизации используется шифрованное соединение https, curl постоянно выдавал ошибку, ругаясь на непроверенный корневой сертификат, ошибка 60 (CURLE_SSL_CACERT), ясное дело у него не много этих корневых сертификатов… Я решил попросту отключить проверку сертификатов безопасности, для упрощения скрипта, врядли тут понадобится сия функция, можно было было импортировать сертификаты из браузера, положить их в отдельную папку и вручную потом их обновлять, но как я уже писал в данном случае не за чем. И еще не совсем понял для чего передается значение переменной ip_h? И без нее работает прекрасно, поэтому данную часть кода я закомментировал. (Если кто понял или знает, рад буду услышать). Самое ценное для нас — это значение переменной remixsid, которое выдается нам в куках. Я выдираю это значение из общей кучи заголовков (кстати в вывод включены и заголовки, но не думаю что это кому то не понравится) и потом подсовываю в печеньку, а затем скармливаю эту печеньку контакту =) Кстати зная значение данной переменной можно с легкостью сидеть с чьего либо аккаунта (и писать всякие гадости, читать сообщения), но не более. В общем если у Вас дорогие читатели будут какие либо вопросы по работе данного скрипта или советы по улучшению и т.д. прошу оставлять все это в комментариях, я с радостью отвечу. Буду рад, если кому то помог!
UPD: оказывается авторизовавшись в мобильной версии m.vkontakte.ru и зная remixsid, Вы можете спокойной получать необходимые данные и с полной версии vkontakte.ru, так что можно сказать скрипт универсален.

NotScript, установка, настройка


Hi, all! Понадобилось мне сегодня полазить в сети без надоедливых порой скриптов JavaScript. Я чаще всего использую для серфа Chrome. Пошел на официальную страничку дополнений искать плагин. По памяти использования Firefox помню, что там был такой замечательный и широко известный плагин «No Script». Для Chrom оказывается есть аналог и называется он «NotScript». Различий в названии не много :)
Установка как всегда обычная для всех плагинов, но есть одно НО: после установки необходимо установить так называемый пароль. Для этого идем по пути

c:\Users\имя_учетной_записи\AppData\Local\Google\Chrome\UserData\Default\Extensions\odjhifogjcknibkahlpidmdajjpkkcfn\версия_плагина\

где имя_учетной_записи — имя вашей учетки в системе, версия_плагина — ну что то вроде «0.9.6_0″. Ну и соответственно если у вас windows установлен не на диске C, тогда и буква в начале пути будет не С, а ваша.
Далее находите в директории файл с именем CHANGE__PASSWORD__HERE.js, открываете его в своем любимом текстовом редакторе, находите такую строчку:

const ENCRYPTION_PASSWORD = "";

и вставляете между двойными кавычками свой придуманный/сгенерированный пароль не менее 20 символов длиной! и не более 100, латинскими буквами с цифрами, к примеру «EbwpVL8eMqmRZni0QnFcS5BK0″ вполне подойдет.
Перезапускаем Chrome и наслаждаемся работой. Сразу подмечу, скрипт изначально работает в режиме «блокирую на всех сайтах кроме маленького списочка аля google.ru и т.д.», так что учтите!

VirtualBox — смена даты, изменение времени или отмена синхронизации с родительской машиной

Понадобилось мне срочно тут на виртуалке поменять дату на пару месяцев назад. Запустил, залез в настройки времени и даты, поменял, все бы хорошо, но заметил, что через несколько секунд дата опять установилась такой же как и была до изменения… Наверное синхронизация с интернетом творит такие вещи подумал я, отключил ее, поменял дату, опять тоже самое… Ну пошел спрашивать у великого Googl’а. Порывшись немного выяснил, что время и дата на виртуальной машине синхронизируется с родителем, т.е. с компьютером на котором установлена виртуальная машина.
В графических настройках изменить данную опцию не возможно (если возможно скажите :) ). Менять время на основной ОС мне совсем не хотелось, для такого рода экспериментов как раз и придуманы виртуальные машины.
У меня установлен VirtualBox и в данном случае виртуалка запускалась из под Windows 7. Так вот, для отмены синхронизации времени и даты виртуальной машины с операционной системой в которой она стоит необходимо следующее (для win 7):

  • Вызываем терминал: WIN+R.
  • Перемещаемся в папку где установлен VirtualBox: cd путь до папки с виртуалкой, например cd с:\Program Files\Oracle\VirtualBox
  • И выполняем команду: vboxmanage setextradata "virtualmachines name" “VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled” “1"
    virtualmachines name — имя вашей виртуальной машины, например в данном случае
    Имя виртуальной машины
    имя будет «win xp»

Вот и все, теперь можете изменять системную дату/время и она будет оставаться такой, какой Вы ее задали. Удачи!

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress