2017-07-07 18 views
-2

私はphpを初めて使い、データベースを使わずにセッションからログインページを作成しようとしました。ユーザーが正常にログインすると、 "portfolio.php"ページにリダイレクトされます。 15分後に有効期限が切れますが、ユーザーが無作為に "portfolio.php"をURLとして入力するとログインページにリダイレクトされます。ユーザーがログインに成功した後にそのページ( "portfolio.php")にリダイレクトする必要があります。 ここに私の "login.php" ページコード:セッション変数を使用したPHPログインページ

<?php 
session_start(); 
include("functions.php"); 
$message=""; 
if(count($_POST)>0) { 
    if($_POST["user_name"] == "admin" and $_POST["password"] == "admin-1") { 
     $_SESSION["user_id"] = 1001; 
     $_SESSION["user_name"] = $_POST["user_name"]; 
     $_SESSION['loggedin_time'] = time(); 

    } else { 
     $message = "Invalid Username or Password!"; 
    } 
} 
if(isset($_SESSION["user_id"])) { 
    if(!isLoginSessionExpired()) { 
     header("Location:portfolio.php"); 
    } else { 
     header("Location:logout.php?session_expired=1"); 
    } 
} 
if(isset($_GET["session_expired"])) { 
    $message = "Login Session is Expired. Please Login Again"; 
} 
?> 

portfolio.phpコード:

<?php 
session_start(); 
include("functions.php"); 
if(isset($_SESSION["user_id"])) { 
    if(isLoginSessionExpired()) { 
     header("Location:logout.php?session_expired=1"); 

    } 
} 

?> 

funcation.phpコード:事前に

<?php 
function isLoginSessionExpired() { 
    $login_session_duration = 10; 
    $current_time = time(); 
    if(isset($_SESSION['loggedin_time']) and isset($_SESSION["user_id"])){ 
     if(((time() - $_SESSION['loggedin_time']) > $login_session_duration)){ 
      return true; 
     } 
    } 
    return false; 
} 
?> 

感謝。

+0

_「それは、ログインページにリダイレクトされます代わりに、ユーザーがログインに成功した後にそのページにリダイレクトする必要があります。 " - 何をログインページにリダイレクトしたいのですか?_after_ login?それはあまり意味がありません。 – CBroe

+0

説明を紛らわしく更新する必要があります。 –

+0

問題はなんですか?ログインフォームはどこですか?また、 '$ _GET [" session_expired "]' 'login.php'の行は入力ミスですか? – Himal

答えて

0

私はあなたが15分

ため$login_session_duration = 900;$login_session_duration = 10;を変更する必要がありますし、あなたのportfolio.phpがあるべき ...あなたのコードを見てきました:

<?php 
session_start(); 
include("funcation.php"); 
if(isset($_SESSION["user_id"])) { 
    if(isLoginSessionExpired()) { 
     header("Location:login.php?session_expired=1");  
    } 
} else { 
    header('Location:login/index(ur html input file)'); 
} 

?> 
+0

ありがとう、それはたくさんの仕事です。 – Shubham

+0

@Shubham no problm –

0

portfolio.phpファイルにチェックを入れていないことがわかります。 作成したすべてのPHPページでセッションログインが有効かどうかを確認してください。たとえば、あなたのfunctions.phpファイルでセッションヘルパーを追加します。

function session_helper() { 
    if(isset($_SESSION["user_id"])) { 
     if(isLoginSessionExpired()) { 
     header("Location:logout.php?session_expired=1"); 
     } 
     // check valid user id? 
     // session is fine, let the code continue 
    } else { 
    // no session user_id so redirect to login or 
    // any other welcome page 

    header("Location:login.php"); 
    } 

} 

は、あなたには、すべてのファイルで、そのメソッドを使用することができportfolio.php

<?php 
    session_start(); 
    // the new functions.php file 
    include("functions.php"); 
    session_helper(); 

    // more code 
?> 

あなたがPHPを行うことを計画している場合あなたが気づいていないかもしれないセキュリティ問題について気になるだけでなく、より安全なユーザー認証を組み込むことを考慮して、Php Frameworkを使用することを検討することができます。

+0

セキュリティで保護されたページがあり、指定した名前とメールIDで登録してもらいたいです。また、電子メールIDを確認したいと思います。これは、ユーザーがページのリンクを取得してからアクセスできるという要件があるため、私がやろうとしていることです。プラセーはこれで私を助けてくれますか? – Shubham

+0

あなたはあなたの質問を改革することができます.. – Kruser

関連する問題