Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Полное описание файлов






config.php:

Конфигурационный файл, к которому обращаются почти все остальные файлы. Содержит значение глобальных переменных, функции обработки данных, значения для статичных элементов, а также соединение с базой данных.

Переменные:

Тип Переменная Описание
Глобальные murl Адрес сайта с протоколом
qurl Основной домен
Локальные $murl Аналог глобальной
$qurl Аналог глобальной
$top_button Кнопки меню, формат ссылка
$link Соединение с базой

Функции:

Имя Параметры Описание
check_Access   Функция вызывается без входных параметров, но использует данные полученные через COOKIE запрос из браузер пользователя Получает идентификатор 'uid' и пароль 'hash' в зашифрованном виде из COOKIE браузера. Проверяет есть у нас пользователь с таким идентификатором
shop_owner   Функция вызывается без входных параметров, но использует данные полученные через GET запрос из адресной строки Имея данные функции check_Access, получаем идентификатор магазина и проверяем есть ли у пользователя доступ к этому магазину
LeftRight   $records – количество записей $r_start – начальная точка вывода $URL – адрес страницы $inpage – текущая страница $posfix – постфикс, подставляемый после адреса и дополняемый порядковым номером страницы Функция постраничного вывода

 

 

index.php:

index.php - это тот файл, к которому идет обращение пользователя, при входе на сайт. Дальше, выводя возможные варианты, пользователь выбирает куда перейти. Работает это так:

 

Пытаемся получить данные GET-запросом:

$a = isset($_GET['a'])? strip_tags($_GET['a']): " index";

 

Если значение есть у переменной $a, идем в кейсы соответствующие значению переменной:

 

Кейс error: обработка ошибки, в случае некорректного значения переменной.

case " error":

header(" HTTP/1.0 404 Not Found");

$content = " < b> Нет такой страницы.< /b> ";

break;

Кейс index: основной кейс, сюда мы попадаем, если не получили значение переменной. Просто выводим приветствие и описание

case " index":

$content = " Создвайте собственные интернет-магазины в несколько кликов! < br> Начните свой бизнес с нажатия на кнопку \" Создать\" или посмотрите примеры.< br> Если вы уже зарегистрированы войдите, используя вашу почту и пароль, для редактирования вашего магазина";

break;

 

Кейс add: кейс, вызывает, если значение переменной add. В кейсе происходит вызов файла для добавления данных add.php, в котором содержится форма для ввода данных.

В самом кейсе идет прием данных, с помощью POST-запроса и обработка их.

Из формы мы получаем такие данные, как: название магазина, почта, пароль, адрес и код капчи.

Капча – код, который пользователь ввел с картинки, при заполнении формы. Используется для защиты от автоматических регистраций. Войдя на сайт пользователь открывает сессия, на основе которой сгенерирована картинка

Получаем и проверяем ее

if(isset($_SESSION['captcha_keystring']) & & $_SESSION['captcha_keystring'] == $_POST['keystring'])

 

Если все ок, начинаем проверять введенные данные.

Для начала, на пустоту. Вообще в полях используется параметр required, но он срабатывает не во всех браузерах, поэтому дополнительная проверка не помешает, если мы не хотим пустышек.

if(! empty($_POST['mag_title']) & &! empty($_POST['mag_address']) & &! empty($_POST['usr_pswd']))

 

Если все поля заполнены, проверим, корректно ли они заполнены и не хотят ли нас взломать.

Проверка корректности адреса почты и выведем ошибку, в случае некорректного заполнения.

 

if(! preg_match(" |^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2, 6}$|i", $_POST['usr_mail']))

{

$content = $_POST['usr_mail']. " - Не правильный email";

break;

}

 

Проверим также остальные поля и запишем в соответствующие переменные проверенные значения.

$usr_mail = $_POST['usr_mail'];

$mag_title=mysql_real_escape_string(strip_tags($_POST[" mag_title" ]);

$mag_address=mysql_real_escape_string(strip_tags($_POST[" mag_address" ]));

Пароль введенный пользователем, мы обрабаываем спомощью специальной функции crypt() языка PHP, crypt() возвращает хэшированную строку, полученную с помощью стандартного алгоритма UNIX, основанного на DES, или другого алгоритма, имеющегося в системе, но одно хеша недостаточно. Поэтому примешиваем к нему так называемую «соль», в моем случае это «miit_upo». Некоторые операционные системы поддерживают несколько алгоритмов хэширования. Иногда стандартный алгоритм, основанный на DES, заменяется алгоритмом на основе MD5. Вид хэширования определяется переданным аргументом salt (соль). До версии PHP 5.3, PHP определял доступные алгоритмы шифрования во время инсталляции, базируясь на системной функции crypt(). Если соль не указана, будет автоматически сгенерирована стандартная случайная двухсимвольная (DES) либо двенадцатисимвольная (MD5) соль, в зависимости от доступности алгоритма MD5 в crypt(). Предопределенная константа CRYPT_SALT_LENGTH позволяет определить максимально доступную длину соли в соответствии с используемыми алгоритмами.

$usr_pswd = crypt($_POST[" usr_pswd" ], " miit_upo");

 

Также проверим, нет ли в базе магазина с таким же адресом. Два магазина на одном поддомене находиться не могут, в противном случае выведем ошибку.

if(mysql_num_rows(mysql_query(" SELECT * FROM `shop` WHERE `shop_domain` = '$mag_address'"))> 0)

{

$header = " Такой домен уже занят! ";

break;

}

 

если такой домен свободен, сформируем запрос в таблицу пользователей.

$query = " INSERT INTO `users` (`id`,

`email`,

`password`)

 

