2016-05-04 18 views
0

私はログインフォームを作成しました。ユーザーがログインしているときは、ログインしているユーザーだけが利用できるページがあるため、セッションが開始されます。 すべてのユーザーデータはmysqlデータベースに保存されています。 mysqlデータベースに保存されている正しいメール/パスワードでログインしようとすると、ページはhjem.phpというファイルに戻ってきます。ログインしていないユーザーのフロントページになっています。エラーメッセージは表示されません。ログインセッションは意図したとおりに動作しません

PHPコードは、ログインフォームが配置されているページでは、このようになります - このファイルはのconfig.phpファイルは、データベースに接続されて

<?php 
include("config.php"); 
session_start(); 
if($_SERVER["REQUEST_METHOD"] == "POST") { 

    $myemail = mysqli_real_escape_string($db,$_POST['email']); 
    $mypassword = mysqli_real_escape_string($db,$_POST['password']); 

    $sql = "SELECT * FROM users WHERE email = '$myemail' and password = '$mypassword'"; 
    $result = mysqli_query($db,$sql); 
    $row = mysqli_fetch_array($result,MYSQLI_ASSOC); 
    $active = $row['active']; 

    $count = mysqli_num_rows($result); 

    // If result matched $myusername and $mypassword, table row must be 1 row 

    if($count == 1) { 

    $_SESSION['login_user'] = $myemail; 

    header("location: login-hjem.php"); 
    }else { 
    $error = "Your Login Name or Password is invalid"; 
    }} ?> 

login_user.phpと呼ばれています。

ユーザーが正常にログインすると、login-hjem.phpと呼ばれるページにユーザーが誘導されます。このファイルには、スタートで、次のPHPコードを持っています

<?php 
include('config.php'); 
session_start(); 
if(session_destroy()) { 
header("Location: hjem.php"); 
} 
?> 

としては、** hjem.phpと呼ばれるファイル、開始時に言った:

<?php 
include('session.php'); 
?> 

ファイルは次のようになりますsession.phpと呼ばれます*はログインしていないユーザーのためのフロントページで、** dosnt ''にはPHPセッションが含まれています。これは単なるテスト目的のシステムなので、私はパスワードを保護する必要も暗号化する必要もありません。 私が間違ってやったことを助けてくれることを願っています。ありがとう

答えて

1

ちょうどsession_destroy()を呼んでいない。このコマンドを使用するときにすべてのセッションデータを捨てていることは明らかです。

+0

ありがとうございました。それは役に立ちます。ユーザーがログインしているページにログアウトボタンを実装すると 'session_destroy()'を呼び出せますか? – Elfernovich

+1

はい@Elfernovich、 'session_destroy()'はログアウトボタンで呼び出す必要があります;) – D14n4

関連する問題