Оценить:
 Рейтинг: 0

PHP. Разработка модуля комментариев для сайта

Год написания книги
2021
Теги
<< 1 ... 9 10 11 12 13 14 15 16 17 ... 78 >>
На страницу:
13 из 78
Настройки чтения
Размер шрифта
Высота строк
Поля

error_reporting(E_ALL);

if (session_id() == '') {

session_start();

}

/* Проверяем наличие базы данных и наличие в ней админа */

try {

$dsn = new PDO('mysql:host=localhost;dbname=beseder', 'root', '');

$dsn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$dsn->exec('SET NAMES "utf8"');

} catch (PDOException $e) {

/* Мы здесь т.к. базы нет поэтому Создаем базу */

include_once $_SERVER['DOCUMENT_ROOT'] . '/chat/admin/createbase.php';

}

/* Создаем админа */

/* Проверяем передавались ли данные формы на установку админа */

/* Если ДА создаем админа */

if (isset($_POST['action']) and $_POST['action'] == 'start') {

include_once $_SERVER['DOCUMENT_ROOT'] . '/chat/admin/users/createadmin.php';

header('Location:.'); //перегружаемся чтобы убрать $_POST['action']

exit('контроллер 1 очистите кэш');

}

/* проверяем счетчик записей в таблице users */

/* если записи есть выходим, если нет вставляем форму создания админа */

try {

$count = $dsn->query("SELECT count(1) FROM users")->fetchColumn();

if ($count <= 0) {

include_once $_SERVER['DOCUMENT_ROOT']. '/chat/admin/users/form_create_admin.php';

exit('controller 1: Нет админа ');

}

} catch (PDOException $e) {

exit('Ошибка на первом входе в админку controller 1');

}

Здесь основная идея состоит в том, чтобы создавать БД на выбросе исключений в блок «catch» и последующей проверке наличия администратора при помощи счетчика записей.

Логика работы контроллера 1 следующая.

1.Запускаем сессию.

2. Пробуем подключиться к БД «beseder».

Внимание!

Не забываем ввести корректные данные строки подключения

$dsn = new PDO('mysql:host=localhost;dbname=beseder', 'root', '');

если они отличаются от установленных по умолчанию.

3. Если БД нет, получаем ошибку и создаем БД в блоке обработки исключений catch при помощи файла createbase.php

4. На этом шаге БД или уже была или только что была создана.

5. Проверяем, передавались ли данные из формы form_create_admin.php

на создание администратора, если передавались, обрабатываем их файлом createadmin.php и создаем запись данных администратора в БД.

6. Проверяем счетчик записей в таблице «users», если счетчик записей больше 1, т.е. в есть пользователи, то выходим. Контроллер выполнил работу. Есть БД и есть админ.

7. Если записи в БД отсутствуют вставляем форму для ввода данных администратора.

form_create_admin.php

заполняем значения и отправляем. Свойство «action» этой формы пустое, поэтому произойдет перезагрузка страницы и контроллер повторит свою работу, но теперь уже точно сработает п.5. и соответственно п.6. Контроллер выполнил работу. Есть БД и есть админ.

Важно! При наличии $_POST['action'] == 'start' контроллер 1 будет каждый раз создавать в таблице «users» дубликаты администратора при перезагрузке страницы, а соответственно появятся ошибки и сайт станет недоступен. Поэтому в последней строке листинга 5. createadmin.php мы обнуляем данные $_POST['action']= ''; и перезагружаем страницу в контроллере header('Location:.');exit();.

Проверяем работу контроллера. Вставляем в файл index.html т.е. главную страницу сайта «news» код:
<< 1 ... 9 10 11 12 13 14 15 16 17 ... 78 >>
На страницу:
13 из 78