2015-09-11 28 views
1

我在網站上搜索到關鍵字,例如「PHP數組錯誤」和「數據未被PHP發現」,但我無法找到符合我需要的答案。 我正在用文本文件製作一個非常基本的密碼保護網站。我將在下面包含代碼,但是出現的錯誤是;PHP數組表示非阻力

Array () count of banned = 1 
Notice: Undefined index: banned[0] in C:\xampp\htdocs\dns\domains\bank\login.php on line 17 

但我不確定爲什麼。代碼是在PHP中,並在下面。

<?php 
//variables 
$user = $_POST["user"]; 
$pass = $_POST["password"]; 
$banned = array("admin"); 
$users = array("admin"); 
$c = count($users); 
$users = print_r(glob("../users/*.txt")); 
$r = count($banned); 
$k = $r - 1; 
echo "count of banned = $r"; 
$loop = 0; 
$isbanned = true; 

//check if banned 
while ($loop <= $k) { 
if ($GLOBALS["user"] == $GLOBALS["banned"][$loop]) { 
echo "sorry but this account is banned from this site!"; 
$GLOBALS["isbanned"] = true; 
} 
$loop = $loop + 1; 
} 
if ($isbanned == false) { 
//if you are not banned, check if you are even a proper user with password! 
$loop = 0; 
while ($loop <= $r) { 
if ($GLOBALS["user"] == $GLOBALS["users[$loop]"]) { 
$person = print_r(file($GLOBALS["user"] . ".txt")); 
if ($GLOBALS["pass"] == $GLOBALS["person[0]"]) { 
header('location /welcome.php'); 
die(); 
} 
} 
$loop = $loop + 1; 
} 
} 
?> 

以下是我的文件夾內容。 index.php只是一個基本的表單,它的工作原理。

-index.php 
-login.php 
-Users 
|-user.txt 

並且對所有的剪貼板都感到抱歉,但是每個.txt文件的內容都跟隨着;

1234 
2000 

第一行是密碼,後面的項目的第二行是現金。 如果有任何其他信息,你希望看到我會盡力得到它。 謝謝你審查我的問題。 -------------------------------------- Part 2 --------- --------------------------- 謝謝Barmar回答第一個問題。 修復代碼後,如果在這裏不正確,系統仍然不會將文件的內容提取到數組中,所以它仍然不能用作登錄系統。我知道我應該讓這個問題成爲一個新問題,但似乎更適合這樣。感謝您審覈我的問題。

+0

全局,全局變量,全局.... – MozzieMD

回答

2

$GLOBALS["banned[$loop]"]應該是$GLOBALS["banned"][$loop]。該索引不是變量名稱的一部分。該變量包含一個數組,然後您需要對其進行索引。

但根本沒有必要使用$GLOBALS。您的代碼位於全局範圍內,因此它可以正常訪問全局變量。這條線應該是:

if ($user == $banned[$loop]) 

如果你想訪問一個函數中的全局變量,你可以使用global聲明:

global $user, $banned, $users, $is_banned;