2010-12-15 42 views
3

我有一个登录表单,我设计了我的网站,使每个用户都有自己的仪表板。负载如果的,是否可以?

登录后,我检查是否

if($_POST['username']=="ryan") 
{ 
redirect to ryan;s dashboard 
} 
if($_POST['username']=="jpn") 
{ 
redirect to jpn;s dashboard 
} 

等for1500用户名。它很好吗?

+1

如果您希望每次获得新用户时都自己承担额外工作量,这很好。这些仪表板的名称是什么,它们是与用户的名称相关的,还是您有一个用户名查找表到仪表板? – 2010-12-15 10:21:23

+0

与用户的名字相关。 – ryan 2010-12-15 10:22:06

+0

当然会起作用。请记住,每次有新用户注册您的应用程序时,您都必须添加代码...因为您最好使用类似'redirect_to($ _ POST ['username']);'并且有相关功能 – acm 2010-12-15 10:23:13

回答

4

将名称和仪表板URL放入数据库中。根据发布的名称和重定向进行一次查询以查找URL。您将有4行代码,而不是6000.

+0

嘿,那是个好主意。在运行查询并检查用户并从数据库获取链接后,我如何重定向用户?我应该使用PHP的标题功能吗? – ryan 2010-12-15 10:24:21

+0

你可以这样做,但我的答案更安全,因为你也要求输入密码。您还只有一次仪表板代码(在一个文件中),但只加载用户数据。您可以调整会话长度以适应您的需求 - 认为用户注销前的默认时间为15或20分钟。我的意思是使用丹斯的方式,如果一个用户知道他人的用户名,他们可以很容易地访问另一个用户仪表板。 – ClarkeyBoy 2010-12-15 10:28:49

+0

刚刚在这个问题上有了另一个想法......首先,所有仪表板共用的代码必须重复1500次(假设它们完全是不同的页面),而常见的更改必须重复1500次...其次是什么如果仪表板URL“模式”发生更改,则会发生。例如/dashboard/name.htm到/dash/name.htm?这是一个很大的改变,它不能用数据库中的简单查找/替换来完成。这可能是不必要的工作,因为它可能只有1个URL适合所有人,如果URL更改则更改一个。 – ClarkeyBoy 2010-12-15 10:44:59

1

不。如果您确实需要在1500个不同的例程之间进行选择,则应该使用类似strategy pattern之类的内容。

然而,就你而言,它只是与不同的数据相同的例程(加载用户的仪表板)。程序应该是一样的。你为什么需要不同的代码来加载每个用户的仪表板?

1

认为这是在你的设计有问题......这样的事情是不可能发生的:)

您应该使用获取用户仪表盘和脚本只发送用户ID到该脚本!

+0

认为这不是一个正确的答案。 – acm 2010-12-15 10:24:05

+0

它比其他人试图使代码适合有缺陷的架构 – symcbean 2010-12-15 13:02:29

0

您应该重定向到1个仪表板。那么,如果你尝试你的代码为1000的用户,你会感到累使用该值在仪表盘

login php .... 
if($_POST['username']) 
{ 
redirect to dashboard 
} 


dahsboard php 

welcome <?=$_POST['username']?>, 
... 
.. 
user spesific things.. 

..

1

第一,而不是做多的if语句的方式,我建议使用switch声明是这样的:

switch($_POST['username']) 
{ 
    case "ryan" : //redirect to ryan;s dashboard 
    case "jpn" : //redirect to jpn;s dashboard 
} 

其次,我不建议这样做,在所有重定向到一个人的仪表板。您应该有一个共同的仪表板和一个包含用户名和仪表板详细信息的表格。然后用用户名称调用单个函数。

0

您可以做的是将用户名保存在会话变量中,然后根据会话变量加载用户仪表板。假设你也要求输入密码,你应该保存用户名和密码。检查它们是否正确,并为该特定用户加载仪表板。

如果它们被重定向到例如www.your-domain.com/jpn.html,则这是不安全的,因为a)它可以被搜索引擎索引并出现在搜索结果中,并且b)更重要的是所有用户只需输入用户URL即可访问其他仪表板。

+0

的想法更有意义。我已经在会话变量中存储了用户名和密码。我该如何重定向? – ryan 2010-12-15 10:29:36

+0

您只需重定向到www.your-domain.com/dashboard.php并根据存储在例如'$ _SESSION [“用户名”]'和'$ _SESSION [“密码”]中的值加载用户数据' 。我不确定用户名和密码对于这些变量名是否安全,因为我本人不是PHP专家,但是您可能想将它们命名为黑客不可预知的内容。 – ClarkeyBoy 2010-12-15 10:31:46

+0

我如何为不同的用户提供不同的数据?对不起,问这样一个愚蠢的问题 – ryan 2010-12-15 10:35:16

相关问题