2015-07-19 94 views
0

我似乎遇到了难以从profile.php上的用户身份号码。个人资料页面PHP

profile.php PHP:

<?php 
session_start(); 
require 'include/connect.php'; 
if(!$_SESSION['key']){ 
    header('Location: login.php'); 
} 
$uid = $_GET['id']; 
$sql = "SELECT * FROM users WHERE id = '$uid'"; 
$query = mysql_query($sql); 
while($row = mysql_fetch_array($query)){ 
    $user = $row['username']; 
} 
?> 

正如你看到的,当你添加与获取数据(EX:profile.php?id=3)的URL 您访问相应的用户的个人资料;但是我想取用户的id并从数据库中提取他们的信息,以便在去profile.php时查看他们自己的配置文件(不添加GET扩展名)

问题:我可以使用什么方法来查询用户的ID#?而且,我是否需要为此存储会话。

+1

会话“密钥”是否让您识别当前登录的用户? – Luke

+0

不,它只代表用户是否实际登录。因此,如果用户登录或不登录,我可以相应地更改页面。我是否应该为这个会话标识一个用户的ID? –

+1

你可以在会话'key'中添加用户ID,并通过'key'查询profile.php – Drudge

回答

1

你会想让某人将当前登录的用户保存在会话变量中。最简单的方法是向会话数组添加一些密钥,例如用户,其中的值是当前登录的用户。

安全要点:您正在使用

  1. MySQL数据库的功能已被弃用。看看PDO(谷歌它,找到StackOverflow答案)。它非常相似,但更安全。特别是,看看使用准备好的语句,而不是执行串联参数的字符串。在这种情况下,你很容易被SQL注入攻击(你的搜索会告诉你这是什么!)。 Here是一个起点。

  2. 在获取/显示数据给用户之前,您应该确保该用户已登录并且被签名为适当的用户。例如,用户不应修改为URL(即更改$ _GET变量),然后编辑任何用户的任何配置文件。通常,您希望为用户不应该知道的页面显示404页面,并且401s /登录重定向他们应该了解的页面(例如他们自己的配置文件页面,用户控制中心等)但他们没有登录。

  3. 会话劫持是一件真实的事情!请查看this了解一些策略以降低风险。很多事情都是关于正确的配置。

祝你好运!