2015-11-11 53 views
1

對於我的測試環境網站,我希望任何查看它的人都必須在每個會話中輸入一次密碼。當他們的會話開始時,他們輸入密碼並被重定向到他們試圖查看的頁面。所以,我必須在每一頁簡單的密碼保護頁面:我在這裏做錯了什麼?

// For test site, require login 
if (!$_SESSION['loggedIn']) 
{ 
    $pagetarget = $_SERVER['REQUEST_URI']; 
    include "test_login.php"; 
    die(); 
} 

的頂部,然後test.login.php

<?php 
    if ($_POST['password'] == '091u233j12j3') 
    { 
     $_SESSION['loggedIn'] = true; 
     header("Location: " . $pagetarget); 
     die(); 
    } 
?> 

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>Test Environment Login</title> 
</head> 
<body> 
    <form method="POST"> 
     <p>Enter password to unlock <b>test.mysite.com</b>: <input type="text" name="password" /><input type="submit" /></p> 
     <p>You will be redirected to the page you tried to access.</p> 
     <input type="hidden" name="pagetarget" value="<?php echo $pagetarget; ?>" /> 
    </form> 
</body> 
</html> 

但網頁重定向無法工作。我究竟做錯了什麼?

+0

只是一個想法,但你不能使用JavaScript和document.location重定向的頁面? ...例如document.location.href =「http://www.google.com」; – DivineChef

+1

您是否檢查頁面重定向的值,因爲您不在同一個文件中? –

+2

你有沒有['session_start()'](http://php.net/manual/en/function.session-start.php)? –

回答

2

您需要在每個腳本的開始處致電session_start(),然後才能使用$_SESSION

例子:

session_start(); 
if (!$_SESSION['loggedIn']) 
{ 
    $pagetarget = $_SERVER['REQUEST_URI']; 
    include "test_login.php"; 
    die(); 
} 
+0

工作。但爲什麼在每個腳本的開始?就像我說過的,我希望這是一個完成的過程。 –

+0

@PeterThiel它只需要在檢查(或設置)'$ _SESSION ['loggedIn']'或任何其他'$ _SESSION'變量的腳本上完成。如果您在每個頁面上檢查它,則必須在每個頁面上執行此操作。 –

0

試試這個:

// For test site, require login 
session_start(); 
if (!$_SESSION['loggedIn']) 
{ 
    $pagetarget = $_SERVER['REQUEST_URI']; 
    include "test_login.php"; 
    die(); 
} 

test_login.php

<?php 
if ($_POST['password'] == '091u233j12j3') 
{ 
    $_SESSION['loggedIn'] = true; 
    header("Location: " . $_POST['$pagetarget']); 
    die(); 
} 
?> 

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
(...) 
+0

在包含此代碼之前,他會檢查'$ _SESSION ['loggedIn']''仍然失敗。 'session_start()'應該在檢查之前進行。 –

相關問題