【问题标题】:Web address PHP redirect网址 PHP 重定向
【发布时间】:2011-10-24 12:08:19
【问题描述】:

我目前正在开发一个社交网站,我希望用户能够输入另一个用户的网址并被重定向到他的个人资料。问题是,每个现有用户在 mySQL 数据库中都有一个列,该列指定他使用哪些页面模板,以及要输入到该模板中的数据。我怎样才能做到这一点,以便当他输入示例:http://www.emuze.co/users/@bob_marly(它后面可以有 .PHP/.HTML 后缀)时,网站将查询数据库,找到模板,重定向到该模板页面(例如http://www.emuze.co/temps/temp1.0.php) 并使用来自 mySQL 数据库的用户? 我知道这是一个非常漫长而复杂的问题,但我真的很感激任何帮助! 多谢! :@

【问题讨论】:

  • 有什么理由不直接重定向到目标站点吗?说真的,我的意思是。而不是通过显示其他内容而不是在内部处理重定向,只需将用户转发到目标页面。您可以为此使用 HTTP Location 标头或元标记。 (如果这没有意义,也许我根本没有得到你的问题。)
  • 我不确定“在社交网站上工作”是指写一个,还是使用现有的。如果这是您可以控制的服务器,答案是使用 Ajax,与查询数据库的后端进程通信。如果没有,那么除非服务器提供该设施,否则您将无法执行此操作。
  • 不,我正在从头开始制作自己的

标签: php mysql database redirect


【解决方案1】:

您应该在指定每个用户使用哪个模板的表中为每个用户提供一行而不是一列。

例如,您将拥有“模板”表,其中包含“用户 ID”、“用户名”和“模板”列。然后,表格将如下所示:

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

...等等。

然后您必须查询用户拥有哪个模板。例如,要知道 UserID '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['用户名']。无需重定向。

【讨论】:

  • 但是我想做的和你刚才写的一样,但是我想做一个随机的GUEST可以访问用户的URL,然后这将自动查询数据库并找到用户的信息和模板,虽然这样的页面实际上并不存在(不存在用户名的页面,只有一个脚本将地址转换为变量并用它来查询数据库,然后做一些动作使用数据库中的数据)。这甚至可能吗?如果没有,你建议怎么做?
  • 也许您正在搜索的是 .htaccess URL 重写 (mod_rewrite),以便从“静态”的 url 中获取 $_GET 变量?这样你就可以像使用 www.emuze.co/users/@bob_marly 一样使用 www.emuze.co/temp.php?user=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 的数据。加载观看用户配置文件,检查他正在使用的模板,然后使用模板(在此演员 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。使用它,您始终可以访问该站点并且可以在那里做任何事情。

你不应该为每个用户使用一个真实的现有文件,但是一个可以得到这样的参数。而且您应该使用模板系统,这样您就可以在任何地方回显模板,而无需重定向用户。

【讨论】:

  • 但是我想做的和你刚才写的一样,但是我想做一个随机的GUEST可以访问用户的URL,然后这将自动查询数据库并找到用户的信息和模板,虽然这样的页面实际上并不存在(不存在用户名的页面,只有一个脚本将地址转换为变量并用它来查询数据库,然后做一些动作使用数据库中的数据)。这甚至可能吗?如果没有,你建议怎么做?
猜你喜欢
  • 2012-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-29
  • 1970-01-01
相关资源
最近更新 更多