2013-03-25 34 views
0

我有兩個文件:index.php和ban.php。PHP禁止列表製作

我想禁止任何使用index.php訪問ban.php的人。

我不能使用mysql(加載問題)或讓php寫入.httaccess(安全問題)。

你會如何解決這個問題?

+2

你可以寫入任何文件嗎?如何使用會話? – 2013-03-25 11:58:24

+2

快速和髒:在ban.php中寫入cookie,在index.php中從cookie中讀取並在cookie設置時重定向 – Waygood 2013-03-25 11:59:13

+2

會話在這裏沒有幫助。 – raina77ow 2013-03-25 11:59:21

回答

0

首先,你需要將IP地址添加到您可以從兩個文件訪問文件,例如:

ban.php

<?php 
$ipAddress = $_SERVER['REMOTE_ADDR']; // get the ip 
$list = file_get_contents('ipbans.txt'); 
$list .= $ipAddress . '\n'; 
file_put_contents('ipbans.txt', $list); 

index.php

​​

這不會檢查是否有重複,因此任何訪問ban.php多次的人都會多次添加他們的IP。這是微不足道的檢查(在ban.php),所以我把它留給你作爲一個練習。

希望這會有幫助

1

創建banlist.txt

<? 
// In ban.php 
$fp = fopen('banlist.txt','a+'); 
fwrite($fp,$USER_IP); 
?> 

<? 
// In index.php 
$list = file(banlist.txt); 
if(in_array($USER_IP,$list)){ 
    header('Location:ban.php'); 
    die(); 
} 
?> 
+1

雖然這會起作用(與vanneto的解決方案相同),但一旦列表變爲幾千條記錄(即每個請求的數千個字符串比較,禁止或不允許),它將不會很好地擴展。相反,你可以做一個簡單的字符串搜索,而不是使用file()你:$ is_banned =(strpos(file_get_contents(「banlist.txt」),$ USER_IP)!== false); ..乾杯 – smassey 2013-03-25 12:12:25

+0

@smassey你是對的,但這只是思考的方向。 – Narek 2013-03-25 12:17:13