Воскресенье, 17 Ноября 2024, 13:57

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Создание сайта
cougraAccДата: Суббота, 01 Января 2011, 19:36 | Сообщение # 1
Яркая личность GD
Сейчас нет на сайте
Сборник уроков по созданию сайта от ExL1fer

Браузерная игра тот же сайт просто немного необычный, все что написано ниже... это облегченный код, поэтому дилетанты php не наезжайте что я "нуб" и т.д. Все что написано ниже попытка упростить создание сайта... Возможны ошибки, т .к. с процедурным работал давненько....
И так:) начнем с файла index.php
Для начала открываем сессию т.к. у нас авторизация будет на сессии....

Code
session_start();

Далее подключаем файл конфигурации и мини ядро:)
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 smile
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
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг