php - 我想在登录时显示欢迎用户名的消息

标签 php mysql

我的问题是,当我得到<?= $_SESSION['username'];?>时它只显示字符串的第一个字母,而不显示 db 的值。我的问题是因为我通过了 $sql['username']但你能告诉我怎样做才是正确的吗?

 <?
  // Username and password sent from form
     $myusername = $_POST['myusername'];
     $mypassword = $_POST['mypassword'];

     // Connect to DB
     $con = mysqli_connect("localhost", "root", "logmeinnow", "form");
     // Check connection
         if (mysqli_connect_errno()) {
         echo "Failed to connect to DB". mysqli_error();
      }

     //Encrypt passowrd
     $encrypt_password = md5($mypassword);
     // Query from Database
     $sql    = "SELECT * FROM users WHERE username='$myusername' and     password='$encrypt_password'";
     $result = mysqli_query($con, $sql);
     if(!$result) {
          die('Sql error:'.mysqli_error($con));
      }
      // Counting table row
      $count = mysqli_num_rows($result);


      //If result matched your Username and Password table row must be 1 row.
      if ($count>0) {
          // Register $myusername, $mypassword and redirect to file index.php


           $_SESSION['is_login']   = true;
           $_SESSION['user_id']    = 0; #from db
           $_SESSION['username']   = $sql['username']; #from db
           $_SESSION['first_name'] = $sql['first_name'];
           $_SESSION['last_name']  = $sql['last_name'];

           header("Location:db.php");
           die();
           } else {
           // Redirect user to login page
           header("Location:login.php?error_id=1");
           }
   ?>

最佳答案

它不应该是 $sql['username']; 相反,我相信它应该是 $result['username'];

使用 mysqli 的最佳方法之一是

<?php 
$sql = "SELECT * FROM users WHERE username='$myusername' and     password='$encrypt_password'";

    if ($result = $mysqli->query($sql)) { 
        while($obj = $result->fetch_object()){ 
            $_SESSION['username'] = $obj->username; 
            $_SESSION['first_name'] = $obj->first_name; 
            $_SESSION['last_name'] = $obj->last_name; 
        } 
    } 
    $result->close(); 
    unset($obj); 
    unset($sql); 
    unset($query); 

?> 

并且还应该在页面的最顶部添加 session_start()

关于php - 我想在登录时显示欢迎用户名的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24565892/

相关文章:

php - Laravel 5.1-实时网站上的错误 View ,哪一个或所有一个以及如何实现?

c# - linq2db:无法为表生成 POCO

php - 实时搜索无法使用 Bootstrap 4、PHP、MySQLi 和 Ajax 运行

c# - 使用 WPF 和 MySql 在 EF 6.0 中过滤实体

javascript - Codeigniter:提交错误时页面背景不会加载

php - 简单的正则表达式帮助 php

php - 如何防止 Yii CGridView 过滤器发生变化?

php - 代码点火器 : Access session from config

Mysql 谜题 : Conditions in ON vs. WHERE

php - 在序列化字符串中发现 NULL 字符