Как создать страницу пользователя после основного домена (например, instagram.com/user_page/) при регистрации
У меня есть сайт на php, где у каждого пользователя есть свой файл user1.php - это его страница, которая доступна по ссылке https://основной_домен.com/user1 (без хвостов). Это реализована ключами в index.php.
<?php
....
switch($m) {
case "home": default:
include("modules/home.php"); //домашняя страница
include("tpl/footer.php");
break;
case "user1":
include("modules/user1.php"); //страница user1
include("tpl/footer.php");
break;
case "user2":
include("modules/user2.php"); //страница user2
include("tpl/footer.php");
break;
}
?>
Также, есть запись в файле .htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^home?$ index.php?m=home [L]
RewriteRule ^user1?$ index.php?m=user1 [L]
RewriteRule ^user2?$ index.php?m=user2 [L]
ErrorDocument 404 /page404
</IfModule>
ВОПРОС: Как сделать так, чтобы при регистрации юзера, автоматом создавались файлы user3.php и сделать соответствующие записи в файлы index.php и .htaccess.? Может это делается вовсе не так, но я исхожу из того что у меня есть, но это делается в ручную... Спасибо.
Ответы (2 шт):
Если страницы пользователей, в плане интерфейса,у всех одинаковые, то нужно сделать просто 1 файл для всех user.php и для каждого отдельного юзера выводить эту же самую страницу но со своими данными, чтоб получить данные нужно просто при переходе на страницу id юзера передавать, на пример https://основной_домен.com/user?id=1, затем этот id из в данном случае get'а достается и с помощью него из бд собираются данные для вывода
Обычно это делается так.
В .htacess оставляется только одно правило.
RewriteRule ^(.*)?$ index.php?m=$1 [L]
Тут используется регулярное выржаение (regexp) ".*", под которое попадают любые символы. Из-за того что это выражение взято в скобки, то его результат сохраняется в переменной $1 - которую можно использовать в данном правиле. И она используется для передачи данных в параметр m.
По сути это правило заменяет те три правила, которые у вас есть. А так же заменяет то множество правил, которые вы хотели добавить.
Т.е. любой запрос вида site.com/abcd будет преобрасован в /index.php?m=abcd
Дальше уже в вашем коде, вы можете обрабатывать полученный параметр. Если у вас все завязано на файлы, то код может быть примерно таким
if(isset($_GET['m'])) {
$m = $_GET['m'];
} else {
$m = 'home'; //если параметр не указан, то по умолчанию это home
}
$filename = 'modules/' . $m . '.php'; //формируем имя файла
//если такое файл есть, то подключаем его.
if (file_exists($filename)) {
include($filename);
} else {
//здесь можно либо выводить ошибку, либо подключить home как файл по умолчанию
}
include('tpl/footer.php');
Насчет кода не уверен, что он без ошибок. Но думаю основную идею передает. И это общая идея. А вообще тут есть несколько важных моментов. Например, надо проверять параметр $m чтобы в нем не передали что-то некорректное. Надо, обдумать тот вопрос насколько целесообразно использовать файлы, а не перейти например на базу данных. И т.д. и т.п.