本文目錄一覽:
- 1、php微信開發,微信有什麼可以獲取的唯一標識一個用戶的變數嗎?怎麼獲取?
- 2、php 如何獲取客戶端唯一標識
- 3、thinkphp怎麼生成唯一標識
- 4、php 如何獲取客戶端唯一標識?
- 5、PHP能否獲取客戶端唯一標識(cpu序列號,mac地址等)
- 6、php如何獲取客戶端唯一標識符IP?mac地址?
php微信開發,微信有什麼可以獲取的唯一標識一個用戶的變數嗎?怎麼獲取?
唯一標識是openid,獲取方法參考微信api相關文檔,這個回答好像是廢話,但我只能這麼回答
php 如何獲取客戶端唯一標識
標識一個客戶端:
首先服務端就排除了,因為可以用多個用戶登錄。
然後看客戶端有什麼辦法,只能是採用客戶端存儲的方式
1、cookie 這個你排除了,可能是因為清除cookie比較容易操作。但這也是一種辦法。
2、客戶端的dom存儲,這個有一定的局限,只有新的瀏覽器支持。而且同樣可以刪除。
3、插件方式,這個需要客戶安裝,一般不可能,但可以利用比較流行的安裝率比較高的插件,例如flash,採用flash的本地存儲記錄。同樣可以刪除。
綜上,不可能完全的防止,但可以採用幾種技術的結合,這樣可以增加重複發布的難度。
但是還是那句話,是否重複發表信息是由用戶決定的。如果用戶認為重複發布的成本高於了解除這個限制的成本,那麼也就降低了用戶重複發布的幾率。
這個沒有完美的解決方案,只能是儘力。
thinkphp怎麼生成唯一標識
1、md5(time() . mt_rand(1,1000000));
這種方法有一定的概率會出現重複
2、php內置函數uniqid()
uniqid() 函數基於以微秒計的當前時間,生成一個唯一的 ID.
w3school參考手冊有一句話:”由於基於系統時間,通過該函數生成的 ID 不是最佳的。如需生成絕對唯一的 ID,請使用 md5() 函數”。
3、官方uniqid()參考手冊有用戶提供的方法,結果類似:{E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7}
public function create_guid($namespace = ”) {
static $guid = ”;
$uid = uniqid(“”, true);
$data = $namespace;
$data .= $_SERVER[‘REQUEST_TIME’];
$data .= $_SERVER[‘HTTP_USER_AGENT’];
$data .= $_SERVER[‘LOCAL_ADDR’];
$data .= $_SERVER[‘LOCAL_PORT’];
$data .= $_SERVER[‘REMOTE_ADDR’];
$data .= $_SERVER[‘REMOTE_PORT’];
$hash = strtoupper(hash(‘ripemd128’, $uid . $guid . md5($data)));
$guid = ‘{‘ .
substr($hash, 0, 8) .
‘-‘ .
substr($hash, 8, 4) .
‘-‘ .
substr($hash, 12, 4) .
‘-‘ .
substr($hash, 16, 4) .
‘-‘ .
substr($hash, 20, 12) .
‘}’;
return $guid;
}
php 如何獲取客戶端唯一標識?
回答你第一個問題, 相對情況下, 獲取客戶端, 只能是ip, cookie
但,就如你說的, ip會變, cookie會排除, 所以嘛, 沒有辦法了!
不像桌面應用程序(軟體), 由於是直接運行在用戶電腦的上的, 所以可以獲取網卡地址, 這個比較唯一(但也不絕對, 有軟體可以改網卡地址)
但php一般是網站形式, 獲取客戶端的網卡地址, 需要用戶授權允許, 否則是獲取不到的!
PHP能否獲取客戶端唯一標識(cpu序列號,mac地址等)
許可權足夠的情況下,可以輸出cpu信息php調用:$a = exec(‘cat /proc/stat’);php有個執行方式是用“包裹字元串,同樣可以在系統上直接執行同樣需要足夠的許可權。
php如何獲取客戶端唯一標識符IP?mac地址?
?php
class GetMacAddr{
var $return_array = array(); // 返回帶有MAC地址的字串數組
var $mac_addr;
function GetMacAddr($os_type){
switch(strtolower($os_type)){
case “linux”:$this-forLinux();break;
default:$this-forWindows();break;
}
$temp_array = array();
foreach ( $this-return_array as $value ){
if ( preg_match( “/[0-9a-f][0-9a-f][:-]”.”[0-9a-f][0-9a-f][:-]”.”[0-9a-f][0-9a-f][:-]”.”[0-9a-f][0-9a-f][:-]”.”[0-9a-f][0-9a-f][:-]”.”[0-9a-f][0-9a-f]/i”, $value, $temp_array ) ) {
$this-mac_addr = $temp_array[0];
break;
}
}
unset($temp_array);
return $this-mac_addr;
}
function forWindows() {
@exec(“ipconfig /all”, $this-return_array);
if ( $this-return_array )
return $this-return_array;
else{
$ipconfig = $_SERVER[“WINDIR”].”\system32\ipconfig.exe”;
if ( is_file($ipconfig) )
@exec($ipconfig.” /all”, $this-return_array);
else
@exec($_SERVER[“WINDIR”].”\system\ipconfig.exe /all”, $this-return_array);
return $this-return_array;
}
}
}
//—實例化類
$mac = new GetMacAddr(PHP_OS);
echo $mac-mac_addr;
echo “br /”;
echo md5($mac-mac_addr);
?
以上代碼是獲取mac地址的代碼,在網上抄的,但實測有效,括弧,我x,我第一次知道原來php也可以執行命令行。。。
至於如何限制,應該是去截取mac的一部分經行if判斷就可以了,你先嘗試一下
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/286266.html