Интернет-казино Grand Casino произвело фурор в игорном мире.
Одно из самых важных нововведений - наличие системы контроля честности всех азартных игр казино. Наличие контроля честности дает возможность полностью уйти в игру, не задумываясь о подтасовке или обмане. В Grand Casino можно пополнить счет и вывести выигрыш большим количеством способов:(SMS, E-gold, Rupay, Яндекс.Деньги, Webmoney,Кредитные карты,...). Теперь азартные игры на деньги стали доступнее.
Предоставлены игры: Рулетка, Покер, Блэкджек, Видео Покер, Игровые автоматы, Кено.
Итак, с чего начнем... естественно с проектирования. Что должна уметь/иметь не крутая, простенькая CMS? Этот вопрос достаточно сложный, т.к. любая CMS, даже самая простая, пишется под конкретные нужды: электронный магазин, программерский сайт, новостной сайт, галерея(хотя, в принципе, галерея- это не совсем CMS) и т.д.
Здравствуй мой юный кодер, сегодня МЫ с тобой начнем писать свою простенькую CMS. Итак, с чего начнем…естественно с проектирования. Что должна уметь/иметь не крутая, простенькая CMS? Этот вопрос достаточно сложный, т.к. любая CMS, даже самая простая, пишется под конкретные нужды: электронный магазин, программерский сайт, новостной сайт, галерея(хотя, в принципе, галерея- это не совсем CMS) и т.д. В этой статье мы рассмотрим второй вариант. Что же должна уметь такая CMS? Думаю все со мной согласятся, что: 1) Админку :) 2) Возможность управления новостями, статьями, загрузками, ссылками 3) Функцию регистрации пользователей Это тот минимум с которым должна уметь оперировать наша CMS. К дополнительным фичам я отнесу: 1) Динамически создаваемые страницы, т.е. в админке можно запросто ввести содержимое новой страницы. Например: сделать магазин uin’ов на сайте или страницу повествующую о истории вашего проекта и т.п. 2) Комментарии к новостям. Это отдельный пункт, т.к. это довольно таки опасная вещь из-за того, что нужно применять специальные фильтры и спам- детекторы, иначе если вас кто-то очень сильно не любит и у него есть мозг/деньги(или что хуже всего, когда у него есть и то и другое :)) то он, в лучшем случае, может просто забить вашу БД мусором, в худшем он получит полный контроль над сайтом…Мы еще вернемся к этому вопросу;) 3) Возможность создания динамически создаваемых менюшек, их перестановка в различные области сайта. 4) Форма обратной связи с админами(Опасность та же, что и для пункта №2). Ну вот и все, что я планирую(пока что) тебе объяснить.
Сначала организуем структуру директорий будущего сайта: /DocumentRoot /AdminPanel # Корневая директория админки /Sources # Скрипты админки /HTML # Собственно сам хтмл админских страниц управления /Sources # Скрипты CMS /HTML # Хтмл /Images # Картинки /Downloads # Директория хранящая в себе файлы доступные для скачивания /Config # Файлы конфигурации CMS, например содержащие логин и пароль доступа к MySQL
Теперь что касается навигации по сайту. Навигация будет производится с помощью ссылок(ога, самому смешно :)) типа you_site.com/index.php?act=art&mod=idx. Параметр art характеризует какой раздел сайта мы хотим просмотреть, а параметр mod отвечает за подраздел который мы хотим просмотреть. Вот таблица соответсвия этих параметров: act=art&mod=idx # Просмотр категорий статей art=art&mod=cat # Просмотр конкретной категории. Как CMS будет узнавать какую категорию мы хотим просмотреть я объясню чуть позже :) art=art&mod=art # Просмотр конкретной статьи
act=dwn&mod=idx # Просмотр категорий статей art=dwn&mod=cat # Просмотр конкретной категории. Как CMS будет узнавать какую категорию мы хотим просмотреть я объясню чуть позже :) art=dwn&mod=dwn # Просмотр конкретной статьи
act=users # Просмотр зарегистрировавшихся пользователей act=users&mod=profile # Просмотр профайла юзера art=art&mod=reg # Регистрация юзера
Это пока далеко не все варианты, в дальнейшем мы научим “понимать” CMS и другие параметры. Ну а теперь перейдем непосредственно к программированию. Создадим в корневой папке файл index.php именно через этот скрипт пользователь будет путешествовать по сайту, все остальное кроме картинок должно быть запрещено для просмотра(и не только скрипты но и файлы конфигурации, ХТМЛ)
Код файла index.php:
require_once(‘config/database.php’); // Загружаем скрипт соединяющийся с БД require_once(‘sources/session.php’); // Скрипт управления сеансами пользователей require_once(‘config/config.php’); // Файл конфигурации require_once(‘sources/check.php’); // Проверяет получаемые из URL’a параметры require_once(‘sources/links’); // Отвечает за ссылки для навигации по сайту
$act=check_act(&$debug); // Функция проверки переменной $act, находится в файле check.php $mod=@$_GET[‘mod’]; // Получаем переменную $mod $site_links=get_links($mysql_tables); // Получаем массив ссылок switch ($act) { case ‘idx’: //если посетитель просматривает главную страницу сайта require_once(‘sources/news.php’); // Загружаем скрипт новостей $site_news=get_news($mysql_tables); // Получаем массив новостей require_once(‘HTML/index.htm’);// Загружаем ХТМЛ страницы break; } ?>
Код файла database.php:
$mysql_login=’root’; //Логин для доступа к серверу БД $mysql_pass=’’; // Пароль $mysql_host=’localhost’; // Хост на котором висит MySQL $mysql_database=’MyCMS’; // Имя БД
if(!@$_SESSION['group_id'])//Если пользователь только что зашел { $_SESSION['user']='Гость'; $_SESSION['id']=0; $_SESSION['group_id']=-1; $_SESSION['last_click']=$time; }
if(@$_SESSION['group_id']<>'')//если посетитель не гость { $_SESSION['last_click']=$time;//в дальнейшем нам это понадобиться для учета онлайн- пользователей на сайте }
?>
Код файла check.php:
function check_act(&$debug)//Функция проверки переменной act { $act=@$_GET['act']; if($act<>'idx') { $act=$debug['indx_act'];//Задаем дефолтное значение } return $act; }
?>
Код файла config.php:
//Установки управления исправлением ошибок: $debug['indx_act']='idx';// Если главный скрипт получит не правильное значение переменнной act то он задаст ей это значение
?>
Код файла links.php:
function get_links(&$table) { $query="SELECT position FROM $table"; $result=mysql_query($query); $rows=mysql_num_rows($result); for ($i=0; $i<$rows; $i++) { $sort_array[$i]=mysql_result($result, $i); } sort($sort_array); for ($j=0; $j<$rows; $j++) { $pos=$sort_array[$j]; $query="SELECT * FROM $table WHERE position='$pos'"; $result=mysql_query($query); $tmp_arr=mysql_fetch_array($result); $links[$j]['name']=$tmp_arr['name']; $links[$j]['link']=$tmp_arr['link']; } $links['rows']=$rows-1; return $links; }
?>
Вот в принципе уже и мини двиган получился :) Теперь давайте разберем код некоторых файлов, чтобы я вам пояснил механизм работы. Итак для чего я проверяю переменную $act спросите вы? А представьте себе что кто-то захочет в url’e ее поменять? После этого скрипт может работать не стабильно и вполне реальна порча данных и т.п. Конечно в данном примере это играет, мягко говоря, второстепенную роль, но запомните, что нужно проверять абсолютно все что может изменить пользователь(лучше даже проверять то что он в принципе и не может изменять). Если же у переменной какое-то левое значение то мы ей присваиваем дефолтное значение и тем самым обламываем вредных киддисов :)
Теперь разберем самый сложный из этих простых скриптиков- links.php. Я думаю, что читатель этой статьи уже сталкивался с управлением каким- либо движком сайта и наверняка догадался почему этот скрипт настолько сложен(для начинающих конечно). Управление ссылками на навигационной панели сайта заключается не только в том, чтобы их добавлять и удалять, а еще, как минимум, в том чтобы изменять их позицию, т.е. вы сначала добавили ссылки на раздел статей, а потом вспомнили, что забыли добавить раздел “Главная”- ссылку на главную страницу, но ведь эта ссылка должна по традиции идти первой…вот тут- то и пригодится управление позициями. Вы просто добавляете ссылку на главную страницу, а потом нажимаете на что-то похожее на “Вверх” или “Поднять” и т.п. Но мы пока не будем в этой части касаться админки, а пока рассмотрим скрипт- клиент. Сначала мы просто выбираем все записи из таблицы и заносим значения поля ‘position’ каждой записи в массив. Затем мы сортируем их по возрастающей, то есть : 0, 1, 2 и т.д. Это позволяет нам потом выполнять в цикле SQL запросы типа: $query="SELECT * FROM $table WHERE position='$pos'"; Таким образом мы выбираем из таблицы записи у которых поле ’position’ равно значению переменной $pos, что и дает нам возможность управления позициями ссылок. Здесь мы в цикле, начиная с ключа со значением 0 присваивать имя ссылки и, собственно, саму ссылку. Все что нам потом понадобится чтобы вывести ссылки на свет юзеровский- это написать в хтмл файле index.htm такой скрипт:
Вот собственно и все. Кстати, некоторые люди которые читают сейчас эту статью, наверное, возмутяться: “А почему в запросе не использовать конструкцию ORDER BY и не использовать связанные таблицы? Ведь это упростит задачу!”. Дело в том, что стиль написания моих скриптов заключается в том чтобы максимально увеличить их переносимость, т.е. я никогда не использую сложные запросы, связанные таблицы и т.д. Конечно, все это плохо сказывается на скорости работы скриптов и их сопровождении(слишком не понятный код), и если нужно добиться максимальной производительности в ущерб переносимости, то я использую все эти средства, но зато еще ни один мой скрипт при переезде не просто с одной версии MySQL на другую, а с одной платформы и/или типа веб серверов и серверов БД не выдал ни одной ошибки или предупреждения :) Каждый волен делать так как он хочет, ведь на то оно и программирование: возможных решений задачи, столько же сколько и людей пытающихся ее решить;)
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.