2017-02-21 6 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 DONE!私はセッションを削除するまで、ページにとどまります。私はその場合も同じようにしたい。 –

+0

@KlausGF。私が得ている問題はセッションが残っていないことです。どうしてか分かりません。私は試みましたが、テキストはページに残っていません。 - 'if(isset($ _ SESSION [" Logged_in "])){ \t \t \tエコー"このテキストは残っています! \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

ありがとう仲間:D –

関連する問題