Отличная галерея для Joomla! 1.5.x
20 сентября 2009 | KalimdorПроблема выбора галереи для сайта стара как мир. С одной стороны их просто дофига, с другой — стоящих очень и очень мало, при том что удовлетворяющих хотя бы приблизительно потребностям разработчика и того меньше.
Года два назад я тоже озаботился данным вопросом. Чего только я не перепробовал с тех пор и сделал кое-какие выводы. Существует три вида галерей. Первые — это монстры вроде Coppermine Gallery. Это мощные галереи, на которых можно сконструировать очень и очень многое, но с другой стороны в настройке и допиливании они достаточно сложны, так что для не чего-нибудь не сверхсложного они являются не самым оптимальным решением. Вторые — убогое глючное говно , вроде Datso Gallery (это такой компонент галереи для джумлы). Думаю распинаться на их счёт не стоит. И наконец третьи — это галереи вида JoomGallery, уступающие по функциональности первому виду и не принадлежащие второму виду. Героем моего поста будет как раз JoomGallery.
На эту галерею я наткнулся где-то в июле этого года и понравилась она мне практически сразу. Ну сами посудите — нативная поддержка Joomla! 1.5.x, большое количество разнообразных настроек альбомов, прав просмотра и внешнего вида категорий и подкатегорий, несколько режимов загрузки картинок, несколько возможностей открытия полноразмерных изображений (новым окном, всплывающим окном, контейнером DHTML, Lightbox, Thickbox3 или же Slimbox ). Но без ложки дёгтя не обошлось как всегда, а именно — перевод на русский есть, но он достаточно тяжёлый и не слишком понятный. Это первое. А второе — нельзя выбирать обложку для категории из картинок её подкатегории. Но это не критические недостатки, так что можно сказать, что всё замечательно
.
Ну и на последок ссылки:
___________________________________________
Так как я что-то подотстал от блогосферы, то постовых не будет. Если имеете на примете какие-нибудь интересные блоги по теме вебстроительства — буду благодарен, если напишете про них в комментах.
Похожие записи:
5
Пишем систему пользователей сайта на 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. Думаю начать копить на неё
. Не, ну правда красавица:

Похожие записи:
4
Пишем систему пользователей сайта на 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(); } ?> |
Далее во всех скриптах, использующих БД для подключения будет использоваться этот файл.
На сегодня пока всё
.
Похожие записи:
19
Пишем систему пользователей сайта на PHP. Часть 1. Составляем проект
17 августа 2008 | KalimdorСистема пользователей необходима на многих сайтах, поэтому я решил написать серию постов на эту тему. Процесс написания будет разбит на части, в каждой будет описываться процесс написания одного из компонентов системы. Эта часть — первая, здесь будет описана будущая пользовательская система.
И так, что моя система будеn иметь:
- Регистрирация пользователей
- Выполнение входа пользователей
- Выполние выхода пользователей
- Выполнение проверки, перед выводом содержимого для конкретного пользователя
- Личный кабинет
- Вывод профайла пользователя
- Система администрирования
Теперь разберём каждую часть в отдельности.
Регистрации пользователей
Данный модуль представляет из себя страничку с полями, где пользователь должен заполнить все необходимые поля и нажать кнопку регистрации. Что должен уметь данный компонент:
- Проверять входящие от пользователя данные на корректность, чтобы в скрипт не пропихнули чего-нибудь опасного
- Уметь выводить капчу при регистрации для защиты от ботов
- Проверять занятость логина и e-mail
- Отправлять письмо для подтверждения регистрации
Вход пользователя
По сути — два классических поля логин/пароль. Данный модуль должен уметь:
- Проверять входящие данные (безопасность, безопасность и ещё раз безопасность)
- Проверять наличие логина в базе данных и при его присутствии проверить пароль
- Если логин и пароль верны записывать данные в куки
Выход пользователя
Тут всё просто. Пользователь нажимает кнопку выход и скрипт удаляет пользовательские куки.
Выполнение проверки при выводе приватного содержимого
В данном случае это будет просто функция проверки кук на корректность, которую надо будет подключать там где нужно. Принцип действия такой же как и при авторизации, за исключением того, что данные берутся из кук.
Личный кабинет
Тут пользователь может редактировать данные профайла. Ничего сложного тут нет.
Профайл
Тут будет выводиться информация профайла пользователя. Профайл можно сделать как открытый, так и закрытый. Я рассмотрю различные вариации открытого и закрытого профайла.
Система администрирования
Тут будет три инструмента:
- Вывод списка пользователей
- Возможность редактировать профайлы пользователей
- Возможность удалять пользователей
Вот и всё описание продукта. Теперь его осталось сделать
.
Похожие записи:
8
Форматы сетевой графики. Часть третья
5 августа 2008 | KalimdorСобственно заключительная статья из мини цикла про форматы графики. На этот раз речь будет идти о формате PNG (Portable Network Graphics).
Общая информация
Формат PNG появился достаточно недавно, в отличие от GIF и JPEG. Это относительно молодой формат. У PNG есть 2 разновидности — PNG-8 и PNG-24. Первая полностью аналогична GIF за исключением большего сжатия и отсутствия анимации, второй же создан для полноцветных изображений. PNG-24 обладает следующими фичами:
- Альфа прозрачность. В отличие от GIF у PNG-24 целых 256 уровней прозрачности.
- Гамма-коррекция. Тут в формат зашита способность автокоррекции яркости изображения при воспроизведении на разных системах.
- Улучшенное сжатие без потерь.
Область применения
PNG-24 лучше всего использовать для полноцветных изображений с мелкими деталями, чёткими краями и с мелким текстом.
Полезные ссылки
http://www.w3.org/Graphics/PNG/ — спецификация формата.
http://symfony.org.ua/2008/07/poluprozrachnost-png-internet-explorer/ — способ заставить работать альфа-прозрачность в IE 6.
__________________________________________
Недавно плотно посидел над блогом — подправил дизайн, поставил несколько полезных плагинов, добавил страничку «Об авторе».
-------------------------------------
Постовый.
Не делай добра — не получишь зла. Именно по этой причине я не больше не палю свои сайты. Да и вообще стараюсь о своих делах в интернете говорить по меньше.
Низкочастотная стратегия. Если вам захотелось достать трафа, не покупая ссылки, то этот пост читать обязательно.
Похожие записи:
1