Вход в сеанс чтения переменных базы данных

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

Я хотел бы прочитать значения моей базы данных и использовать их в моей сессии.

это мой config.php

<?php session_start(); ?>
<?php
//DB Config
define('DB_USER', 'user');
define('DB_PASS', 'password');
define('DB_NAME', 'KBZ');
define('DB_HOST', 'localhost');
$odb = new PDO('mysql: host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASS);



//Other Configs
if (!empty($_SERVER['HTTP_CF_CONNECTING_IP']))
{
    $userIP = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
else if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
    $userIP = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else if(!empty($_SERVER['HTTP_CLIENT_IP']))
{
    $userIP = $_SERVER['HTTP_CLIENT_IP'];
}
else
{
    $userIP = $_SERVER['REMOTE_ADDR'];
}
?>

тогда у меня есть файл connection.php

$user = new user($odb); 
class user
{
var $odb;

function __CONSTRUCT($odb)
{
    $this -> odb = $odb;
}
function loggedIn()
{
    if (isset($_SESSION['username'], $_SESSION['ID']))
    {
        return true;
    }
    else
    {
        return false;
    }
}

и мой логин.php

<form id="form-login" role="form" action="" method="post">
    <?php
    if (isset($_POST['LoginButton'])){
 $DBchkusr = $odb -> prepare("SELECT * FROM `Users` WHERE `username` = :username AND `password` = :password LIMIT 1");
        $DBchkusr -> execute(array(':username' => $username, ':password' => hash('SHA256', $password)));
        $valid = $DBchkusr -> fetchColumn(0);
        if ($valid)
        {

          $DBGetID = $odb -> prepare("SELECT `ID`, FROM `Users` WHERE `username` = :username LIMIT 1");
          $DBGetID -> execute(array(':username' => $username));

          $_SESSION['username'] = $username;

          $_SESSION['ID'] = $DBGetID -> fetchColumn(0);
        }

как я могу отобразить имя успешного вошедшего в систему пользователя? Можно ли хранить информацию базы данных как переменную Session, как это?

например:

Добро пожаловать обратно <?php> $_SESSION['Name']?>!

заранее спасибо.

2 ответа

Решение

Да, используйте это, когда пользователь успешно входит в систему:

session_start();
$_SESSION["name"] = $name; // $name is received from database

Теперь используйте это в качестве приветствия:

session_start();
echo "welcome back" . $_SESSION["name"];

Редактировать: Используйте это в if($valid) заявлении:

if ($valid) {
    $stmt = $odb->prepare("SELECT * FROM `Users` WHERE `username` = :username LIMIT 1");
    if ($stmt->execute(array($username))) {
        while ($row = $stmt->fetch()) {
            // remove any of this session variables as you want
            $_SESSION["id"] = $row["id"];
            $_SESSION["username"] = $row["username"];
            $_SESSION["password"] = $row["password"];
            $_SESSION["name"] = $row["name"];
        }
    }
}

Хорошо, хорошие новости. у меня это работает

if ($loginCheck)
        {
          $SQLGetID = $odb -> prepare("SELECT * FROM `Account` WHERE `username` = :username LIMIT 1");
          $SQLGetID -> execute(array(":username" => $username));
          if ($SQLGetID->execute(array($username))); { //had to add an ; and it worked


            while ($row = $SQLGetID->fetch()) { // THIS IS LINE 92


                $_SESSION["id"] = $row["ID"];
                $_SESSION["username"] = $row["username"];
                $_SESSION["password"] = $row["password"];
                $_SESSION["vorname"] = $row["vorname"];
                $_SESSION["nachname"] = $row["nachname"];
                $_SESSION["email"] = $row["email"];
                $_SESSION["handy"] = $row["handy"];
            }
        }

Theres теперь только еще одна проблема, я продолжаю получать эту ошибку при входе в систему, остальное теперь работает с отображением данных Error Log

Просто исправил это. Решение: $SQLGetID -> execute(array(":username" => $username)); было ненужно удалить эту строку кода, и это работает. GIF рабочего решения

Другие вопросы по тегам