所以我是php的新手,基本上我要做的是创建一个登录页面然后我通过调用一个被调用的函数检查我的数据库中的用户名和密码,并在验证后返回包含调用函数的用户名的数组,即login.php。然后我将它重定向到另一个页面,显示用户登录并显示用户名但我面临的问题是只存储了用户名的第一个字符 这是登录代码
<?php session_start();?>
<?php require_once("../includes/functions.php");?>
<?php
$username="";
$message="";
if(isset($_POST['submit']))
{
$username=$_POST["username"];
$password=$_POST["password"];
$found_admin=attempt_login($username,$password,$connection);
if($found_admin)
{
$use=$found_admin["username"];
$_SESSION["username"]=$use;
header("Location:admin.php");
exit;
} else {
$message="Username/Password not found";
}
}
这是检查用户名和密码的函数
<?php session_start():>
function attempt_login($username,$entered_password,$connection)
//passing the $connection variable to establish the connection with the database
{
//checking for username and password match if found
$safe_username=mysqli_real_escape_string($connection,$username);//making the string harmless by using this function
$query=" select * from admin where username = '{$safe_username}' ";//query to check if the username value is matched an found
$result=mysqli_query($connection,$query);//fetch object
$obj=mysqli_fetch_assoc($result);//storing the object value in an array
confirm_query($result,$connection);//confirm if query has been passed
$hashed_password=$obj["password"];//storing the value of array password into a variable
$user=$obj["username"];
$pass=password_verify($entered_password,$hashed_password);//checking for the password match
if($pass)//if password match is found
{
return $user;
}else{
return null;
}
}
?>
所以当我在变量$ found_admin上执行var_dump时,我得到完整的字符串。但是当我在$ _SESSION [&#34;用户名&#34;]上执行var_dump时,我收到以下警告&#39;非法字符串offset&#39; username&#39;&#39;它只显示字符串的第一个字符而不是完整的字符串。
过去5天我试图解决这个问题,但无法找到解决方案。请帮助。