2017-09-26 134 views
-1

我想阅读我的个人资料页面上的$ Session []变量,但我尝试时遇到问题。 这是我的PHP脚本在我的login文件获取存储在php登录会话的数据库变量

<?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!'); 
     } 
     } 
    } 
    ?> 

在数据库上的帐户我有像用户名,密码,名字,姓氏,ADRESS,我想为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="#">&times;</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="#">&times;</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; 
    } 
    } 
}` 

我的目标是,以显示已登录的用户的个人资料页上的所有数据库变量(全名,ADRESS,电话号码),如果有人可以帮助我解决我的代码,将是非常赞赏:)

+0

''我怎么能解决这个问题'' - 什么问题?什么不工作?您的会话值是否不打印?你在哪里设置这些会话值? – David

+0

例如,当我使用这个字符串

<?php echo $ _SESSION ['firstname']; ?>

我收到错误 – Vezuure

+1

读取错误消息将是一个不错的第一步。 – David

回答

0

此页面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> 
} 
+0

没有为我工作 – Vezuure

0

我收到这个解决方案的错误,我通过更改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> 

但它似乎似乎没有出现,如果我重新加载屏幕。

看起来真的很奇怪我