Вход в сеанс чтения переменных базы данных
У меня проблемы с моим первым проектом 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 рабочего решения