2017-08-31 12 views
0

私のサイトにログインを追加しましたが、1つのこと以外はすべて動作します:ログインしていないユーザーがlogin.phpにリダイレクトされない場合、PHP - ログアウトされていません

process.php(ログインプロセス):

if ($row['username'] == $username && $row['password'] == $password && ("" !== $username || "" !== $password)){ 
    $_SESSION["users"] = $row['username']; 
    $_SESSION['login'] = true; 
    header("Location: https://ferapps.altervista.org/tia/inde.php"); 
} else { 
    header("Location: error.php"); 
} 

logout.php:

include("content/login_verif.php"); 

login_verif.php:私は追加のウェブサイトのすべてのページ

session_start(); 
$_SESSION['users'] = NULL; 
$_SESSION['login'] = false; 
header("location: https://ferapps.altervista.org/tia/content/login/login.php"); 
exit(); 

session_start(); 
if $_SESSION['login'] != true; 
{ 
    header('Location: https://ferapps.altervista.org/tia/content/login/login.php'); 
    exit(); 
} 

答えて

0

あなたのホームページにセーフガードを設定するだけです。 $_SESSION['users']$_SESSION['login']の両方が設定されているかどうかを確認してください。いずれかが設定されていない場合は、ユーザーをログインページにリダイレクトします。

login_verif.php

session_start(); 
if(!isset($_SESSION['users']) || !isset($_SESSION['login'])){ 
    // redirect the user to login page 
    header('Location: https://ferapps.altervista.org/tia/content/login/login.php'); 
    exit(); 
} 

と、次のようにこのlogin_verif.phpページが含まれ、

require_once("content/login_verif.php"); 

そして、それはあなたがユーザーをログアウトする方法はありません。あなたは適切にセッションをCookieをクリアして破壊する必要があるので、あなたのlogout.phpページは次のようにする必要があります:内容を出力するために使用され

logout.php

<?php 
    session_start(); 
    if(!isset($_SESSION['users']) || !isset($_SESSION['login'])){ 
     // redirect the user to login page 
     header('Location: https://ferapps.altervista.org/tia/content/login/login.php'); 
     exit(); 
    } 

    $_SESSION = array(); 
    if(isset($_COOKIE[session_name()])){ 
     setcookie(session_name(),'',time()-42000,'/'); 
    } 
    session_destroy(); 

    // redirect the user to login page 
    header('Location: https://ferapps.altervista.org/tia/content/login/login.php'); 
    exit(); 
?> 
+0

ありがとうございました – SkateIV

+0

@SkateIVよろしくお願いします!お役に立てて嬉しいです。 :-) –

0
file_get_contents() 

ファイルの文字列として。

代わり

include("content/login_verif.php"); 

をしたいです。そして

if $_SESSION['login'] != true; 

if ($_SESSION['login'] != true) 
+0

私は "include"を書いて間違っていました – SkateIV

+0

編集された答え、もう一度チェックしてください。 – deg

0

ここでの問題は、 "のfile_get_contents" の誤用であるべきです。

http://php.net/manual/en/function.file-get-contents.phpで説明されているfile_get_contentsは、別のファイルの内容を取得して文字列形式で返す方法です。

ファイルを別のファイルコードで拡張したい場合は、requireおよび/またはincludeを調べる必要があります。あなたの現在のコードの場合

require("content/login_verif.php"); 

については

file_get_contents("content/login_verif.php"); 

を交換に関する情報が含まれます:必要に関するhttp://php.net/manual/en/function.include.php

情報:http://php.net/manual/en/function.require.php

+0

私は知っている、私は質問に書くのは間違っていた – SkateIV

関連する問題