本文目录一览:
- 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判断就可以了,你先尝试一下