使用$\u会话获取所有值

ugmeyewa  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(517)

我创建了一个系统,用户需要用自己的名字、电子邮件和密码注册。
当他们单击“提交”时,所有这些数据都会发送到数据库。
下面的代码是如何保存他们的会话。

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");
        echo "Email is required<br>";
    }
    if (empty($password)) {
        array_push($errors, "Password is required");
        echo "Password is required";
    }

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

他们可以使用电子邮件和密码登录。

<?php 
  session_start(); 

  if (!isset($_SESSION['email'])) {
    $_SESSION['msg'] = "You must log in first";
    header('location: ../login.php');
  }
  if (isset($_GET['logout'])) {
    session_destroy();
    unset($_SESSION['email']);
    header("location: ../login.php");
  }
?>

我使用此代码来识别系统中的登录用户。
当他们登录时,系统显示“欢迎”user@email.com“使用此代码。

<?php  if (isset($_SESSION['email'])) : ?>
      <p>Welcome <strong><?php echo $_SESSION['email']; ?></strong></p>
      <p> <a href="index.php?logout='1'" style="color: red;">logout</a> </p>
    <?php endif ?>

我的问题是,我如何才能仍然得到用户注册时使用的名称,并将其显示在欢迎旁边,而不是电子邮件。我仍然希望使用$\u session['email']而不是名称来标识用户。有可能吗?

qlzsbp2j

qlzsbp2j1#

(帮助你)。
在有人登录的查询中,您可能正在执行某种类型的循环,例如:

while($row = mysqli_fetch_assoc($result)){

    $_SESSION['email'] = $row['email'];

}

再加上:

while($row = mysqli_fetch_assoc($result)){

    $_SESSION['email'] = $row['email'];
    $_SESSION['name'] = $row['name'];

}

然后可以在其他页面中使用该会话数组。
确保每个会话数组都已设置且不为空,并且会话已启动。
编辑:
也可以将会话数组分配给post数组。
i、 假设 $_POST['login_user'] 是您要在此处使用的:

$_SESSION['name'] = $_POST['login_user'];

脚注:
正如我在评论中所说:
md5已经有30多年的历史了,现在不安全。将password\u hash()/password\u verify()与准备好的语句一起使用。不要练习使用不安全的代码,因为它会产生坏习惯。
所以请帮你自己一个忙,从右脚开始。
参考文献:
https://en.wikipedia.org/wiki/prepared_statement
http://php.net/manual/en/faq.passwords.php

相关问题