需要帮助显示用户名时,用户登录在php


Need help displaying username when user logs in php

所以下面我有我的php代码,一切工作得很好,除了当用户登录并被重定向到受限制的页面。当一个人注册时,他们填写自己的名字、电子邮件和密码。在登录页面,它只需要电子邮件和密码。当他们被重定向时,我只想显示他们的名字。我已经尝试使会话= $结果,这应该返回sql查询的结果,但如果我这样做,它甚至不重定向到受限制的页面。我做错了什么?

<?php
// DATABASE VARIABLES
$user_name = "";
$pass_word = "";
$database = "";
$server = "";
// CONNECTS TO DATABASE
$db_handle = mysql_connect($server, $user_name, $pass_word);
$db_found = mysql_select_db($database, $db_handle);
// ACCOUNT INFORMATION
$email;
$password;
$num_rows = 0;
// IF SUBMIT IS CLICKED
if (isset($_POST['submit'])) {
    // STORES INPUTS AS VARIABLES
    $email = $_POST['email'];
    $password = $_POST['password'];
    // REMOVES HARMFUL CODE
    $email = htmlspecialchars($email);
    $password = htmlspecialchars($password);
    if ($db_found) {
        $SQL = "SELECT * FROM accounts WHERE email = '$email' AND password = '$password'";
        $result = mysql_query($SQL);
        $num_rows = mysql_num_rows($result);
        if ($num_rows > 0) {
            session_start();
            $_SESSION['login'] = ?;
            header ("Location: loggedin/account.php");
        }
        else {
            session_start();
            $_SESSION['login'] = '';
        }
    }
    else {
    }
}
?>

下面是我要做的.....

// DATABASE VARIABLES
$user_name = "";
$pass_word = "";
$database = "";
$server = "";
// CONNECTS TO DATABASE
$db_handle = mysql_connect($server, $user_name, $pass_word);
$db_found = mysql_select_db($database, $db_handle);
// ACCOUNT INFORMATION
$email;
$password;
$num_rows = 0;
// IF SUBMIT IS CLICKED
if (isset($_POST['submit'])) {
// STORES INPUTS AS VARIABLES
$email = $_POST['email'];
$password = $_POST['password'];
// REMOVES HARMFUL CODE
$email = htmlspecialchars($email);
$password = htmlspecialchars($password);
if ($db_found) {
    $SQL = "SELECT * FROM accounts WHERE email = '$email' AND password = '$password'";
    $result = mysql_query($SQL);
    $num_rows = mysql_num_rows($result);

//从数据库中获取用户名

    $row = mysql_fetch_row($result);
    if ($num_rows > 0) {

//添加会话变量

        session_start();
        $_SESSION['login'] = $row['username'];
        header ("Location: loggedin/account.php");
    }
    else {

//退出或重定向到登录失败页面

    }
}
else {

这对我来说似乎没问题,虽然我目前无法测试。

编辑你可能想要阅读一下使用Mysqli和PDO连接,它稍微快一点,绝对更安全,如果你有时间,只是一个建议。而且预处理语句肯定会安全。

这就是我如何登录…你必须为mysql中的每个用户都有一个ID,并定义

$_SESSION['user_id'] = $fetched_id;

和在loggedin/account.php页面,你可以简单地这样做:

$user_id = $_SESSION['user_id'];
$query = mysql_query("SELECT `first_name` FROM `users` WHERE `id` = '{$user_id}'");