2017-09-26 3 views
-1

私のプロフィールページで$ Session []変数を読んでみたいが、試している間に問題がある。 これは私のPHPスクリプトは、私がのためにprofile.phpページ上に表示したいファーストネーム、姓、住所やユーザ名、パスワード、などの変数を持っているアカウントでデータベースにログイン情報ファイルget stored 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!'); 
     } 
     } 
    } 
    ?> 

でありますこのような例

  <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 session_start(); ?> 

とのセッションを開始するPHPファイルとDB接続

<?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; 
    } 
    } 
}` 

が含まれている私の目標は、プロフィールページ(フルネームでログインしているユーザーのすべてのデータベース変数を表示することです、住所、電話番号)誰かが私は本当にいただければ幸い私のコードを修正するのに役立つことができれば:)

+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> 

ただし、画面をリロードすると表示されません。

私には本当に奇妙に見える