массив var_dump, возвращающий мою строку, double? - PullRequest
0 голосов
/ 23 ноября 2018

После нескольких часов исследований, я пока не нашел нужного исправления, поэтому я здесь!

В настоящее время я работаю над школьным проектом, который использует файл валидатора login.php, чтобы проверить,пользователь заполнил все входные данные и т. д. и т. д., а также для создания сеансов.

require "config.inc.php";

    $query = ("SELECT username, password, active FROM *DATABASE* WHERE username='".$username."' AND password='".$password."' AND active='1'") or die(mysql_error());
    $result = mysqli_query($mysqli, $query);
    $match  = mysqli_num_rows($result);

    if($match > 0){
       //Directing to account page
       header("Location:account.php");

       //User info search
       $queryID = ("SELECT id FROM *DATABASE* WHERE username='".$username."' AND password='".$password."' AND active='1'") or die(mysql_error());
       $resultID = mysqli_query($mysqli, $queryID);
       $id = mysqli_fetch_assoc($resultID);

       $queryNAME = ("SELECT name FROM *DATABASE* WHERE username='".$username."' AND password='".$password."' AND active='1'") or die(mysql_error());
       $resultNAME = mysqli_query($mysqli, $queryNAME);
       $naam = mysqli_fetch_assoc($resultNAME);

       //Session user info
       $_SESSION['id'] = $id;
       $_SESSION['naam'] = $naam;

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

Страница учетной записи затем снова получает и переводит сеансы в переменные со следующим кодом:

  //SESSIONS
  require 'session.php'; //CHECKS IF SESSION IS VALID, IF NOT: RETURN TO HOME

  //VARIABLES
  if (isset($_SESSION['naam']) && isset($_SESSION['id']) && isset($_SESSION['username'])) {
    print_r($_SESSION['naam']); //Debug purposes
    print_r($_SESSION['id']);
    print_r($_SESSION['username']);
    $id = implode($_SESSION['id']); //Convert to String
    $naam = implode($_SESSION['naam']);
    $username = ($_SESSION['username']); //Already a string, this was a variable used in the POST form
    var_dump($naam);
  } else {
    echo "No sessions"; //Debug purposes
  }

Когда я отображаю имя пользователя на странице моей учетной записи, оно отображает имя пользователя совершенно нормально, и я предполагаю, что это потому, что имя пользователя всегда было строкой, с которой начинается."хотя нама в базе данных просто Администратор.

Это мой результат print_r:

Array ( [0] => Administrator [name] => Administrator )
Array ( [0] => 23 [id] => 23 ) 
admin
string(26) "AdministratorAdministrator"

Любые подсказки о том, как я моггарантию, что всякий раз, когда я повторяю переменную naam, она показывает только один раз Администратор, а не дважды?спасибо!

1 Ответ

0 голосов
/ 23 ноября 2018

Вам нужно сохранить только те данные, которые вам нужны в сеансе

$_SESSION['id'] = $id['id'];
$_SESSION['naam'] = $naam['name'];

В вашем случае вы сохраняете весь результат из функции mysqli_fetch_assoc, которая является массивом, как вы можете видеть издокументы:

http://php.net/manual/en/mysqli-result.fetch-assoc.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...