1. Главная / Блог / PHP+MySQL / Настройка базы данных

Настройка базы данных


Нет комментариев.


И так, виртуальный сервер запущен, на нём есть доступ к вымышленному сайту, пустая база данных создана.


В пустой корневой папке сайта, создайте папку install. В ней мы создадим небольшой скрипт, который сделает подключение к базе данных, если оно будет успешным, то создадим таблицы для регистрации пользователей, хранение контента и т.д. Добавим Вас как пользователя с правами Администратора и запишем файлы в корневую папку которые будут содержать данные – один с параметрами для подключения к БД, а другой с конфигурацией сайта.

В этой папке создадим файл index.html с следующим содержанием.

<?php header('Content-type: text/html; charset=utf-8')?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
</head>
<body>
<h1>Подключение к БД</h1>
<h2>Сайт</h2>
<form action="connect.php" method="post">
<p>
<input type="text" name="url" placeholder="url сайта">
</p>
<p>
<input type="text" name="year" placeholder="год создания">
</p>
<h2>БД</h2>
<p>
<input type="text" name="server" placeholder="Сервер">
</p>
<p>
<input type="text" name="name" placeholder="имя базы">
</p>
<p>
<input type="text" name="login" placeholder="логин">
</p>
<p>
<input type="text" name="password" placeholder="пароль">
</p>
<h2>Администратор</h2>
<p>
<input type="text" name="log" placeholder="логин">
</p>
<p>
<input type="text" name="pass" placeholder="пароль">
</p>
<p>
<input type="text" name="email" placeholder="почта">
</p>
<p>
<input type="checkbox" name="tabl" checked> Создать таблицы
</p>
<button type="submit">Готово</button>
</form>
</body>
</html>

Это обычная html - страница, так как мы её будем использовать один раз, я не стал заморачиваться с дизайном.

На ней расположен элемент <form> который собирает необходимые данные.

url сайта - надо ввести полный адрес сайта с http:// или https://.

год создания - будет отображаться в футере, например 2020-2024.

Сервер - адрес сервера. Обычно MySQL находится на том же сервере что и сайт, тогда можно прописать localhost.

имя базы, логин, пароль - данные для доступа к БД.

логин, пароль, почта - данные администратора.

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

Создадим файл connect.php с следующим содержанием.

<?php
// Подключение к БД
$connection = @mysqli_connect($_POST['server'], $_POST['login'], $_POST['password'], $_POST['name']);
mysqli_set_charset ( $connection , "utf8" );

if (!$connection) {
$text ="no_mysql";
exit();
}else{
//записываем файл доступа к БД
$text = "<?php
if(!defined(\$config['unicod'])){ die('attemp hacking');}
\$dbsettings = Array(
'server' => '".$_POST['server']."',
'user' => '".$_POST['login']."',
'pass' => '".$_POST['password']."',
'name' => '".$_POST['name']."');
?>
";

$filename ="../db.php";

file_put_contents($filename, $text);

//записываем файл для сайта
$text = "<?php
if(!defined(\$config['unicod'])){ die('attemp hacking');}
\$conf = Array(
'url' => '".$_POST['url']."',
'year' => '".$_POST['year']."',
'no_user_comment' => 'yes');
?>
";

$filename = "../config.php";

file_put_contents($filename, $text);

if(@$_POST['tabl']) {
//создаём таблицы
$Table = "CREATE TABLE `Users` ( ";
$Table .= " `id` int(9) NOT NULL auto_increment,";
$Table .= " `Login` text NOT NULL,";
$Table .= " `Password` text NOT NULL,";
$Table .= " `Email` text NOT NULL,";
$Table .= " `Rang` text NOT NULL,";
$Table .= " `UniId` text NOT NULL,";
$Table .= "PRIMARY KEY (`id`) ";
$Table .= ") ENGINE=MyISAM CHARSET=utf8 ;";

mysqli_query($connection,$Table) or die("MySQL Error: ".mysql_error()."");

$Table = "CREATE TABLE `Content` ( ";
$Table .= " `id` int(9) NOT NULL auto_increment,";
$Table .= " `Name` text NOT NULL,";
$Table .= " `Date` int(12) NOT NULL,";
$Table .= " `Url` text NOT NULL,";
$Table .= " `Announcement` text NOT NULL,";
$Table .= " `Impressions` int(9) NOT NULL,";
$Table .= " `Comment` text NOT NULL,";
$Table .= " `Image` text NOT NULL,";
$Table .= " `Title` text NOT NULL,";
$Table .= " `H1` text NOT NULL,";
$Table .= " `Description` text NOT NULL,";
$Table .= " `Login` text NOT NULL,";
$Table .= " `Text` text NOT NULL,";
$Table .= "PRIMARY KEY (`id`) ";
$Table .= ") ENGINE=MyISAM CHARSET=utf8 ;";

mysqli_query($connection,$Table) or die("MySQL Error: ".mysql_error()."");

$Table = "CREATE TABLE `Comments` ( ";
$Table .= " `id` int(9) NOT NULL auto_increment,";
$Table .= " `Url` text NOT NULL,";
$Table .= " `Name` text NOT NULL,";
$Table .= " `Text` text NOT NULL,";
$Table .= " `Date` int(12) NOT NULL,";
$Table .= " `Estimation` int(6) NOT NULL,";
$Table .= " `Login` text NOT NULL,";
$Table .= "PRIMARY KEY (`id`) ";
$Table .= ") ENGINE=MyISAM CHARSET=utf8 ;";

mysqli_query($connection,$Table) or die("MySQL Error: ".mysql_error()."");

$Table = "CREATE TABLE `Rang` ( ";
$Table .= " `id` int(9) NOT NULL auto_increment,";
$Table .= " `tag` text NOT NULL,";
$Table .= " `name` text NOT NULL,";
$Table .= " `add_comment` text NOT NULL,";
$Table .= " `add_comment_moderator` text NOT NULL,";
$Table .= " `moderator_comment` text NOT NULL,";
$Table .= " `add_content` text NOT NULL,";
$Table .= " `add_content_moderator` text NOT NULL,";
$Table .= " `moderator_content` text NOT NULL,";
$Table .= "PRIMARY KEY (`id`) ";
$Table .= ") ENGINE=MyISAM CHARSET=utf8 ;";

mysqli_query($connection,$Table) or die("MySQL Error: ".mysql_error()."");

//подключаем файл с функцией генерации случайной строки
include "../function.php";

//добавляем администратора
$Table = "INSERT INTO Users SET";
$Table .= " Login='".\$_POST['log']."',";
$Table .= " Password='".md5($_POST['pass'])."',";
$Table .= " Email='".\$_POST['email']."',";
$Table .= " UniId='".generateCode(6)."',";
$Table .= " Rang='Administrator'";

mysqli_query($connection,$Table) or die("MySQL Error: ".mysql_error()."");

//Добавляем ранг Administrator
$Table = "INSERT INTO Rang SET";
$Table .= " tag='Administrator',";
$Table .= " name='Админ',";
$Table .= " add_comment='yes',";
$Table .= " add_comment_moderator='no',";
$Table .= " moderator_comment='yes',";
$Table .= " add_content='yes',";
$Table .= " add_content_moderator='no',";
$Table .= " moderator_content='yes'";

mysqli_query($connection,$Table) or die("MySQL Error: ".mysql_error()."");

//Добавляем ранг зарегистрированного пользователя
$Table = "INSERT INTO Rang SET";
$Table .= " tag='User',";
$Table .= " name='Пользователь',";
$Table .= " add_comment='yes',";
$Table .= " add_comment_moderator='no',";
$Table .= " moderator_comment='no',";
$Table .= " add_content='no',";
$Table .= " add_content_moderator='no',";
$Table .= " moderator_content='no'";

mysqli_query($connection,$Table) or die("MySQL Error: ".mysql_error()."");

}

$text="OK!";

} echo $text; exit();
?>

