2017-05-03 10 views
-2

これは私のログインコードセッションが宣言なっていません

global $connection; 

if (isset($_POST['user_login'])) { 

    $email = $_POST['email']; 
    $password = $_POST['password']; 
    $password= md5($password); 

    $login = mysqli_query($connection, "SELECT * FROM user WHERE email ='{$email}' AND password = '{$password}' "); 
    if(!$login) { 
     die("QUERY FAILED" . mysqli_error($connection)); 
    } 

    if(!$login || mysqli_num_rows($login) == 0) { 

     echo "<div class='alert alert-danger' role='alert'> <strong>Your Username or Password is invalid!</strong></div>"; 

    } else { 
     $_SESSION['user_id'] = $user_id; 
     $_SESSION['email'] = $email; 
     $_SESSION['username'] = $username; 

     header('Location: index.php'); 
    } 
} 

私はすべてのセッションを表示するには、ますprint_r関数を使用しますが唯一のセッションの電子メールが宣言なっているです。 user_idとusernameが宣言されないのはなぜですか?私は何を間違えたのですか?

+1

セッションを開始しましたか? –

+0

あなたのコードは[** SQLインジェクション**](https://en.wikipedia.org/wiki/SQL_injection)攻撃に対して脆弱です。 [** mysqli **](https://secure.php.net/manual/en/mysqli.prepare.php)または[** PDO **](https://secure.php.net/)を使用してください。 manual/en/pdo.prepared-statements.php)は、[** this post **](https://stackoverflow.com/questions/60174/how-can-i-prevent-sql - インジェクション - イン - php)。 –

+0

MD5はパスワードハッシングでは不十分です。 ['password_hash()'](http://us3.php.net/manual/en/function.password-hash.php)と['password_verify()'](http://us3.php.net/ manual/en/function.password-verify.php)を使用してください。 –

答えて

0
  1. session_start();を先頭に忘れている可能性があります。
  2. あなたのセッションでuser_idusernameを使用しているようですが、あなたのPHPコードのどこからでもフェッチされません。したがって、あなたは$loginレスポンスからそれらを取得し、使用することを忘れるかもしれません。

あなたのコードがSELECTクエリに基づいてuser_idusernameを使用するように見えるので、これは仮定です。だから、

、あなたが選択クエリから使用されているすべてのパラメータがあり、このコードを使用して試すことができます:あなたがセッションにinitilizedない変数またはNULL値を配置しようとすると

session_start(); 
global $connection; 

if (isset($_POST['user_login'])) { 

    $email = $_POST['email']; 
    $password = $_POST['password']; 
    $password= md5($password); 

    $login = mysqli_query($connection, "SELECT * FROM user WHERE email ='{$email}' AND password = '{$password}' LIMIT 1"); 
    if(!$login) { 
     die("QUERY FAILED" . mysqli_error($connection)); 
    } 

    if(!$login || mysqli_num_rows($login) == 0) { 

     echo "<div class='alert alert-danger' role='alert'> <strong>Your Username or Password is invalid!</strong></div>"; 

    } else { 
     // get user_id and username fetched from your Select query 
     while($row = $login->fetch_assoc()) { 
      $_SESSION['user_id'] = $row['user_id']; // assuming user_id as a column 
      $_SESSION['email'] = $email; 
      $_SESSION['username'] = $row['username']; // assuming username as a column 
     } 
     header('Location: index.php'); 
    } 
} 
+0

落札した人は、ここで理由を少なくとも説明しなければなりません。 :) –

+0

私のdownvoteではなく、コードの束をダンプし、 "これを試して"、何が変更されたのかについての説明を追加する代わりに、なぜ答えはOPと将来の読者のためにはるかに良い。 – Qirel

+0

@Satish Saini - ありがとうございました。 :)申し訳ありませんが、彼らは私にアップを許可していません。 – Unknown

-1

、セッションは発生しません。例外。しかし、キーと値のリスト、init変数またはnull値を追加することはできません。

関連する問題