注意:数组到字符串的转换PHP错误,会话数组?



im 对 PHP 相当陌生 我试图创建一个登录名,我一直试图找出过去 2 天出了什么问题,并且已经尝试了一切,但找不到解决方案,我问人们在网上到处寻找,但找不到合适的解决方案。

当我尝试登录时,我不断收到此错误">

注意:第 6 行欢迎数组中的 __________ 中的数组到字符串转换。

登录时似乎数组导致了问题,我希望它显示用户的名字和姓氏。 这是我的代码 提前感谢大家:)

Login.php
<?php
require_once('connect.php');
include('includes/head.php');
?>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post" >
<div class="container">
<fieldset>
<h2>Login</h2>
<div class="row">
<label class="fixedwidth">Username:</label>
<input type="text" name="username" required />
</div>
<div class="row">
<label class="fixedwidth">Password:</label>
<input type="password" name="password" />
</div>
<div class="row">
<input type="submit" name="submit" value="LogIn" />
</div>
</fieldset>
</div>
</form>
<?php
if(isset($_POST['submit']))  {
require_once('connect.php');
$username = mysqli_real_escape_string($connection, $_POST['username']);
$password = mysqli_real_escape_string($connection, $_POST['password']);
if(!empty($username) && !empty($password))  {


$query = "SELECT * FROM user where username='$username' and 
password='$password'";
$result = mysqli_query($connection, $query);
$row=mysqli_fetch_array($result);
mysqli_close($connection);
if(mysqli_num_rows($result) ==1)  {

$fullname=array(firstname=>$row['firstname'],lastname=>$row['lastname']);
session_start();
$_SESSION['user'] = $fullname;
header('Location: welcome.php');
}
else    {
echo "<p>Could not find you in the database.</p>";
}
}
else    {
echo "<p>Either the username or password are invalid. Please try 
again</p>";
}

}
?>     


Logout.php
<?php
session_start();
unset($_SESSION['user']);
// remove all session variables

session_destroy();
// destroy the session  
header('Location: welcome.php');
?>


welcome.php
<?php
include('includes/head.php');
include('includes/nav2.php');
session_start();
echo 'Welcome '. $_SESSION['user'];
echo '<br><br>';
?>

您不能echo数组。
所以你必须像这样implode数组:

echo 'Welcome '.implode(" ", $_SESSION['user']);

但这将为您提供Warning: implode(): Invalid arguments passed in welcome.php,因为您在注销时unset$_SESSION['user']
所以你必须像这样用isset来检查它:

echo isset($_SESSION['user']) ? 'Welcome '.implode(" ", $_SESSION['user']) : "Whatever you want when user is not logged in";

你要做的是将一个数组放入 $_SESSION['user']。如果您尝试将数组转换为字符串,则它将无法像在 JavaScript 中那样工作。

您需要组合数组中的名字和姓氏:

echo 'Welcome ' . $_SESSION['user']['firstname'] . ' ' . $_SESSION['user']['lastname']

在你的欢迎.php文件中,你已经写了

echo 'Welcome '. $_SESSION['user'];

但是变量 $_SESSION['user'] 是一个你试图用字符串连接的数组。这是主要问题。数组不能与字符串连接。

所以要解决这个问题,你可以这样做

echo 'Welcome '. implode(" ", $_SESSION["user"]);

希望这有帮助。

1-首先您需要从那里删除mysqli_close($connection);。您可以将其放在脚本的末尾。因为您正在尝试在此处关闭连接,然后您也尝试计算行。这可能会产生问题。

2-你有数组。并且您正在尝试使用而不提取。请参阅

$fullname=array(firstname=>$row['firstname'],lastname=>$row['lastname']);

3-我建议你从代码中删除它

$fullname=array('firstname'=>$row['firstname'],'lastname'=>$row['lastname']);

并尝试这样。

$_SESSION['user'] = $row['firstname'];

echo isset($_SESSION['user']( ?'Hello'.implode(" ", $_SESSION['user']( : "当用户未登录时您想要的任何内容";

最新更新