使用URL中的用户ID进行导航
问题描述:
所以我正在努力学习更多的PHP。使用URL中的用户ID进行导航
我相信我在成功登录时设置了$ _SESSION ['user'],然后我想使用标题将用户引导至profile.php页面。我想要做的是使用URL中的用户ID或用户名查看其他用户配置文件。
例如:/profile.php?id=7或/profile.php/John
if(!isset($_SESSION['user'])){
header("Location:profile.php?id=" . $_SESSION['user']);
}else if(!empty($_GET['name'])) {
$username = $_GET['name'];
$getUserProfile = mysqli_query($connection, "SELECT user.username, user.userID
FROM profile, user
WHERE profile.userID = user.userID
AND user.username = '{$username}'");
while($getResult = mysqli_fetch_array($getUserProfile)){
$usersname = $getResult["username"];
$usersId = $getResult["userID"];
}
}
我试图做到这一点,但我不能得到它的工作。我将不胜感激任何帮助如何做到这一点!
答
试试这个:
if(!empty($_SESSION['user']) && empty($_GET['name'])){
header("Location:profile.php?id=" . $_SESSION['user']);
}else if(!empty($_GET['name'])) {
$username = $_GET['name'];
$getUserProfile = mysqli_query($connection, "SELECT user.username, user.userID
FROM profile, user
WHERE profile.userID = user.userID
AND user.username = '{$username}'");
while($getResult = mysqli_fetch_array($getUserProfile)){
$usersname = $getResult["username"];
$usersId = $getResult["userID"];
}
header("Location:profile.php?id=" . $usersId);
}
+0
嗨,谢谢你的回复!这当然非常有帮助!但现在每当我输入任何网址时,它总是回传给登录用户(例如“/profile.php?id=John”) - 如果我想查看Mandy的个人资料,我该怎么做?谢谢 – John107
+0
Hi @ John107,如果URL参数为空,我已更新代码以包含在条件中。 – hungrykoala
这是不对的'如果(isset($ _ SESSION [ '用户'])!){'尝试'如果(isset($ _ SESSION [ '用户'])){' – hungrykoala
你的脚本存在[SQL注入攻击]的风险(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) 看看发生了什么事[小鲍比表](http://bobby-tables.com/)即使 [如果你是逃避投入,它不安全!](http://stackoverflow.com/questions/5741187/sql-injection-that-gets -around-mysql-real-escape-string) 使用[prepared parameterized statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) – RiggsFolly