Немного о жизни
23 сентября 2008 | KalimdorКак я и думал, жопа на меня надвигается медленно, но верно. Но вообще заметил такую интересную вещь — чем злее ты становишься, тем лучше работается, как не странно. Но с другой стороны, чем лучше всё получается, тем становишься добрее и эффективность труда падает. И тут надо найти баланс между добротной злостью, эффективностью и уживчивастью в обществе, ведь если будешь слишком злым — поссоришься со всеми, если недостаточно озлобленным, то дела будут идти не так как хотелось бы. И решение данного треугольника параметров для всех индивидуально.
Но конкретно для меня сейчас вопрос вопрос стоит иначе — как сделать так, чтобы наступающие жопа-кеды (© Давыдов) не сделали меня злым как собака, и как удачнее эти жопа-кеды пройти. Нет, речь идёт не о финансовом кризисе, который всё разгорается и разгорается, а о том, что у меня 11 класс, физмат и все отсюда вытекающие последствия. Спина трещит по швам уже сейчас, что будет в зимой подумать боюсь. Хотя надо отметить, что вкалывать по учёбе я стал эффективнее, сейчас главное вжиться в этот бешенный темп. И ещё день рождения скоро. Скорее всего будет «как обычно»
. Но это уже детали.
Теперь на счёт блога. Я решил, что хватит уже в сети слоняться без цели. Но т.к. если возьмусь за что-то очень тяжёлое, то велик шанс надорваться, поэтому начну с достаточно небольшого — создать и достаточно прилично раскрутить какой-нибудь СДЛ. Сроки — не буду ставить, во всяком случае сейчас. Когда будет ближе к выполнению, тогда и буду ставить.
______________________________________________________
Постовый.
Chop пишет про 5 самых актуальных моделях онлайн бизнеса. Амерки не открыл, но зато описал досточно хорошо.
Zukerro пишет про начало конца. В принципе во многом он прав.
8
Сборка вордперсса 2.6 для сплогов ver. 2
16 сентября 2008 | KalimdorСегодня будет свежая сборка вордпресса для сплогов. Главное отличие от предыдущей сборки заключается в том, что теперь в ней есть синонимайзер. В итоге прежде чем публиковаться, текст синонимизируется. Предупреждаю сразу, чем больше база синонимов и частота синонимизации текста, тем больше ресурсов потребляет плагин и тем дольше он работает. Поэтому, чтобы не повесить хост, обязательно распределяйте обновления сплогов так, чтобы они обновлялись в различное время. Так же в плагине я отключил синонимизацию заголовков новостей. Если она вам нужна, то открываете в папке plugins файл simplesyn21.php и удаляете два слеша в начале 7-й строки. Теперь подробнее о плагинах, вошедших в сборку:
- Akismet. Классика жанра. Хотя при умелой настройке можно использовать спамеров для увеличения «человечности» сплога в глазах поисковый систем.
- Anti-XSS attack. Из названия и так ясно. Закрывает XSS дыры в вордпрессе.
- Bookmarkz. Данный плагин внизу каждого поста вставляет ссылки на добавление страницы в сервисы социальных закладок. Опять таки, с ним сплог выглядит «человечнее».
- Exec-PHP. Плагин, позволяющий выполнению PHP кода в текстах постов, страницах и виджетах. С помощью него в сайдбар добно добавлять сапу. К плагину приложил перевод от Dimox'a.
- FeedWordPress. Это основа будущего сплога. Плагин синдицирует контент с rrs/atom лент. В сборке плагин с переводом отсюда.
- Google XML Sitemaps. Создаёт и обновляет карту сайта в xml формате. Увеличивает скорость индексации сайта.
- MaxSite Russian Date. Представляет даты в русскоязычном формате.
- Platinum SEO Pack. Генерирует метатеги и приводит тайтлы в нормальный вид.
- Russify Comments Number. Склоняет слово «комментарий».
- RusToLat. Транслитирует русские слова в латиницу. Необходим для ЧПУ.
- Simple Syn 2.1. Плагин синонимизации текста. Использует базу данных. Синонимы воспринимает в двух форматах: word| syn1, syn2 ... или syn1:syn2:syn3... . В первом случае замена слова word идёт рандомно на слово или сочетание, которое находится за чертой. Во втором случае при синонимизации слова syn (номер) выбирается синоним из всех в строке, т.е. синонимы равноправны. Плагин работает как с русским текстом так и с английским.
- Simple Tags. Плагин для управления тэгами.
- WP-Noindex. Все ссылки в комментариях заключает в теги <noindex></noindex>.
- WP-PageNavi. Плагин для нумерации страниц. Позволяет резко увеличить количество страниц второго и третьего уровня. Маст хэв для MFS.
- WP-Print. Делает версии статей, подготовленные к печати.
- WP All-in-One tools. Сборник плагинов, которые позволяют улучшить работу вордпресса.
- WP Super Cache. Плагин ускоряет нагрузку на сервер и ускоряет работу сайта.
- Auto_more + advert. Автоматически подставляет тег more. В полной версии статьи показывает рекламный код, который вы поставили. Отлично подойдёт для контекста.
- WP-NoRef. Загоняет все внешние ссылки на блоге в тег ноуиндекс и ставит на них атрибут nofollow.
Скачать.
Только после этой сборки не говорите, что кнопки «Бабло» не существует
.
_______________________________________________________________________
В связи с большим количеством спама на моём блоге объявляю бессрочную акцию. Отныне нормальные комментаторы с нормальными блогами будут получать ссылки в моих постовых.
_______________________________________________________________________
Постовый.
Бесколёсный рассказывает про свою сетку блогов.
Spryt увлёкся ассемблером
.
Пишем систему пользователей сайта на PHP. Часть 4. Функция восстановления паролей
7 сентября 2008 | KalimdorВообщем полезная опция для пользовательской системы, ведь ни для кого не секрет, что юзер на сайте существо забывчивое
и зачастую свой пароль он не помнит. Именно поэтому функция восстановления пароля на сайте нужна. На этот раз код будет оформлен в виде функции. Где и в каком месте её применить, решать вам
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | <?php // Функция восстановления пароля, в качестве аргументов принимает почтовый ящик дескриптор соединения с базой данных, название сайта и мыло отправителя и возвращает true, если операция восстановления пароля прошла успешно, false в противном случае function restoration_password ($email, $dbdeskriptor, $site_name, $adm_mail) { // Проверим валидность мыла if(!preg_match("/^[dw-_.]+@[dw-.]+.[w]{2,4}/i",$email)) { mysql_close ($dbdeskriptor); echo "Некорректно введён e-mail адрес"; return false; } // Составим запрос к базе данных $query_select = "SELECT `login`,`pass` FROM `user` WHERE mail="$email""; // Проведём запрос к базе данных $ath = mysql_query ($query_select, $dbdeskriptor); // Проверим успешность запроса if (!$ath) { mysql_close ($dbdeskriptor); echo "Ошибка базы данных"; return false; } // Извлечём результаты запроса $result = mysql_fetch_assoc ($ath); // Проверим на NULL результат запроса if (isset ($result ['user'])) { mysql_close ($dbdeskriptor); include "Такого e-mail в базе нет!"; return false; } // Если пользователь существует, сгенерируем для него новый пароль, состоящий из 6 знаков $simvols = array ("0","1","2","3","4","5","6","7","8","9", "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z", "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"); for ($key = 0; $key < 6; $key++) { shuffle ($simvols); $string = $string.$simvols[1]; } // Найдём хеш пароля $pass = md5 ($string); // Составим запрос к базе данных $query_update = "UPDATE user SET pass = "$pass" WHERE mail="$email""; // Проведём запрос $ath = mysql_query ($query_update, $dbdeskriptor); // Проверим результат запроса if (!$ath) { mysql_close ($dbdeskriptor); echo "Ошибка базы данных"; return false; } // Вышлем письмо с логином и новым паролем пользователю $ath = mail ("$email", "Восстановление пароля на сайте {$site_name}", "Вы запросили восстановление логина и/или пароля на сайте {$site_name}. Ваш логин и новый пароль:n Логин: {$result['login']}n Пароль: {$string}", "From: amin <{$adm_mail}>"); // Проверим успешность отправки if (!$ath) { include "Ошибка при отправке письма"; return false; } echo "Пароль восстановлен"; return true; } ?> |
Ну собственно всё, ничего сложно в функции нет.
____________________________________________
Постовый.
Обзор блогосферы от Virtual-lab.
Рецепт заработка от Спрута.
А здесь можно выйграть iPhone
.
11
Пишем систему пользователей сайта на PHP. Часть 3. Пишем залогинивание пользователей
2 сентября 2008 | KalimdorС этим постом я припозднился, но лучше поздно, чем никогда
. Теперь перейдём к делу. Сначала код формы для отправки данных. Его можно будет вставить в любое нужное вам место на сайте. И так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <html> <head> <title>Вход для пользователя</title> </head> <body> <table> <tr><td> <form action= "login.php" method="post"> Логин: <input type = "text" name = "login"> Пароль: <input type = "text" name = "pass"> <input type = "checkbox" name = "zap" value= "yes"> Запомнить <input type = "submit" value = "Вход"> </form> </td></tr> </table> </body> </html> |
При вставке в php-код и выводе через функцию echo () не забывайте экранировать кавычки обратным слешем (). Обрабатывает входящие данные файл login.php. Структура таблицы пользователей была описана в предыдущем посте.
Теперь код самого login.php (код прокомментирован):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | <?php // Здесь введите адрес своего сайта, он используется для ограничения доступа по URL к кукам $host = "www.panel.demo.ru"; // Получим входные данные $login = $_POST ['login']; $pass = $_POST ['pass']; $zap = $_POST['zap']; // Проверим входящие данные // Проверка вводимых данных на корректность if(!preg_match("/[A-Za-z0-9]/",$login)) { include "error.php"; // Здесь и далее можно поставить урл на свою страницу ошибки exit(); } if(!preg_match("/[A-Za-z0-9]/",$pass)) { include "error.php"; exit(); } if(!($zap == "yes") && !($zap =="")) { include "error.php"; exit (); } // Найдём хеш пароля $pass = md5 ($pass); // Найдём пользователя с введённым логином // Составим запрос $query = "SELECT `user`,`pass` FROM `user` WHERE login = "$login""; // Приконнектимся к БД include "config.php"; // Произведём запрос $ath = mysql_query ($query, $dbdeskriptor); // Проверим выполненость запроса if (!$ath) { mysql_close ($dbdeskriptor); include "error.php"; exit (); } // Извлечём результаты запроса $result = mysql_fetch_assoc ($ath); // Проверим наличие логина if (!isset($result ['login'])) { mysql_close ($dbdeskriptor); include "error.php"; exit (); } // Если логин есть проверим правильность пароля if (!($pass == $result ['pass'])) { mysql_close ($dbdeskriptor); include "error.php"; exit (); } // Если пароль правильный, то производим запись в куки в зависимости от того, будет запоминание пользователя или нет if ($zap == "yes") { setcookie ("l","$login", time () + 172800, "/", $host); setcookie ("p","$pass", time () + 172800, "/", $host); } else { setcookie ("l","$login", 0, "/", $host); setcookie ("p","$pass", 0, "/", $host); } // Выводим сообщение об успешности залогинивания echo "Логин и пароль приняты системой"; ?> |
Вместо простого вывода сообщения об успешности залогинивания, можно сделать вывод сообщения с редиректом на прошлую страницу. Если интересно как это сделать — отпишите в комментариях, в следующем посте опубликую решение. На сегодня пока всё.
____________________________________________________________________
Постовый.
Полубомж написал на тему паления тем. Достаточно давно я тоже писал на эту тему.
Бесколёсный вернулся!. Жду новых интересных постов от него.
__________________________________________________________
P.S.
Съездил на Московский автосалон Мотор Экспо 2008. Выставка проходила в Крокус Экспо и была просто шикарной. Самые лучшие стенды имхо были у Ауди, Мерседеса и БМВ. Во многом благодаря большой концентрации отличных тачек на квадратный метр стенда. Думаю не стоит объяснять, почему на их стендах было очень много народу
. Даже машину себе выбрал. По соотношению цена/качество/стиль/мощность/практичность мне понравился Mitsubishi Lancer Evolution X. Думаю начать копить на неё
. Не, ну правда красавица:

