2011-12-08 45 views
5

我正在构建一个基本的应用程序,我想弄清楚如何将用户信息从login.php传递给index.php。以下是我到目前为止:我有一个登录页面,通过用户类通过数据库提交和验证用户。之后,将用户属性设置为从数据库返回的值。从那里,id被存储在一个会话中。我将如何去访问页面间的用户信息。我应该建立一个构造方法来查询带有会话ID的数据库吗?这是一种安全还是有效的方法?一个例子是堆栈溢出。您可以在每个页面的顶部看到您的用户名。如何在登录后访问用户信息?

+0

为什么不将用户信息存储到会话中? –

回答

6

听起来像是你有会话处理下来的总体思路。所以你只是问什么方法是安全的,或者优化了什么。

尽可能在会话或cookie中存储尽可能少的信息是很常见的,所以您不会将用户打开到简单的钓鱼攻击。所以理想情况下,这意味着您在数据库中有一个会话表,您可以与会话ID进行交叉引用。

是的,你会在每个页面加载上运行一个查询,但这在标准站点上并不是那么多。只要你正确地处理你的意见,它并不是不安全的。这样,如果用户操纵他们的会话信息,你将不会被关闭。

或者,如果您只是使用用户标识和用户名,则可以安全地将它们存储在会话中,并避免在每次加载页面时进行查询。只是不要疯狂地填充会话或cookie数据,而是用非常长的数组填充非常用的信息。

+0

+1;关于会话数据安全的好处 –

+0

@凯回答我的问题给T,谢谢。 – Scott

4

在登录页,存储用户在会话从数据库中的信息,在其他页面上,你可以直接打电话给他们

<?php 
session_start(); 
$_SESSION['user'] = $username; 

,并在另一个网站上

<?php 
session_start(); 
$_SESSION['user']; 
+0

回到了stackoverflow的例子,当你进入你的个人资料页面时,那里有很多数据:你回答的问题,你问过的问题等等。你显然不会把所有这些存储在一个会话中,那么如何使用$ _SESSSION ['USER']和id从数据库中获取所有数据? – Scott

+0

我想你的sql结构中有你的用户的主要id,只需在$ _SESSION ['id']中存储id以及将在每个站点上使用的一些基本信息(如用户名和名称),如果你以后想要获取一些困难和具体的查询,只需从$ _SESSION ['id']获取id并在sql查询中使用它 –

1

我建立一个基本的应用程序,我试图弄清楚我如何将用户信息从login.php传递给index.php

一种方式是共享数据存储为PHP会话数据:http://www.tizag.com/phpT/phpsessions.php

<?php 
session_start(); // start the session 

$_SESSION['views'] = 1; // store session data 
echo "Pageviews = ". $_SESSION['views']; //retrieve data 

商店,你需要所有页面的用户数据。您可以将扩展数据留在数据库中,因此您不必预先查询大量数据(例如您在SO上的配置文件页面上看到的详尽统计数据)。

然后,您不必在每个页面上重新查询用户数据。只需从会话数据中检索它。

我应该只是建立一个构造方法来查询与会话ID数据库?这是一种安全还是有效的方法?

如果您对所有内容都使用相同的DB帐户,那么在查询用户表时就没有任何内在不安全的问题。你不会让自己面临比你已经做的任何其他查询更多的风险。

如果您在访问数据库时担心安全问题,建议您了解一个具体问题:防止SQL injection attacks

参见:How can I prevent SQL injection in PHP?

相关问题