Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在用户登录PHP后,如何打印他们的名字?_Php_Html - Fatal编程技术网

在用户登录PHP后,如何打印他们的名字?

在用户登录PHP后,如何打印他们的名字?,php,html,Php,Html,我正在为php做一个登录页面,登录页面需要他们的电子邮件和密码,但是当他们第一次注册时,它需要他们的名字和姓氏。我试图在他们登录后打印他们的名字,但我一直得到“undefined variable firstname”,但调用它是为了在注册中存储值,所以我不确定会发生什么。如果它也需要在登录方面调用,我不确定在哪里调用它,我不希望用户在登录页面中再次输入他们的名字,我只想从注册页面中提取数据,并在他们登录时输入 这是用户登录后指向的索引页的代码 <?php session_s

我正在为php做一个登录页面,登录页面需要他们的电子邮件和密码,但是当他们第一次注册时,它需要他们的名字和姓氏。我试图在他们登录后打印他们的名字,但我一直得到“undefined variable 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");
        }
    }
}
您应该添加

会话_start();//开始会话

开始会话。之后,您需要分配

$row=mysql\u fetch\u row($result)

$\会话['firstname']=$row['firstname']


检查用户凭据后,在if块内。

在检索会话变量之前,需要设置会话变量。在你发布的代码中,这不会发生。您还需要调用才能访问
$\u SESSION
变量。我在登录服务器的代码中有SESSION start,我的注册和登录是在主“server”文件中完成的,我刚刚发布了登录代码的片段,因为这正是我们讨论的内容。我将发布服务器的全部代码,在我设置会话变量后,您能告诉我需要在哪里设置会话变量吗?只需在设置
电子邮件
成功
会话变量的同一位置进行设置即可。
session\u start()
方法也需要在访问变量之前在您的第一个代码段中调用。我不再收到错误,但名称仍然没有显示。您实际在哪里为第一个名称设置会话变量?我仍然没有在您的代码中看到它。我不再收到错误,但它仍然没有显示名称:(删除行$\u SESSION['firstname']=$firstname;并替换为$row=mysql\u fetch\u row($result);$\u SESSION['firstname']=$row['firstname'];