Как я могу напечатать имя пользователя после того, как он войдет в систему PHP? - PullRequest
0 голосов
/ 30 апреля 2020

Я делаю страницу входа для php, и странице входа требуются их адрес электронной почты и пароль, однако, когда они впервые регистрируются, он требует их имя и фамилию. Я пытаюсь напечатать их имя после того, как они войдут в систему, но я получаю «неопределенную переменную firstname», но она была вызвана для сохранения значения в регистрации, поэтому я не уверен, что произойдет. Если его также нужно вызвать в аспекте входа в систему, я не уверен, куда его вызывать, и я не хочу, чтобы пользователь снова вводил свое имя на странице входа, я просто хочу извлечь эти данные из регистрации. и введите его при входе в систему.

Это код индексной страницы, на которую направляется пользователь после входа в систему

    <?php  

session_start();

if(isset($_GET['logout'])){
    session_destroy();
    unset($_SESSION['email']);
    unset($_SESSION['firstname']);

    header("location: index.php");
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Illustrious Marketing</title>

    <!--Bootstrap Stylesheet-->
    <link rel="stylesheet" href="bootstrap-4.4.1-dist/css/bootstrap.min.css">
    <link rel="stylesheet" href="css/index.css">

    <!--Font-->
    <script src="https://kit.fontawesome.com/4f2c3df144.js" crossorigin="anonymous"></script>
</head>
<body>
    <!--Header Start-->
    <header>
        <div class="container">
            <div class="row">
                <div class="col-md-1 col-sm-1 col-lg-2 col-xl-3">
                    <div class="btn-group">
                        <button class="btn border dropdown-toggle my-md-4 my-2 text-color" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">GYD</button>
                    </div>
                </div>
                <div class="col-md-5 col-sm-10 col-lg-5 col-xl-5 text-center">
                    <h2 class="my-md-3 site-title text-color">Illustrious Marketing</h2>
                </div>
                <div class="col-md-6 col-sm-12 text-center col-lg-5 text-right col-xl-4 text-right">
                    <p class="my-md-4 header-links">
                        <?php 
                        if(isset($_SESSION['firstname'])); 
                        ?>
                        <a href="#" class="px-3"> Hello <?php echo $_SESSION['firstname']; ?></a>
                        <a href="#" class="px-1">Become a Seller</a>
                        <a href="index.php?logout='1'" class="px-2">Sign Out</a>
                        <? php endif ?>
                    </p>
                </div>

Это код на сервере входа в систему

<?php
session_start();

// variable declaration
$email    = "";
$errors = array();


// connect to database
$db = mysqli_connect('localhost', 'root', '', 'illustriousmarketing');

// REGISTER USER
if (isset($_POST['reg_user'])) {
    // receive all input values from the form
    $firstname = mysqli_real_escape_string($db, $_POST['firstname']);
    $lastname = mysqli_real_escape_string($db, $_POST['lastname']);
    $email = mysqli_real_escape_string($db, $_POST['email']);
    $password = mysqli_real_escape_string($db, $_POST['password']);

    // form validation: ensure that the form is correctly filled
    if (empty($firstname)) { array_push($errors, "First Name is required"); }
    if (empty($lastname)) { array_push($errors, "Last Name is required"); }
    if (empty($email)) { array_push($errors, "Email is required"); }
    if (empty($password)) { array_push($errors, "Password is required"); }


    // register user if there are no errors in the form
    if (count($errors) == 0) {
        $password = md5($password);//encrypt the password before saving in the database
        $query = "INSERT INTO loginform (`firstname`, `lastname`, `email`, `password`)
                  VALUES('$firstname', '$lastname', '$email', '$password')";
        mysqli_query($db, $query);

        $_SESSION['email'] = $email;
        $_SESSION['success'] = "You are now logged in";
        header('location: indexloginbuyer.php');
    }

}

// ...

// LOGIN USER
if (isset($_POST['login_user'])) {
    $email = mysqli_real_escape_string($db, $_POST['email']);
    $password = mysqli_real_escape_string($db, $_POST['password']);

    if (empty($email)) {
        array_push($errors, "Email is required");
    }
    if (empty($password)) {
        array_push($errors, "Password is required");
    }

    if (count($errors) == 0) {
        $password = md5($password);
        $query = "SELECT * FROM loginform WHERE email='$email' AND password='$password'";
        $results = mysqli_query($db, $query);
        if (mysqli_num_rows($results) == 1) {   
            $_SESSION['firstname'] = $firstname;
            $_SESSION['email'] = $email;
            $_SESSION['success'] = "You are now logged in";
            header('location: indexloginbuyer.php');
        }else {
            array_push($errors, "Wrong email/password combination");
        }
    }
}

?>

Error that I am getting

1 Ответ

0 голосов
/ 30 апреля 2020

Вы должны добавить

session_start (); // Начать сеанс

, чтобы начать сеанс. После этого вам нужно назначить

$ row = mysql_fetch_row ($ result);

$ _ SESSION ['firstname'] = $ row ['firstname'];

внутри блока if после проверки учетных данных пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...