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

时间:2014-07-04 02:31:17

标签: 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");
           }
   ?>

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:0)

我认为因为这个

$_SESSION['username'] = $sql['username'];您的提取代码在哪里?

尝试改为

$_SESSION['username']=$_POST['myusername'];

相关问题