获取php登录会话上存储的数据库变量
我想在我的个人资料页面上读取$Session[]变量,但在尝试时遇到了问题。 这是我登录文件上的php脚本获取php登录会话上存储的数据库变量,php,mysql,pdo,phpmyadmin,session-variables,Php,Mysql,Pdo,Phpmyadmin,Session Variables,我想在我的个人资料页面上读取$Session[]变量,但在尝试时遇到了问题。 这是我登录文件上的php脚本 <?php if (isset($_POST['LoginBtn'])) { $username = $_POST['username']; $password = $_POST['password']; if (empty($username) || empty($password)) { $show
<?php
if (isset($_POST['LoginBtn']))
{
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username) || empty($password))
{
$show -> showError("please fill out all the fields");
}
else
{
$SQLCheckUser = $odb -> prepare("SELECT COUNT(*) FROM `Account` WHERE `username` = :user AND `password` = :password LIMIT 1");
$SQLCheckUser -> execute(array(':user' => $username, ':password' => hash('SHA512', $password)));
$loginCheck = $SQLCheckUser -> fetchColumn(0);
if ($loginCheck)
{
$SQLGetID = $odb -> prepare("SELECT `ID`, FROM `Account` WHERE `username` = :username LIMIT 1");
$SQLGetID -> execute(array(':username' => $username));
$_SESSION['username'] = $username;
$_SESSION['ID'] = $SQLGetID -> fetchColumn(0);
$show -> showSuccess('Willkommen... <meta http-equiv="refresh" content="2;url=index.php">');
}
else
{
$show -> showError('user was not found!');
}
}
}
?>
在帐户上的数据库中,我有一些变量,如用户名、密码、名字、姓氏、地址,我想在profile.php页面上显示它们,例如
<h4 class="profile-user"><?php echo $_SESSION['firstname']; ?></h4>
<p class="profile-job"><?php echo $_SESSION['lastname']; ?></p>
<p class="profile-job"><?php echo $_SESSION['adress'];?></p>
我怎样才能解决这个问题?
页面包含一个启动会话的php文件
<?php session_start(); ?>
和一个数据库连接
<?php
$show = new show();
$user = new user($odb);
$status = new status($odb);
class show
{
function showError($error)
{
echo '<div class="alert alert-danger"><a class="close" data- dismiss="alert" href="#">×</a><h4 class="alert-heading">error!</h4>'.$error.'</div>';
}
function showSuccess($success)
{
echo '<div class="alert alert-success"><a class="close" data-dismiss="alert" href="#">×</a><h4 class="alert-heading">Login success!</h4>'.$success.'</div>';
}
}
class user
{
var $odb;
function __CONSTRUCT($odb)
{
$this -> odb = $odb;
}
function loggedIn()
{
if (isset($_SESSION['username'], $_SESSION['ID']))
{
return true;
}
else
{
return false;
}
}
function isAdmin()
{
$SQL = $this -> odb -> prepare("SELECT `admin` FROM `Account` WHERE `ID` = :id");
$SQL -> execute(array(':id' => $_SESSION['ID']));
$rank = $SQL -> fetchColumn(0);
if ($rank == 1)
{
return true;
}
else
{
return false;
}
}
}`
我的目标是在配置文件页面上显示登录用户的所有数据库变量全名、地址、电话号码,如果有人能帮我修复代码,我将不胜感激:this page profile.php
session_start();
$dbh = new PDO(" --- connection string --- ");
$user = new user($dbh);
if ($user->loggedIn()) {
$stmt = $odb->prepare("SELECT `firstname`, `lastname`,`adress`,FROM `Account` WHERE ID=$_SESSION['ID'] LIMIT 1");
$stmt->execute();
$row = $stmt->fetch();
}
foreach ($row as $item)
{
<h4 class="profile-user"><?php echo $item['firstname']; ?></h4>
<p class="profile-job"><?php echo $item['lastname']; ?></p>
<p class="profile-job"><?php echo $item['adress']; ?></p>
}
我收到了这个解决方案的一个错误,我通过将profile.php中的代码更改为这个来修复它
<div class="col-lg-3">
<!-- Page Widget -->
<?php
$stmt = $odb->prepare("SELECT 'vorname', 'nachname','email',FROM 'Account' WHERE ID=$_SESSION[ID] LIMIT 1");
$stmt->execute();
$row = $stmt->fetch();
foreach ((array) $row as $item){
$vorname = $item['vorname']; // german word for firstname
$nachname = $item['nachname']; // german word for lastname
$email = $item['email']; // german word for email
} ?>
<h4 class="profile-user"><?php echo $vorname ?></h4>
但是如果我重新加载屏幕,它似乎不会出现
我觉得很奇怪我如何解决这个问题-什么问题?到底是什么不起作用?您的会话值是否未打印?你在哪里设置这些会话值?例如,当我使用这个字符串时,我得到一个错误。阅读错误消息将是一个很好的第一步。@vezure大卫说的!注意:第39行的/Applications/XAMPP/xamppfiles/htdocs/profil.php中未定义的索引:lastname,即此字符串