Я делаю сайт, который должен иметь систему профилей.
В настоящее время у меня есть настройки, поэтому вы идете /profile/namehere
и профиль будет отображаться с информацией динамически, НО конечно вы должны вручную скопировать, вставить эти профили и изменить имя, чтобы они работали.
Я хочу, чтобы при отправке формы в этом случае вы вводили имя и нажимали кнопку отправки, они добавлялись в базу данных, которую я сам сделал, и автоматически создавался профиль.
Я немного исследовал это и придумал тот факт, что мне нужно сделать контроллер или шаблон профиля, который будет вызывать информацию, но я уже вроде как сделал это, просто я не уверен и не могу найти какую-либо документацию онлайн о том, как сделать это конкретно с /profile/namehere/
Любая помощь будет чрезвычайно признательна или примеры кода, большое спасибо!
База данных, которую я использую, — MYSQL, хотя я буду мигрировать в PDO, когда доберусь до нее, но профили на данный момент могут быть в MYSQL. мой текущий код страницы выглядит примерно так:
Заголовок и метатеги отображаются через конфигурационный файл / api.
Содержание страницы отражается для вещей, выбранных из базы данных, которую я использую $row['var'];
с select
заявление для доступа к базе данных.
В этом текущем состоянии профиль копируется и вставляется с именем, измененным на имя пользователя, и этот профиль готов. Я хочу, чтобы при отправке формы для создания имени пользователя автоматически создавался профиль, к которому можно получить доступ по адресу /profile/namehere/
а не ручное создание.
По существу,
— Форма отправлена
— посещения пользователя / профиль / имя
— Шаблон извлекается и информация вызывается из базы данных динамически.
*
Ваш вопрос немного широк. Поэтому я отвечу настолько, насколько смогу.
Чтобы получить доступ к /profile/user
, вы должны использовать переписывание URL. Вы должны включить mod_rewrite
Apache (если это ваш веб-сервер). Затем вы должны определить правила в .htaccess
файл.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^profile/(\w+)$ profile.php?user=$1
</IfModule>
Итак, просматривая http://host/profile/namehere
буду использовать profile.php
а также $_GET['user']
будет определяться с "namehere"
,
Отображать информацию в profile/namehere
страница (profile.php
непроверенные):
<?php
if (!isset($_GET['user']))
{
// Error: Fall in error 404, or display error, or ...
header("HTTP/1.1 404 Not Found");
exit(0);
}
$username = $_GET['user'];
// connect database using PDO
$pdo = new PDO('mysql:dbname=DBNAME;host=localhost' , 'DBUSER', 'DBPASS') ;
$sth = $pdo->prepare("select * from profile_table where username=:username") ;
if (!$sth) { /* Error */ die ; }
$sth->execute([':username' => $username]) ;
$result = $sth->fetch(PDO::FETCH_OBJ) ;
if (!$result) { /* Error */ die ; }
// display informations using template
header("Content-Type: text/html; charset=utf-8") ;
include("template.php") ;
exit();
Пример шаблона:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title><?php echo $result->name ?></title>
</head>
<body>
<p><?php echo $result->info1 ?></p>
<p><?php echo $result->info2 ?></p>
<p><?php echo $result->info3 ?></p>
</body>
</html>
Других решений пока нет …