2017-02-21 27 views
1

我不明白爲什麼我無法將登錄的用戶名與會話相關聯。 如果你們可以幫我在這裏,我會非常感激的。會話未與用戶名關聯PHP

這裏的示例代碼:

session_start(); 

include 'includes/connect.php'; 

if (isset($_POST['user'], $_POST['pass'])) { 
    //assigning parameters to variables. 
    $user = $_POST['user']; 
    $pass = $_POST['pass']; 

    $sql = 'SELECT id FROM users WHERE username=(:user) AND password=(:pass)'; 

    try { 
     $connect = new PDO("mysql:host=$host; dbname=$dbname;", $username, $password); 
     $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $values = $connect->prepare($sql); 
     $values->bindParam('user', $user, PDO::PARAM_STR); 
     $values->bindParam('pass', $pass, PDO::PARAM_STR); 
     $values->execute(); 
     $row_count = $values->rowCount(); 
     $row = $values->fetch(PDO::FETCH_ASSOC); 

     //////////////////////////// 
     //user and pass section [DB] 
     //$usr_db = $row['username']; 
     //$pwd_db = $row['password']; 
     //////////////////////////// 

     if ($row_count === 1) { 
      $_SESSION['Logged_in'] = $user; 
      echo 'THIS TEXT REMAINS..'; 
     } 
    } catch (PDOException $e) { 
     echo 'Error: ' . $e->getMessage(); 
    } 
} 
+0

您不再使用會話信息,只需將會話變量「Logged_in」設置爲用戶名即可。 如果你想再次得到用戶名,你必須做''user = $ _SESSION [「Logged_in」]' –

+0

'我做了這個測試:'<?php session_start(); $ user = $ _GET [「name」]; if($ user ==「admin」){ \t $ _SESSION [「user_login」] = $ user; } if(isset($ _ SESSION [「user_login」])){ \t echo「DONE!」; } ?>'這裏一旦你做了?name = admin這個詞完成!留在頁面上,直到我刪除會話。我想在這種情況下。 –

+0

@KlausGF。我得到的問題是會議不會繼續。我不知道爲什麼。我嘗試過,但文字不在頁面上。 - 'if(isset($ _ SESSION [「Logged_in」])){ \t \t \t echo「THIS TEXT REMAINS!」; \t \t} ' –

回答

0

你不是真的給了我們足夠的信息來幫助你,但是我要去使一個受過教育的猜測。您希望文本「這個文本仍然存在..」始終顯示。爲什麼這不會發生是因爲執行永遠不會達到那個點,除非用戶名和密碼發佈在每個請求上,我認爲這不會發生什麼。如果你像這樣重組你的代碼,你可能會得到你期望的結果。

session_start(); 

include 'includes/connect.php'; 

if (isset($_POST['user'], $_POST['pass'])) { 
    //assigning parameters to variables. 
    $user = $_POST['user']; 
    $pass = $_POST['pass']; 

    $sql = 'SELECT id FROM users WHERE username=(:user) AND password=(:pass)'; 

    try { 
     $connect = new PDO("mysql:host=$host; dbname=$dbname;", $username, $password); 
     $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $values = $connect->prepare($sql); 
     $values->bindParam('user', $user, PDO::PARAM_STR); 
     $values->bindParam('pass', $pass, PDO::PARAM_STR); 
     $values->execute(); 
     $row_count = $values->rowCount(); 
     $row = $values->fetch(PDO::FETCH_ASSOC); 

     //////////////////////////// 
     //user and pass section [DB] 
     //$usr_db = $row['username']; 
     //$pwd_db = $row['password']; 
     //////////////////////////// 

     if ($row_count === 1) { 
      $_SESSION['Logged_in'] = $user; 
     } 
    } catch (PDOException $e) { 
     echo 'Error: ' . $e->getMessage(); 
    } 
} 

// Moved the login check down here so it's executed on every request. 
if (array_key_exists('Logged_in', $_SESSION) && $_SESSION['Logged_in'] !== null) { 
    echo 'THIS TEXT REMAINS..'; 
} 
+0

感謝bro完成:D –