2011-10-24 61 views
0

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

+0

是否有任何理由不重定向到目标网站?我的意思是真实的。不要通过显示其他内容来处理重定向,只需将用户转发到目标页面即可。您可以使用HTTP位置标头或元标记。 (如果这没有意义,也许我根本没有得到你的问题。) –

+0

我不确定“在社交网站上工作”是指写一个还是使用现有的网站。如果这是您可以控制的服务器,则答案是使用Ajax,与查询数据库的后端进程交谈。如果没有,那么除非服务器提供设施,否则你不能这样做。 –

+0

不,我正在从头开始创建自己的一个 –

回答

0

您应该在指定每个用户使用哪个模板的表中为每个用户指定一行而不是列。例如,您将拥有“模板” - 表,列“用户名”,“用户名”和“模板”。然后,表格看起来像这样:

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

...和soforth。

然后,您必须查询用户拥有哪个模板。例如,要知道哪个模板,用户名“3”使用,假设你的MySQL连接资源存储在变量$链接的用户:

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

$行[“模板”]将导致“temp1.0”您可以使用它来包含特定的CSS样式表,包括特定的PHP文件或其他内容,但是您也可以检索所有其他用户特定的信息,例如$ row ['Username']。不需要重定向。

+0

但我想要做的就像你刚刚写的,但我想这样做,以便一个随机的GUEST可以去用户的URL然后这将自动查询数据库并查找用户的信息和模板,尽管这样的页面实际上并不存在(具有用户名的页面不存在,只有一个脚本将地址变成变量,用它来查询数据库,然后使用数据库中的数据做一些操作)。这甚至有可能吗?如果不是,你如何推荐这样做? –

+0

也许你正在寻找的是.htaccess的URL重写(mod_rewrite),为了从一个'静态'的URL获取$ _GET变量?这样,你可以使用www.emuze.co/temp.php?user=bob_marly,就好像它在www.emuze.co/users/@bob_marly那里,然后使用$ _GET ['user']变量查询http:// www .workingwith.me.uk /用品/脚本/ mod_rewrite的 – carlo

0

如果我理解正确你的问题,你的意思是这样的:

所以用户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 

UPDATE:

我想你需要的是一些mod_rewrite的(Apache下,IIS下使用重写规则),至极地图http://example.com/users/bob_marleyhttp://example.com/users/index.php?user=bob_marley。使用这个你总是可以到达那个网站,并且可以在那里做任何事

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

+0

,但我想要做的就像你刚刚写的,但我想让它成为一个随机的GUEST可以去用户的URL,然后这将自动查询数据库并找到用户的信息和模板,尽管这样的页面实际上并不存在(具有用户名称的页面不存在,只有一个脚本将地址变成变量并用它来查询数据库,然后使用数据库中的数据做一些动作)。这甚至有可能吗?如果不是,你如何推荐这样做? –

+0

感谢您通过以下方式回答我的问题:D –

+0

以及mod重写如何工作? –