我是PHP的新手,所以我在这里遇到了一些挑战。 现在,我试图在URL中获取特定的用户ID,因此我可以根据登录的用户更改内容。 (显示不同的个人资料文本,姓名,年龄等)
我试过这个:标题("位置:profile.php?id = $ id");但似乎有效。
<?php
session_start();
if(isset($_SESSION['usr_id'])!="") {
header("Location: index.php");
}
include_once 'dbconnect.php';
//check if form is submitted
if (isset($_POST['login'])) {
$email = mysqli_real_escape_string($con, $_POST['email']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$result = mysqli_query($con, "SELECT * FROM users WHERE email = '" . $email. "' and password = '" . md5($password) . "'");
if ($row = mysqli_fetch_array($result)) {
$_SESSION['usr_id'] = $row['id'];
$_SESSION['usr_name'] = $row['name'];
header("Location: profile.php?id=$id");
} else {
$errormsg = "Incorrect Email or Password!!!";
}
}
?>
答案 0 :(得分:0)
从
更改您的代码 header("Location: profile.php?id=$id");
到
header("Location: profile.php?id=" . $row['id']);
答案 1 :(得分:0)
您没有在任何地方定义$id
。使用
header("Location: profile.php?id={$row['id']}");
另外请注意,如果是登录用户,你应该检查profile.php - 除非你想通过交换id来查找不同的用户数据。最好在profile.php上使用$_SESSION
变量 - 只需在那里访问它,它就是全局的。
另外,不要使用md5进行密码散列 - 现在它不是很安全(使用password_hash),就像连接sql查询一样。使用binding params
答案 2 :(得分:0)
您已在session中提供了ID。使用$_SESSION['usr_id']
从profile.php
访问它。
不要在URL中传递用户ID,因为这很容易伪造。永远不要相信用户输入。
答案 3 :(得分:0)
$ id = $ row ['id'];
header(“Location:profile.php?id = $ id”);