С начала мы подключаемся к базе данных с помощью полученных данных из <form>.

При успешном подключении записываем файлы, в корневую папку сайта, db.php - содержит информацию БД, config.php - информация сайта.

Если флажок на создание таблиц не снят, то создаём их.

Таблицы

Users

Зарегистрированные пользователи

Login - логин пользователя.

Password - пароль.

Email - электронная почта.

Rang - ранг пользователя, для ограниченого доступа к функциям сайта.

UniId - уникальный индефикатор для куков и сессий.

Content

Здесь будет храниться контент сайта.

Name - название страницы.

Date - дата создания.

Url - местонахождение страницы.

Announcement - анонс в новостной ленте.

Impressions - кол-во просмотров.

Image - url картинки для анонса и главного изображения на странице.

Title - Title для поисковиков.

H1 - заголовок контента.

Description - Description для поисковиков.

Login - автор контента.

Text - содержание контента.

Comments

Комментарии к контенту.

Url - страница к которой принадлежит комментарий.

Date - дата создания.

Name - название страницы.

Estimation - оценка пользователем.

Login - автор комментария.

Text - содержание комментария.

Rang

Уровни доступа для различных пользователей, которые предоставляют или запрещают различные функции сайта.

tag - тег ранга.

name - названия ранга.

add_comment - возможность добавить комментарий.

add_comment_moderator - возможность добавить комментарий, но он будет проходить модерацию.

moderator_comment - возможность редактировать и удалять чужие комментарии.

add_content - возможность добавить контент.

add_content_moderator - возможность добавить контент, но он будет проходить модерацию.

moderator_content - возможность редактировать и удалять чужой контент.

Дальше подключается файл function.php который пока ещё не создан. В нём будет функция генерации случайной строки.

Теперь добавляем запись с вашими данными в статусе администратора.

UniId='".generateCode(6)."' - здесь генерируется строка из 6 случайных символов для уникального идентификатора.

Теперь добавляем ранги Administrator и User значение YES и NO означают какие функции сайта доступны. В дальнейшем их можно будет изменять.

Осталось создать файл function.php в корне сайта и записать туда код.

<?php
// Функция для генерации случайной строки
function generateCode($length) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ0123456789";
$code = ""; $clen = strlen($chars) - 1;
while (strlen($code) < $length) {
$code .= $chars[mt_rand(0,$clen)];
}
return $code;}
?>

Теперь осталось запустить скрипт и ввести все данные. Если всё сделано правильно, будет сообщение OK! и тогда можно удалить папку install.



Нет комментариев.


Оставить комментарий

Ваше имя:

Оценка