3
Пишем систему пользователей сайта на PHP. Часть 2. Пишем регистрацию пользователей
20 августа 2008 | KalimdorРазглагольствовать что да как у меня сделано не буду, код очень хорошо прокомментрован буквально по действиям.
Сначала форма с полями:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <html> <head> <title>Регистрация нового пользователя</title> </head> <body> <table> <tr><td> <form action = "reg_end.php" method = "post"> Введите, пожалуйста, желаемый логин:</td><td> <input type = "text" name = "login"> </td></tr> <tr><td> Введите свой пароль<br /></td><td><input type = "password" name = "pass"> </td></tr> <tr><td> Повторите свой пароль:</td><td><input type = "password" name = "second_pass"> </td></tr> <tr><td> Введите свой e-mail:</td><td><input type = "text" name = "email"> </td></tr> <tr><td> <input type = "submit" value = "Зарегистрироваться"> </form> </td></tr> </table> </body> </html> |
В таблице юзеров у нас 4 поля — id_user, login, pass, mail. Пароли шифруются с помощью алгоритма необратимого шифрования md5. Теперь код самого обработчика:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | <?php // Приём данных из формы $login = $_POST['login']; $pass = $_POST['pass']; $second_pass = $_POST['second_pass']; $email = $_POST['email']; // Проверка вводимых данных на корректность if(!preg_match("/^[A-Za-z0-9]+$/",$login)) { include "regerror.php";// Здесь можно поставить адрес любой страницы с сообщением об ошибке. Аналогично со всеми инклюдами в проверке данных и их соответствии. exit(); } if(!preg_match("/^[A-Za-z0-9]+$/",$pass)) { include "regerror.php"; exit(); } if(!preg_match("/^[A-Za-z0-9]+$/",$second_pass)) { include "regerror.php"; exit(); } if(!preg_match("/^[dw-_.]+@[dw-.]+.[w]{2,4}/i",$email)) { include "regerror.php"; exit(); } // Проверяем соответствие пароля и его копии if (!$pass == $second_pass) { include "regerror.php"; exit (); } // Проверим занятость логина и мыла в скрипте // Коннектимся к базе данных include "config.php"; // Формируем запрос $query_login = "SELECT `user`,`mail` FROM `user` WHERE login = "$login" OR mail = "email";"; // Делаем запрос к БД $ath = mysql_query ($query_login, $dbdeskriptor); // Проверяем успешность запроса if (!$ath) { include "dberror.php"; // При проверке успешности запроса указывайте свой адрес файла с сообщением об ошибке mysql_close ($dbdeskriptor); exit (); } // Извлекаем результаты запроса $result = mysql_fetch_assoc ($ath); // Проверяем свободность if (isset ($result ['user'])) { include "regerror.php"; mysql_close ($dbdeskriptor); exit (); } // Если всё нормально, заносим данные в базу данных // Сформируем данные $pass = md5 ($pass); // Сформируем запрос $query_insert = "INSERT INTO user VALUES (0,'$login','$pass','$email');"; // Проведём запрос к БД $ath = mysql_query ($query_insert, $dbdeskriptor); // Проверим успешность запроса if (!$ath) { include "dberror.php"; mysql_close ($dbdeskriptor); exit (); } // Закроем соединение с БД mysql_close ($dbdeskriptor); // Выведем сообщение об успешной регистрации echo "Регистрация прошла успешно"; ?> |
Файл подключения базы данных (config.php):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php $dblocation = "localhost"; // Введите имя хоста сервера баз данных MySQL $dbuser = ""; // Введите имя вашего пользователя БД MySQL $dbpass = ""; // Ввелите пароль вашего пользователя БД MySQL $dbname = ""; // Введите имя БД MySQL, предназначенной для скрипта // Соединение с БД $dbdeskriptor = @mysql_connect($dblocation,$dbuser,$dbpass); if (!$dbdeskriptor) // Проверяем соединение с сервером БД { include "dberror.php"; exit(); } // Подключается к базе данных $db_select = mysql_select_db($dbname,$dbdeskriptor); if (!$db_select) // Проверяем соединение с нужной БД { include "dberror.php"; exit(); } ?> |
Далее во всех скриптах, использующих БД для подключения будет использоваться этот файл.
На сегодня пока всё
.
13