Перенаправление веб-адреса PHP

#php #mysql #database #redirect

#php #mysql #База данных #перенаправление

Вопрос:

В настоящее время я работаю над сайтом социальной сети, и я хотел бы, чтобы пользователь мог вводить веб-адрес другого пользователя и перенаправляться на его профиль. Дело в том, что у каждого существующего пользователя есть столбец в базе данных MySQL, в котором указывается, какие шаблоны страниц он использует, и данные, которые нужно вводить в этот шаблон. Как я могу сделать так, чтобы при вводе примера: http://www.emuze.co/users/@bob_marly (после него может быть указан суффикс .PHP / .HTML), веб-сайт запросит базу данных, найдет шаблон, перенаправит на эту страницу шаблонов (например http://www.emuze.co/temps/temp1.0.php ) и использовать пользователей, которые a из базы данных MySQL? Я знаю, что это очень длинный и сложный вопрос, но я был бы очень признателен за любую помощь! большое спасибо! :@

Комментарии:

1. Есть ли какая-либо причина, по которой вы не просто перенаправляете на целевой сайт? Я имею в виду, по-настоящему. Вместо того, чтобы обрабатывать перенаправление внутри, показывая что-то другое, чем вы должны отображать, просто перенаправьте пользователя на целевую страницу. Для этого вы можете использовать либо заголовок HTTP Location, либо мета-тег. (Если это не имеет смысла, возможно, я вообще не понял ваш вопрос.)

2. Я не уверен, означает ли «работа над сайтом социальной сети» его написание или использование существующего. Если это сервер, который вы контролируете, ответ заключается в использовании Ajax, связываясь с внутренним процессом, который запрашивает базу данных. Если нет, то вы не сможете этого сделать, если это не будет предоставлено сервером.

3. нет, я делаю свой собственный с нуля

Ответ №1:

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

Например, у вас будет таблица «шаблоны» со столбцами «Идентификатор пользователя», «Имя пользователя» и «Шаблон». Тогда таблица будет выглядеть примерно так:

  -------- ---------- ---------- 
| UserID | Username | Template |
 -------- ---------- ---------- 
|      1 | John     | temp1.0  |
|      2 | Paul     | temp1.1  |
|      3 | Eric     | temp1.0  |
|      4 | Frank    | temp1.2  |
 -------- ---------- ---------- 
 

…и софорт.

Затем вам нужно будет запросить, какой шаблон есть у пользователя. Например, чтобы узнать, какой шаблон использует пользователь с идентификатором пользователя ‘3’, предполагая, что ваш ресурс подключения к mysql хранится в переменной $link:

 $query = "SELECT * FROM templates WHERE UserID=3";
$result = $link->query($query);
$row = $result->fetch_assoc();
 

$row [‘Template’] приведет к ‘temp1.0’, который вы могли бы использовать для включения определенной таблицы стилей CSS, включая конкретные PHP-файлы или что-то еще, но вы также можете получить всю другую пользовательскую информацию, такую как $row [‘Username’]. Нет необходимости в перенаправлениях.

Комментарии:

1. но то, что я хотел сделать, похоже на то, что вы только что написали, но я хочу сделать так, чтобы случайный ГОСТЬ мог перейти по URL-адресу пользователя, а затем автоматически запросить базу данных и найти информацию и шаблон пользователя, хотя такая страница на самом деле не существует (страницас именем пользователя не существует, есть только скрипт для превращения адреса в переменную и использования его для запроса к базе данных, а затем выполнения некоторых действий с использованием данных из базы данных). Это вообще возможно? если нет, как вы рекомендуете это делать?

2. Может быть, вы ищете перезапись URL-адреса .htaccess (mod_rewrite), чтобы извлечь переменную $ _GET из «статического» URL-адреса? Таким образом, вы можете использовать www.emuze.co/temp.php?user=bob_marly как будто это где -то www.emuze.co/users/@bob_marly , затем запрашивает с помощью переменной $_GET[‘user’] workingwith.me.uk/articles/scripting/mod_rewrite

Ответ №2:

Если я правильно понял ваш вопрос, вы имеете в виду это:

Итак, пользователь A хочет видеть сайт от пользователя B. Пользователь A имеет шаблон T_A, пользователь B имеет шаблон T_B. Пользователь A переходит к www.emuze.co/users/B и просматривает его с помощью шаблона T_A.

Если это правильно, сделайте это следующим образом: считайте данные от пользователя B из базы данных. Загрузите профиль пользователя watchings, проверьте, какой шаблон он использует, а затем отобразите сайт, используя шаблон (в этом приведении T_A) и данные пользователя (B).

Очень простой пример:

пользовательская база данных:

 |Name  | Information       | Template
_______________________________________
|A     |I'm user A         | T_A
|B     |I'm user B         | T_B
 

Шаблоны:
T_A:

    "Hey, I am %NAME%, Some Infos about me: %INFORMATION%"
 

T_B:

    "Name: $NAME", Information: %INFORMATION"
 

Пользователь A хочет посмотреть на пользователя B:

 Get user B's values from db
Get user A's Template
replace `%NAME%` and `%INFORMATION%`
print it
 

Обновить:

Я думаю, что вам нужен некоторый mod_rewrite (в Apache, в IIS используются правила перезаписи), которые отображают http://example.com/users/bob_marley чтобы http://example.com/users/index.php?user=bob_marley . Используя это, вы всегда попадаете на этот сайт и можете делать там что угодно.

Вы не должны использовать реальный существующий файл для каждого пользователя, но тот, который получает параметры, подобные этому. И вы должны использовать систему шаблонов, чтобы вы могли повторять templete везде, не перенаправляя пользователей.

Комментарии:

1. но то, что я хотел сделать, похоже на то, что вы только что написали, но я хочу сделать так, чтобы случайный ГОСТЬ мог перейти по URL-адресу пользователя, а затем автоматически запросить базу данных и найти информацию и шаблон пользователя, хотя такая страница на самом деле не существует (страницас именем пользователя не существует, есть только скрипт для превращения адреса в переменную и использования его для запроса к базе данных, а затем выполнения некоторых действий с использованием данных из базы данных). Это вообще возможно? если нет, как вы рекомендуете это делать?