PHP在url中获取用户ID

时间:2017-03-27 10:34:57

标签: php string session

我是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!!!";
    }
}
?>

4 个答案:

答案 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”);