注意:Array to string conversion PHP 错误,SESSION ARRAYS?
Notice: Array to string conversion PHP error, SESSION ARRAYS?
我对 php 还很陌生,我正在尝试创建登录,过去 2 天我一直在尝试找出问题所在,并且尝试了所有方法但找不到解决方案,我问过人们翻遍了整个网络,但找不到合适的解决方案。
我尝试登录时一直收到此错误消息'
注意:第 6 行 __________ 中的数组到字符串的转换 Welcome Array.
我登录时似乎是数组导致了问题,我希望它显示用户的名字和姓氏。这是我的代码,在此先感谢大家:)
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>';
?>
你所做的是将一个数组放入 $_SESSION['user']。如果您尝试将数组转换为字符串,它将无法像 JavaScript.
中那样工作
您需要组合数组中的名字和姓氏:
echo 'Welcome ' . $_SESSION['user']['firstname'] . ' ' . $_SESSION['user']['lastname']
在你的 welcome.php 文件中,你写了
echo 'Welcome '. $_SESSION['user'];
但是变量 $_SESSION['user'] 是一个数组,您正试图将其与字符串连接。这是主要问题。数组不能与字符串连接。
所以要解决这个问题,你可以这样做
echo 'Welcome '. implode(" ", $_SESSION["user"]);
希望对您有所帮助。
1-首先你需要从 there.you 中删除 mysqli_close($connection);
可以把它放在你试图关闭连接的 script.because 的末尾,然后你正在尝试计算行 too.which 可能会产生问题。
2-你有 array.and 你正在尝试使用 extracting.see
$fullname=array(firstname=>$row['firstname'],lastname=>$row['lastname']);
3-我建议您从代码中删除它
$fullname=array('firstname'=>$row['firstname'],'lastname'=>$row['lastname']);
然后像这样尝试。
$_SESSION['user'] = $row['firstname'];
您不能 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";
echo isset($_SESSION['user']) ? 'Hello'.implode(" ", $_SESSION['user']) : "用户未登录时随心所欲";
我对 php 还很陌生,我正在尝试创建登录,过去 2 天我一直在尝试找出问题所在,并且尝试了所有方法但找不到解决方案,我问过人们翻遍了整个网络,但找不到合适的解决方案。
我尝试登录时一直收到此错误消息'
注意:第 6 行 __________ 中的数组到字符串的转换 Welcome Array.
我登录时似乎是数组导致了问题,我希望它显示用户的名字和姓氏。这是我的代码,在此先感谢大家:)
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>';
?>
你所做的是将一个数组放入 $_SESSION['user']。如果您尝试将数组转换为字符串,它将无法像 JavaScript.
中那样工作您需要组合数组中的名字和姓氏:
echo 'Welcome ' . $_SESSION['user']['firstname'] . ' ' . $_SESSION['user']['lastname']
在你的 welcome.php 文件中,你写了
echo 'Welcome '. $_SESSION['user'];
但是变量 $_SESSION['user'] 是一个数组,您正试图将其与字符串连接。这是主要问题。数组不能与字符串连接。
所以要解决这个问题,你可以这样做
echo 'Welcome '. implode(" ", $_SESSION["user"]);
希望对您有所帮助。
1-首先你需要从 there.you 中删除 mysqli_close($connection);
可以把它放在你试图关闭连接的 script.because 的末尾,然后你正在尝试计算行 too.which 可能会产生问题。
2-你有 array.and 你正在尝试使用 extracting.see
$fullname=array(firstname=>$row['firstname'],lastname=>$row['lastname']);
3-我建议您从代码中删除它
$fullname=array('firstname'=>$row['firstname'],'lastname'=>$row['lastname']);
然后像这样尝试。
$_SESSION['user'] = $row['firstname'];
您不能 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";
echo isset($_SESSION['user']) ? 'Hello'.implode(" ", $_SESSION['user']) : "用户未登录时随心所欲";