我很好奇這是否是我的設置問題,或者如果auto_prepend_file自然會導致無限循環(如果不小心使用)。使用auto_prepend_file重定向循環(PHP)
,我有以下行我php.ini
文件
auto_prepend_file = "/etc/prepend.php"
然後我試圖訪問一個簡單的PHP文件
的index.php:
<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML>
<HEAD>
<TITLE>
A Small Hello From The Tester
</TITLE>
</HEAD>
<BODY>
<H1>TESTER</H1>
<P>This is very minimal "hello world" HTML document.</P>
</BODY>
</HTML>
會議文件,我從this site或多或少地抽出。我意識到這不是最先進的安全技術,但它足夠用於測試目的。
passwords.php:
<?php
$USERS['username1'] = 'password1';
$USERS['username2'] = 'password2';
$USERS['username3'] = 'password3';
/**
** Query function to see if we are logged in. If the user is logged in,
* the flow continues. If not, the user is redirected to a login screen.
* @method check_logged
**/
function check_logged(){
global $_SESSION, $USERS;
if (!array_key_exists($_SESSION['logged'],$USERS)) {
header('Location: /etc/login.php');
};
};
?>
的login.php:
<?php
/**
* Initialize session
*/
session_start();
/**
* Include passwords.php which will check to see if we are logged in
*/
include("/etc/passwords.php");
/**
* I think this checks to see if the form has been submitted
*/
if ($_POST["ac"]=="log") {
if ($USERS[$_POST["username"]] == $_POST["password"]) {
//username and password exist in $USERS array
$_SESSION["logged"]=$_POST["username"];
} else {
echo 'Incorrect username/password. Please, try again.';
};
};
if (array_key_exists($_SESSION["logged"],$USERS)) { //// check if user is logged or not
echo "You are logged in."; //// if user is logged show a message
} else { //// if not logged show login form
echo '<form action="login.php" method="post"><input type="hidden" name="ac" value="log"> ';
echo 'Username: <input type="text" name="username" /><br />';
echo 'Password: <input type="password" name="password" /><br />';
echo '<input type="submit" value="Login" />';
echo '</form>';
};
?>
prepend.php:
<?php
/**
* Initialize session
*/
session_start();
/**
* Include passwords.php which will check to see if we are logged in
*/
include('/etc/passwords.php');
/**
* Check to see if we are logged in or not. If not, the
* user is redirected to login.php page
*/
check_logged();
?>
現在,如果我走了在www.example.com/index.php
Web瀏覽器和類型,鉻抱怨
此網頁有重定向循環在 http://www.example.com/etc/login.php的網頁生成了過多的 重定向。清除您的本網站的Cookie或允許第三方Cookie可以解決此問題。如果沒有,它可能是一個服務器 配置問題,而不是您的計算機的問題。這裏有 一些建議:稍後重新加載此網頁。瞭解有關此 問題的更多信息。錯誤310(net :: ERR_TOO_MANY_REDIRECTS):太多的 重定向。
如果您想知道,清除緩存並不能解決問題。看看代碼,任何人都可以告訴我,重定向循環會自然產生嗎?如果是這樣,我該如何解決這個問題。如果沒有,關於爲什麼會發生這種情況的任何想法?如有必要,我也可以發佈我的虛擬主機配置文件。
Puk,我說我會回來並且今天給你一個正確的答案,爲什麼不在我們的討論中選擇這個,這與Q的精神有所不同,要問問什麼Q本質上是相同的六種不同的方式,你只是浪費了回答者的時間 – TerryE 2012-03-10 16:34:59
@TerryE對不起,我回到我們的討論中並進行了詳細闡述 – puk 2012-03-12 09:31:00