2017-01-10 18 views
1

イントラネット用に構築している内部Webサイトのログイン用phpフォームを作成しました。 1つのログインシステムでいくつかの異なるWebサイトを組み合わせるつもりです。私は、ユーザーがURLのいずれかに直接アクセスし、ログインしていない場合にログインページにリダイレクトする方法を確認したいと考えています。ユーザーがログインしているかどうかを確認する方法

ユーザー名とパスワードをCookieに記録しました。私はこれが安全ではないことを知っていますが、これも企業のイントラネットの社内Webサイトです。だから私は多くのセキュリティを必要としません。ログインシステムは、各ユーザーが何をしているのかを追跡するだけです。

これは私のログインコードですが、ユーザーがログインしているかどうかを確認する方法を理解する必要があります。

//get info from login form 
if(isset($_POST['login'])) { 

$username = $_POST['username']; 
$password = $_POST['password']; 
$rememberme = $_POST['rememberme']; 

$username = mysqli_real_escape_string($connection, $username); 
$password = mysqli_real_escape_string($connection, $password); 
//query users table 
$query = "SELECT * FROM users WHERE username = '{$username}' "; 
$select_user_query = mysqli_query($connection, $query); 

if(!$select_user_query) { 

    die("Query failed" . mysqli_error($connection)); 

} 
//loop through user info and assigning to variables 
while($row = mysqli_fetch_array($select_user_query)) { 

    $db_id = $row['user_id']; 
    $db_username = $row['username']; 
    $db_password = $row['user_password']; 
    $db_firstname = $row['user_firstname']; 
    $db_lastname = $row['user_lastname']; 
    $db_role = $row['user_role']; 

} 

//validate username and password 
if($username === $db_username && $password === $db_password) { 
    //create cookie to remember user 
    if(isset($rememberme)) { 
     //set cookie to last one year 
     setcookie('username', $_POST['username'], time()+60*60*24*365, '/', 'localhost'); 
     setcookie('password', md5($_POST['user_password']), time()+60*60*24*365, '/', 'localhost'); 
    } else { 
     //cookie expires when browser closes 
     setcookie('username', $_POST['username'], false, '/', 'localhost'); 
     setcookie('password', md5($_POST['user_password']), false, '/', 'localhost'); 
    } 

    //if user exists send to dashboard 
    $_SESSION['username'] = $db_username; 
    $_SESSION['user_firstname'] = $db_firstname; 
    $_SESSION['user_lastname'] = $db_lastname; 
    $_SESSION['user_role'] = $db_role; 

    header("Location: ../dashboard.php "); 

} else { 

    header("Location: ../index.php"); 

} 

} 
+0

あなたは2分以上毎にユーザーIDでajax呼び出しを行うことができます。ユーザーをテキストファイルに保存します。アヤックスが止まったら、ユーザーはもうアクティブではないことを知ってください –

+0

@RoljhonどうすればDBでそれを行うことができますか?私はまだ少しPHPとmysqlの新しいです – JBaldwin

+1

この質問を見て、あなたの質問に答えるかどうかを参照してください。私はあなたがしたいことが100%であるかどうかは分かりませんが、それは近いかもしれません。 http://stackoverflow.com/questions/31031344/php-how-to-check-if-user-is-already-logged-in-and-otherwise-redirect-to-login-p – lostInTheTetons

答えて

1

を追加する必要がありますファイルを作成し、ユーザーがログインしているかどうかを確認し、それらをリダイレクトする方法です最初に訪問したページに移動します。

<?php 

session_start(); 
if(!(isset($_SESSION['username']))) 
{ 
    header("Location: index.php"); 
} 

?> 

次に、あなたが使用するWebページのすべてに、そのファイルが含まれます:ユーザーがログインしているかどうかを確認するために

最初のチェック。また、URLのセッションを作成します。これはあなたのページの上部に移動します:

<?php include "includes/login-check.php"; ?> 
<?php $_SESSION['url'] = $_SERVER['REQUEST_URI']; ?> 
<?php ob_start(); ?> 

次に、右側HTMLのボディにこの追加:URLセッションのログインファイルのチェック中に次に

<input type="hidden" name="redirurl" value="<? echo $_SERVER['HTTP_REFERER']; ?>" /> 

を:

//check to see what page user first visited 
    if(isset($_SESSION['url'])) { 
     $url = $_SESSION['url']; 
    } else { 
     $url = "../index.php"; 
    } 
    //redirect user to page they initially visited 
    header("Location: $url"); 

これはあなたの質問に完全に回答する必要があります。

+0

これは完璧で、私が必要としていたすべてです。素晴らしい、ありがとう! – JBaldwin

1

、あなたのシステムのすべてのファイルに先頭に含めると、次のコード

ここ
session_start(); 
if(!(isset($_SESSION['username']))) 
{ 
    header("Location:login.php") 
} 
関連する問題