登录后如何访问用户信息?

时间:2011-12-08 01:28:26

标签: php mysql session

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

3 个答案:

答案 0 :(得分:6)

听起来你对会话处理有了一般的了解。所以你只是问什么方法是安全的,或者是优化的或者其他方法。

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

是的,您会在每个页面加载时运行查询,但这并不是标准站点上的那么多开销。只要你正确消毒你的输入,它就不是不安全的。这样,如果用户操纵会话信息,您就不会被打倒。

或者,如果您只是使用用户ID和用户名,则可以安全地将其存储在会话中,并避免对每个页面加载进行查询。只是不要用填充了不常用信息的极长数组来填充会话或cookie数据。

答案 1 :(得分:4)

在您的登录页面中,将数据库中的用户信息存储在会话中,在其他页面上,您可以直接调用它们

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

和另一个网站

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

答案 2 :(得分: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查询数据库吗?这是一种安全或有效的方法吗?

如果您对所有内容使用相同的数据库帐户,那么查询用户表的安全性就不那么严重了。除了您正在进行的任何其他查询之外,您不会暴露自己更多的风险。

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

请参阅:How can I prevent SQL injection in PHP?