个人资料页面PHP
问题描述:
我似乎遇到了难以从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#?而且,我是否需要为此存储会话。
答
你会想让某人将当前登录的用户保存在会话变量中。最简单的方法是向会话数组添加一些密钥,例如用户,其中的值是当前登录的用户。
安全要点:您正在使用
MySQL数据库的功能已被弃用。看看PDO(谷歌它,找到*答案)。它非常相似,但更安全。特别是,看看使用准备好的语句,而不是执行串联参数的字符串。在这种情况下,你很容易被SQL注入攻击(你的搜索会告诉你这是什么!)。 Here是一个起点。
在获取/显示数据给用户之前,您应该确保该用户已登录并且被签名为适当的用户。例如,用户不应修改为URL(即更改$ _GET变量),然后编辑任何用户的任何配置文件。通常,您希望为用户不应该知道的页面显示404页面,并且401s /登录重定向他们应该了解的页面(例如他们自己的配置文件页面,用户控制中心等)但他们没有登录。
会话劫持是一件真实的事情!请查看this了解一些策略以降低风险。很多事情都是关于正确的配置。
祝你好运!
会话“密钥”是否让您识别当前登录的用户? – Luke
不,它只代表用户是否实际登录。因此,如果用户登录或不登录,我可以相应地更改页面。我是否应该为这个会话标识一个用户的ID? –
你可以在会话'key'中添加用户ID,并通过'key'查询profile.php – Drudge