2012-08-31 29 views
0

好吧我想允許每個頁面有一個用戶1視圖,然後向他們發送一個cookie,以阻止他們再次查看該頁面,但我不喜歡cookie,我會這麼做與IP,但我寧願通過餅乾。這可能嗎?我會怎麼做?1查看IP或設置Cookie

+2

但是,當cookie被清除時,他將能夠查看該頁面。 –

+0

任何用戶都可以查看該頁面,或者用戶是否已在您的網站註冊? – Abhishek

+0

任何用戶,來賓和註冊,我都會通過IP來做到這一點,但我不希望他們家中的每個人都無法查看它 –

回答

1

簡單的答案:

if(isset($_COOKIE['myCookie'])){ 
    die('Not allowed! Only one view per user!'); 
} 
else{ 
    setcookie('myCookie', true); 
} 
//content here 

與會議做它:

session_start(); 
if(isset($_SESSION['mySession'])){ 
    die('Not allowed! Only one view per user!'); 
} 
else{ 
    $_SESSION['mySession'] = true; 
} 
//content here 

重定向而不是顯示一個醜陋的錯誤:

if(isset($_COOKIE['myCookie'])){ 
    header('Location: error.php'); 
    exit; 
} 
else{ 
    setcookie('myCookie', true); 
} 
//content here 
+0

將投票的最佳答案,歡呼 –

+1

這些都不會工作在更長的時間跑。 –

+1

不幸的是,會話還基於cookie或在鏈接中保留ID - 因此刪除Cookie緩存將會阻礙兩者。這同樣適用於我的「答案」。從根本上說,這只是不正確的方法 – Basic

0

這很可能

<?php 
    if(isset($_COOKIE['blocked'])) {die('Access denied');} 
    setcookie("blocked", true); 
?> 

當然,繞過(刪除cookie)是微不足道的。

你得到的真正問題是一個信任問題。 Cookies由客戶發送給您,您應該永不信任客戶。

基本上,如果你想限制訪問權限,你需要在服務器端記錄一些無法更改的內容(例如強制用戶登錄,與用戶關聯),或者接受這一點,提出一個非常不安全的防守。

請注意,IP地址是不好的,因爲公司中的許多用戶可能會看起來有相同的IP地址 - 所以阻止一個會阻止所有IP地址。此外,一些用戶在家裏就可以只通過斷開/重新連接的調制解調器/路由器

+0

你說得對,但我只想拒絕每個人的觀點(電腦) –

+0

它有多重要?如果這不重要,像這樣的cookie就沒問題 - 但是即使是具有高級用戶知識的人也可以繞過它。您或者需要不正確地識別每個用戶,記錄誰在瀏覽頁面並阻止服務器端,或者相信客戶端告訴您真相,並希望它沒有以任何方式修改。基本上,沒有其他選擇。您的解決方案的優勢取決於:a)您能夠識別訪客的程度如何; b)客戶對您檢查的細節進行欺騙的難度。 Fudging餅乾是微不足道的 – Basic

+0

不是非常重要。如果他們繞過它(它不是管理面板等),他們可以編輯任何內容。只是一段文本,另一個用戶希望它們只查看一次。 –

0
if (!isset($_COOKIE['visited'][$page_id])) 
{ 
    // leave him view the page 
    $_COOKIE['visited'][$page_id] = true; 
} 
else 
{ 
    // get him out of there 
} 

這需要在索引/頁的begginning寫入獲得一個新的IP地址。

但是,我不建議這樣做,因爲客戶端可以輕鬆編輯Cookie。 SESSION是安全的方式。

+0

如果用戶刪除會話cookie,會發生什麼情況? – Basic

+0

@Terry Seidler:上帝,你是錯的。基本:會話被破壞。 – Cosmin

0

我會避免使用:

A)餅乾來限制訪問(可以通過該客戶端編輯)

B)的IP地址(可以很容易地改變)

爲@Basic。說,也許讓他們登錄,只讓該用戶查看一次。

+0

他們可以創建另一個帳戶:( –

+0

@NateCorky這就是爲什麼大多數網站強制一個電子郵件地址可以檢查爲唯一的。當然,現在每個人都有多個地址,所以這也是不好的。這是一個持續時間很長的遊戲的一個終點,它是在努力和安全之間找到一個折中的辦法,最極端的情況是用戶可以重新格式化他們的系統(或者說不那麼劇烈,交換瀏覽器),現在絕對沒有辦法知道它是同一個人,面對面會面並給他們一個帳戶,但不能保證每個用戶都是獨一無二的 – Basic

+0

是的,這是不幸的:(但我想讓客人看到它,只有註冊,如果所有者文本文件想要爲每個人定義1個視圖,這將是不可能的。:(我將暫時使用cookie,直到我構建一個安全的系統(ish) –