我的问题是,当我得到<?= $_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/