2016-12-17 4 views
0

SQLクエリで選択された行の数が> 0で、それ以外の場合にfalseに設定されている場合、ログインセッションをtrueに設定するのに問題があります。私が有効なログインを入力すると、何も印刷されません(私はそれが動作することを確認するために印刷しています)。そして、無効なログインをしたときにセッションを印刷しますが、ログインしても値はありません。私はまた、入力が正しいことを確認するためにユーザー名とパスワードを印刷しています。私は一般的にPHPとウェブ開発に新しいですし、任意の助けに感謝します!ありがとう。セッションのログイン(PHP)?

PHP:

<?php 

SESSION_START(); 

$servername = "localhost"; 
$username = "MY USERNAME"; 
$password = "MY PASSWORD"; 
$dbname = "MY USERNAME"; 

$conn = new mysqli($servername, $username, $password, $dbname); 

if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$username = $_POST['usernameinput']; 
$password= $_POST['passwordinput']; 
$_SESSION["loggedin"] = false ; 

echo ($username); 
echo ($password); 

$result = mysqli_query($conn,"SELECT `user-id` FROM `users` WHERE `username`  = '" . $username. "' AND `password` = '" . $password. "' "); 

if (!$result) { 
    die(mysqli_error($conn)); 
    } 

if(mysqli_num_rows($result) > 0) { 
    $row = mysqli_fetch_array($result); 
    return $row['ID']; 
    $_SESSION["loggedin"] = true; 
}  

print_r($_SESSION); 

$conn->close(); 
?> 
+0

$ row ['ID']を返すのは親切に説明できますか?行う? –

+0

また、なぜ 'return'ですか? –

+0

http://php.net/manual/en/function.return.php * * –

答えて

0

return $row['ID'];は無用であるあなたのケースでは

if(mysqli_num_rows($result) > 0) { 
     $row = mysqli_fetch_array($result); 
     $_SESSION["loggedin"] = $row['user-id']; 
     print_r($_SESSION); 
} 
else { 
     session_destroy(); 
     print 'Username or password is wrong.'; 
} 

を試してみてください。あなたのSQLはuser-idを選択しただけなので。

関連する問題