Примечание: ошибка PHP преобразования массива в строку, СЕССИЯ Массивы? - PullRequest
0 голосов
/ 25 мая 2018

Я довольно новичок в php. Я пытаюсь создать логин, я пытался выяснить, что не так в течение последних 2 дней, и перепробовал все, но не смог найти решение этой проблемы, я попросил, чтобы люди просмотрели всю сеть, ноне могу найти правильное решение.

Я продолжаю получать эту ошибку, когда пытаюсь войти в систему '

Примечание: преобразование массива в строку в __________ в строке 6 Welcome Array.

кажется, что массив вызывает проблему, когда я вхожу в систему, я хочу, чтобы он отображал имя и фамилию пользователя.вот мой код заранее всем спасибо :)) 1007

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>';
?>

Ответы [ 4 ]

0 голосов
/ 25 мая 2018

Вы не можете 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";
0 голосов
/ 25 мая 2018

В вашем файле welcome.php вы написали

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

Но переменная $ _SESSION ['user'] - это массив, который вы пытаетесь объединить со строкой.Это главная проблема.Массивы не могут быть объединены со строкой.

Итак, чтобы решить эту проблему, вы можете сделать это

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

Надеюсь, это поможет.

0 голосов
/ 25 мая 2018

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'];
0 голосов
/ 25 мая 2018

Что вы делаете, вы помещаете массив в $ _SESSION ['user'].Если вы попытаетесь преобразовать массив в строку, он не будет работать, как, например, в JavaScript.

Вам необходимо объединить имя и фамилию из массива:

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

...