我的问题是,当我得到<?= $_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");
}
?>
答案 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'];