VALUE

 

('0',

'$usr_mail',

'$usr_pswd')";

 

Если запрос не прошел, выведем ошибку

if(! mysql_query($query))

{

$content = " Ошибка при добавлении пользователя mysql_query";

break;

}

Получив идентификатор пользователя

$user_id = mysql_insert_id();

сформируем запрос в таблицу магазинов, на добавление.

 

$query = " INSERT INTO `shop` (`id`,

`shop_domain`,

`shop_name`,

`shop_info`)

 

VALUE

('0', '$mag_address',

'$mag_title',

'Новый магазин')";

 

 

Если запрос не прошел, выведем ошибку

 

if(! mysql_query($query))

{

$header = " Ошибка добавления магазина";

}

Если все прошло успешно, получим идентификатор только что созданного магазина

$shop_id = mysql_insert_id();

 

Далее создадим связь ПОЛЬЗОВАТЕЛЬ – МАГАЗИН, в таблице connect

mysql_query(" INSERT INTO `connect` (`id`, `user_id`, `shop_id`) VALUE ('0', '$user_id', '$shop_id')");

 

Пользователь и магазин созданы и привязаны друг к другу

Выдадим пользователю куки, функцией setcookie, которая описана ниже.

setcookie(" uid", $user_id, time()+3600*24*365, " /", " *.".qurl);

setcookie(" hash", hash($usr_pswd), time()+3600*24*365, " /", " *.".qurl);

 

и отправим в личный кабинет, функицей header() и die()

header(" Location: ".murl." /admin/");

die(" Location: ".murl." /admin/");

 

setcookie() задает cookie, которое будет передано клиенту вместе с другими HTTP заголовками. Как и любой другой заголовок, cookie должны передаваться до того как будут выведены какие-либо другие данные скрипта (это ограничение протокола). Это значит, что в скрипте вызовы этой функции должны располагаться прежде остального вывода, включая вывод тэгов < html> и < head>, а также пустые строки и пробелы.

 

После передачи клиенту cookie станут доступны через массивы $_COOKIE и $HTTP_COOKIE_VARS при следующей загрузке страницы. Следует иметь в виду, что суперглобальные переменные, такие как $_COOKIE, стали доступны только в PHP 4.1.0. Значения cookie также есть в $_REQUEST.

 

Функция header —Отправляет необработанные HTTP-заголовки.

Далее сбросим капчу

unset($_SESSION['captcha_keystring']);

 

кейс admin: кейс вывода личного кабинет, но по сути, он лишь вызывает список магазинов пользователя, который формируется в файле shop_list.php.

Если ввести вручную путь к личному кабинету, но при это не имея прав на этот магазин, обнуляются куки

setcookie(" uid", " ", time()-3600*24*365, " /", " *.".qurl);

setcookie(" hash", " ", time()-3600*24*365, " /", " *.".qurl);

 

переносят вошедшего на главную страницу

header(" Location: ".murl);

die(" Location: ".murl);

 

кейс auth: кейс авторизации зарегистрированных пользователей. Проверим, есть у пользователя куки и есть ли у нас пользователь с такими куками, функцией checkAccess(), описанной в config.php. Если есть, не просим вводить почту и пароль, сразу перебрасываем в личный кабинет

 

if(checkAccess())

{

header(" Location: ".murl." /admin");

die(" Location: ".murl." /admin");

}

Если нет, выводим форму авторизации auth.php. После ввода данных пользователем(почта и пароль), проверим их

 

$usr_mail = $_POST['usr_mail'];

$usr_pswd = crypt(strip_tags($_POST[" usr_pswd" ]), " miit_upo");

 

Сформируем запрос в базу, есть ли у нас такой пользователь

$query = mysql_query(" SElECT * FROM `users` WHERE `email` = '$usr_mail' AND `password` = '$usr_pswd'");

 

Если есть, выдадим ему куки

setcookie(" uid", $user_id, time()+3600*24*365, " /", ".".qurl); setcookie(" hash", $usr_pswd, time()+3600*24*365, " /", ".".qurl);

 

и отправим в личный кабинет

header(" Location: ".murl." /admin");

die(" Location: ".murl." /admin");

Если не нашли, выдадим ошибку

$content = " Ошибка авторизации";

 

 

кейс examples:

Вывод ранее заготовленных примеров

$header = " Примеры созданных интернет-магазинов, с помощью нашего коструктора";

$content.= " < p> < img src='".$murl." /template/resize.php? img_src=examples/1.jpg& w=300& h300'> ";

$content.= " < img src='".$murl." /template/resize.php? img_src=examples/2.jpg& w=300& h300'> < /p> ";

$content.= " < img src='".$murl." /template/resize.php? img_src=examples/3.jpg& w=300& h300'> ";

$content.= " < img src='".$murl." /template/resize.php? img_src=examples/4.jpg& w=300& h300'> ";

После определения с тем, что выводить, подключаем шаблон, который используя наши данные выводит их в дружелюбном пользователю виде.

include " template/index.php";

Далее подробно о шаблоне

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.028 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал