Создание сайта
| |
cougraAcc | Дата: Суббота, 01 Января 2011, 19:36 | Сообщение # 1 |
Яркая личность GD
Сейчас нет на сайте
| Сборник уроков по созданию сайта от ExL1fer Браузерная игра тот же сайт просто немного необычный, все что написано ниже... это облегченный код, поэтому дилетанты php не наезжайте что я "нуб" и т.д. Все что написано ниже попытка упростить создание сайта... Возможны ошибки, т .к. с процедурным работал давненько.... И так:) начнем с файла index.php Для начала открываем сессию т.к. у нас авторизация будет на сессии.... Далее подключаем файл конфигурации и мини ядро:) Code include "conf/config.php"; include MODULE_DIR. "/news.php"; $type=new modules; $type->mysql(); Позднее мы будем направлять на index.php get запосы поэтому разметим все сразу Code if ($_GET['auth']==1) { #authorization } elseif ($_GET['auth']==2) { #Registration } elseif ($_GET['auth']==3) { #logout } elseif ($_GET['auth']==6) { #Сама страница реги } else { #вывод главной страницы } На этом пока все с index.php Далее создаем конфигурационный файл со списком констант: Создадим папку conf и файл config.php Там пишем: Code <?php define("SITE_NAME", "Мой 1й сайт на php"); define("VERSION", "0.1"); define("TPL_DIR", "tpl"); define("IMG_DIR","img"); define("MODULE_DIR","modules"); define("JS_DIR", "js"); define("DBHOST","localhost"); define("DBUSER","root"); define("DBPASSW",""); define("DBNAME","sitedemo"); define("PREFIX","/"); ?> Это константы… Далее Создаем папку tpl для наших шаблонов: Все шаблоны будут лежать в архиве… Создаем папку modules Наше мини ядро будет называться news.php Вот его содержание: Code <?php #Модуль блока новостей class modules { function news() { echo "news"; $res=mysql_query("SELECT * FROM `news`");
while($row=mysql_fetch_array($res)) { $id=$row['id']; $autor=$row['autor']; $subject=$row['subject']; $text=$row['text']; echo <<<HERE <div class="subnews"> <h3>$subject</h3> <hr> $text <hr> <b>Автор: $autor <br><a href="/news.php?news=$id">Читать</a></b> </div> <br><br> HERE; } } function mysql() { $link = mysql_connect(DBHOST, DBUSER, DBPASSW) or die(mysql_error()); mysql_select_db(DBNAME, $link) or die(mysql_error()); mysql_query("SET NAMES cp1251"); } } ?> Теперь наполним условные операторы в index файле…. Code <?php session_start(); #By ExLifer include "conf/config.php"; include MODULE_DIR. "/news.php"; $type=new modules; $type->mysql(); if ($_GET['auth']==1) { define("PATH", "auth"); if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //Присваеваем логину переменную $login, если она пуста уничтожаем её if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} } if (empty($login) or empty($password)) //Проверяем на введенность данных { exit ("Введена не вся информация, вернитесь и исправьте"); } $login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
//удаляем лишние пробелы $login = trim($login); $password = trim($password); $result = mysql_query("SELECT * FROM users WHERE login='$login'"); //извлекаем из базы все данные о пользователе с введенным логином $myrow = mysql_fetch_array($result); if (empty($myrow['password'])) { //если пользователя с введенным логином не существует exit ("Извините, введённый вами логин или пароль неверный."); } else { //если существует, то сверяем пароли if ($myrow['password']==$password) { //если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел! $_SESSION['login']=$myrow['login']; $_SESSION['id']=$myrow['id'];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь echo "Вы авторизованы добро пожаловать"; } } } elseif ($_GET['auth']==2) { if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //Присваеваем логину переменную $login, если она пуста уничтожаем её if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} } //так же присваеваем паролю переменную $password проверяем.... if (empty($login) or empty($password)) //Проверяем на введенность данных { exit ("Введена не вся информация, вернитесь и исправьте"); }
$login = stripslashes($login); $login = htmlspecialchars($login);
$password = stripslashes($password); $password = htmlspecialchars($password);
$login = trim($login); $password = trim($password);
// проверка на существование пользователя с таким же логином $result = mysql_query("SELECT id FROM users WHERE login='$login'"); $myrow = mysql_fetch_array($result); if (!empty($myrow['id'])) { exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин."); }
// если такого нет, то сохраняем данные $result2 = mysql_query ("INSERT INTO users (login,password) VALUES('$login','$password')"); } elseif ($_GET['auth']==3) { session_destroy(); Header("Location: index.php"); } elseif ($_GET['auth']==6) { define("PATH", "reg"); } else { define("PATH", "news"); } include TPL_DIR. "/top.tpl"; if ($_GET['auth']==6) { include TPL_DIR. "/register.tpl"; } else { $type->news(); } include TPL_DIR. "/bottom.tpl"; ?> Все шаблоны лежат в архиве, не стал описывать…. Тут как бы все… ваши предложения что можно ещё внести?Добавлено (01.01.2011, 19:36) --------------------------------------------- Забыл ссылку выложить:) example
|
|
| |
BOOM | Дата: Суббота, 01 Января 2011, 19:44 | Сообщение # 2 |
I am the creator of ADE
Сейчас нет на сайте
| Сейчас прогнал на TopServer. Всё работает. Есть одно маленькое но, система не генерирует мету по кодировке. Я пользуюсь Юникодом для веба (да по умолчанию, во многих браузерах, стоит он). Поэтому переключил, а пользователю будет лень зализать в меню браузера... Ну, я имею в виду этот тег: Code <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> в head.
______________________________ Я вернулся, и это чудо. ______________________________
Сообщение отредактировал BOOM - Суббота, 01 Января 2011, 19:45 |
|
| |
cougraAcc | Дата: Суббота, 01 Января 2011, 19:47 | Сообщение # 3 |
Яркая личность GD
Сейчас нет на сайте
| Вроде я не вписывал в tpl файле
|
|
| |
BOOM | Дата: Суббота, 01 Января 2011, 19:52 | Сообщение # 4 |
I am the creator of ADE
Сейчас нет на сайте
| cougraAcc, ты ISO вписал (а кодировка файлов в Windows-1251).
______________________________ Я вернулся, и это чудо. ______________________________
Сообщение отредактировал BOOM - Суббота, 01 Января 2011, 19:52 |
|
| |
cougraAcc | Дата: Суббота, 01 Января 2011, 19:53 | Сообщение # 5 |
Яркая личность GD
Сейчас нет на сайте
| BOOM, ну да затупил:) я обычно UTF-8 пишу...
|
|
| |
BOOM | Дата: Суббота, 01 Января 2011, 19:55 | Сообщение # 6 |
I am the creator of ADE
Сейчас нет на сайте
| Ну, пере залей. А так, движочек очень интересный. Факт, пару часов потратил, но он того стоит.
______________________________ Я вернулся, и это чудо. ______________________________
|
|
| |
cougraAcc | Дата: Суббота, 01 Января 2011, 19:57 | Сообщение # 7 |
Яркая личность GD
Сейчас нет на сайте
| BOOM, Ок перезалью, хотел улучшить регистрацию, но людей почему то не точит познавать этот язык
|
|
| |
BOOM | Дата: Суббота, 01 Января 2011, 20:00 | Сообщение # 8 |
I am the creator of ADE
Сейчас нет на сайте
| Один уже есть, кому помог сегодня (я про Liv][). Так что есть, кто хочет, только мало. Только поэтому стоит регу улучшить.
______________________________ Я вернулся, и это чудо. ______________________________
|
|
| |
cougraAcc | Дата: Понедельник, 03 Января 2011, 01:52 | Сообщение # 9 |
Яркая личность GD
Сейчас нет на сайте
| UP Создание админки: файл admin.php в корне каталога Code <?php /* Админка */ include "conf/config.php"; include MODULE_DIR. "/news.php"; $type=new modules; $type->mysql(); $type->admin(); $type->in_admin(); include TPL_DIR. "/admin.tpl"; ?> В папке tpl создаем admin.tpl В файлу news.php добавляем: Code function admin() { define("PATH", "auth"); if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //Присваеваем логину переменную $login, если она пуста уничтожаем её if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} } if (empty($login) or empty($password)) //Проверяем на введенность данных { exit ("Введена не вся информация, вернитесь и исправьте"); } $login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
//удаляем лишние пробелы $login = trim($login); $password = trim($password); $result = mysql_query("SELECT * FROM admin WHERE login='$login'"); //извлекаем из базы все данные о пользователе с введенным логином $myrow = mysql_fetch_array($result); if (empty($myrow['password'])) { //если пользователя с введенным логином не существует exit ("Извините, введённый вами логин или пароль неверный."); } else { //если существует, то сверяем пароли if ($myrow['password']==$password) { //если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел! $_SESSION['admin']=$myrow['login']; $_SESSION['aid']=$myrow['id'];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь echo "Вы авторизованы добро пожаловать"; } }
} function in_admin() { if(isset(($_SESSION['admin'])) { echo "Добро пожаловать в админку {$_SESSION['admin']}"; } else { echo "404"; } } Теперь Возможна авторизация админом... Добавление текстового редактора, статических страниц, аватарок, и профиля ждите в следующей статье.. p.s. хочу спать:)
|
|
| |
VeKToR | Дата: Понедельник, 03 Января 2011, 03:22 | Сообщение # 10 |
был не раз
Сейчас нет на сайте
| Извиняюсь за может быть глупый вопрос,но только начинаю осваивать. А где собсно в коде момент подключения к БД (ткните носом если можно) выборку из базы вижу,а connect нет? По видимому все это происходит в файле config.php ? А хотя вот нашел: Code function mysql() { $link = mysql_connect(DBHOST, DBUSER, DBPASSW) or die(mysql_error()); mysql_select_db(DBNAME, $link) or die(mysql_error()); mysql_query("SET NAMES cp1251"); в файле news.php , этого достаточно ?
http://hellmusic.tk - Melodic Death Metal and more metal music..
Сообщение отредактировал VeKToR - Понедельник, 03 Января 2011, 03:24 |
|
| |
cougraAcc | Дата: Понедельник, 03 Января 2011, 03:24 | Сообщение # 11 |
Яркая личность GD
Сейчас нет на сайте
| VeKToR, да, константами define("DBHOST","localhost"); define("DBUSER","root"); define("DBPASSW",""); define("DBNAME","sitedemo"); вводим данные о бд потом функция: function mysql() { $link = mysql_connect(DBHOST, DBUSER, DBPASSW) or die(mysql_error()); mysql_select_db(DBNAME, $link) or die(mysql_error()); mysql_query("SET NAMES cp1251"); } подключает
|
|
| |
VeKToR | Дата: Понедельник, 03 Января 2011, 03:26 | Сообщение # 12 |
был не раз
Сейчас нет на сайте
| Усвоил вроде,благодарю!
http://hellmusic.tk - Melodic Death Metal and more metal music..
|
|
| |
cougraAcc | Дата: Понедельник, 03 Января 2011, 03:27 | Сообщение # 13 |
Яркая личность GD
Сейчас нет на сайте
| VeKToR, всегда пожалуйста обращайся, в этой ветки буду апргрейды вылаживать так что следи:)
|
|
| |
VeKToR | Дата: Понедельник, 03 Января 2011, 03:31 | Сообщение # 14 |
был не раз
Сейчас нет на сайте
| По поводу # 9 Создание админки Достаточно приведенный код добавить в файлы admin.php и news.php соответственно,больше ничего изменять не следует ?
http://hellmusic.tk - Melodic Death Metal and more metal music..
Сообщение отредактировал VeKToR - Понедельник, 03 Января 2011, 03:32 |
|
| |
cougraAcc | Дата: Понедельник, 03 Января 2011, 03:36 | Сообщение # 15 |
Яркая личность GD
Сейчас нет на сайте
| VeKToR, добавить admin.tpl
|
|
| |
VeKToR | Дата: Понедельник, 03 Января 2011, 03:41 | Сообщение # 16 |
был не раз
Сейчас нет на сайте
| Точно-точно,надо внимательней быть.Добавление админки позволяет тольоко обозначить себя как одмина сайта или дает есче какие-то возможности,в данном случае ?
http://hellmusic.tk - Melodic Death Metal and more metal music..
|
|
| |
cougraAcc | Дата: Понедельник, 03 Января 2011, 03:41 | Сообщение # 17 |
Яркая личность GD
Сейчас нет на сайте
| VeKToR, нет, сейчас пока только отметить область админки
|
|
| |
VeKToR | Дата: Понедельник, 03 Января 2011, 03:50 | Сообщение # 18 |
был не раз
Сейчас нет на сайте
| Если не затруднит,обновите example до example + #9 Буду оч.признателен.
http://hellmusic.tk - Melodic Death Metal and more metal music..
Сообщение отредактировал VeKToR - Понедельник, 03 Января 2011, 03:51 |
|
| |
cougraAcc | Дата: Понедельник, 03 Января 2011, 03:53 | Сообщение # 19 |
Яркая личность GD
Сейчас нет на сайте
| хорошо:)) Добавлено (03.01.2011, 03:52) --------------------------------------------- сек Добавлено (03.01.2011, 03:53) ---------------------------------------------
|
|
| |
VeKToR | Дата: Понедельник, 03 Января 2011, 03:55 | Сообщение # 20 |
был не раз
Сейчас нет на сайте
| Забрал,благодарствую.
http://hellmusic.tk - Melodic Death Metal and more metal music..
Сообщение отредактировал VeKToR - Понедельник, 03 Января 2011, 04:03 |
|
| |
|