2010-11-26 78 views
1

我知道你可以通過PHP獲取用戶的IP地址,但是有沒有其他的提示/技巧/腳本可以用來以其他方式識別用戶?識別用戶的其他PHP技巧

+5

確定如何?作爲一個人? – 2010-11-26 10:22:14

回答

2

目前尚不清楚您是否正在運行SBS和Active Directory/LDAP系統,但可以讓您根據其Windows登錄信息提取有關用戶的更多信息。有關於這個話題有很多在那裏的網站:

$_SERVER包含了用戶與訪問該網站的瀏覽器的信息:http://php.net/manual/en/reserved.variables.server.php

你也可以使用getbrowser()將該信息解析爲人類可讀形式:http://php.net/manual/en/function.get-browser.php

0

那麼,最終確定它們的最好方法是設置一個認證系統並讓它們登錄。

或者,您可以嘗試根據一堆不同的數據來識別用戶,例如他們使用的IP和瀏覽器(例如,如果userip = ip & & userbrowser == browser ...)儘管如此,這很容易規避。

檢查$ _SERVER全局以查找可以與之比較的任何其他數據。

儘管我強烈建議實施一個身份驗證系統 - 這是識別用戶的最佳方式。

3

我的公司正在建設的網站上有民意調查和競賽,匿名用戶每天可以投票一次。如何解決這種情況的建議是:

  1. 通過電子郵件確認認證(發送一封電子郵件,一個獨特的鏈接點擊)
  2. IP地址
  3. 餅乾

的E-電子郵件不會失敗,但用戶可以擁有很多電子郵件地址,而且這很麻煩(填寫表格,打開電子郵件,點擊鏈接 - 許多人都以這種方式阻止)。

IP不可靠,因爲ADSL用戶每次連接到互聯網時都會有不同的IP(至少是我國最大的ADSL提供商)。另外,代理是一個問題。

Cookies可以很容易地清除/禁用,如果他/她安裝了多個瀏覽器,用戶將被允許多次投票。如果cookie是通過JS設置的,那麼禁用JS的瀏覽器也不會受此影響。

我們決定#2和#3的組合是最好的折衷,但沒有完美的方式。

0

如果是內部只有網站,那麼你可以使用ident - 也可以參考RFC1413。有基於PHP的實現(嘗試谷歌)。請注意,這需要客戶端運行一個可從您的代碼運行的Web服務器訪問的ident服務器。您不會說客戶端的操作系統 - 有Linux服務器,Unix服務器,Apple Mac服務器和MSWindows服務器。請注意,ident響應未經過身份驗證,可以(相對)輕易僞造。

微軟對這個問題的解決方案是NTLM - 但這是一個正確管理的PITA。