JavaScript对象/变量是否具有某种唯一标识符?就像Ruby一样object_id.我不是指DOM id属性,而是某种某种类型的内存地址.
我正在开发一个餐厅应用程序.我在我的应用程序中使用One Signal发送通知.在这里,当我下订单时,我需要为特定用户发送一个信号的唯一ID,以获得"您的订单已成功放置...正在进行中.请等待"的通知.为此,我需要用户的One Signal用户ID.我怎么才能得到它?我是One Signal的新手.请帮我.
我知道ClientID用于服务器端的javascript和UniqueId,ClientID使用下划线(_),而UniqueId在asp.net 2.0中使用美元符号($).但我没有得到的是为什么使用两个不同的id.为什么不能只使用或使用下划线或在服务器端和客户端使用美元符号.有人可以解释一下吗?
我目前的方法是这样的:
SELECT TOP 1 ID FROM DATAENTRY ORDER BY ID DESC
Run Code Online (Sandbox Code Playgroud)
这假设最新插入的项始终具有最高的唯一ID(主键,自动增量).这里闻起来有点不对劲.
备择方案?
uniqid()函数返回一个13位长的十六进制数.根据php.net网站上的规范,该函数用于microtime生成唯一值.
但是microtime以字符串格式返回数字如下:
"0.70352700 12689396875"
Run Code Online (Sandbox Code Playgroud)
这基本上是自1970年以来经过的微秒和秒数.这是一个9 + 11位十进制数.
将20十进制数转换为十六进制将导致16位十六进制而不是13位数.
我也想过取出"0".似乎永远不会改变的部分,以及似乎始终为"00"的microsec部分的最后两位数字.这样做十进制数字只有9 + 11-3位长,但是当转换成十六进制时仍然是十进制数字的17位数将导致14位十六进制数字不是13.
我不是有兴趣以另一种方式获得一个独特的ID或更长/更独特的ID!我只会问,如果有人知道为什么只能退回13个数字.
这似乎nosense:如果uniqid返回一个不到两位数microtime,这意味着microtime给出的结果是更独特返回的那些的uniqid.
我使用数据类来为我的数据提供模板,我想从数据类中的数据计算一个唯一的id,这样我就可以检查具有该数据的模板是否已经在缓存中,然后提供该版本.
所以从类数组中获取唯一id的函数可以帮助我
像这样的东西工作,但相当昂贵的md5(序列化($ classdata))
我希望有一些功能来获取唯一的ID而不序列化所有数据,或至少不必在PHP中
在此先感谢,最好,保罗
编辑:我很快就庆祝,唯一的id在当前实例中只是相同的,重新启动相同的脚本会产生另一个id,然后当然不是在使用的cache testscript中:
<?php
class foo {}
$f = new foo;
print spl_object_hash($f);
Run Code Online (Sandbox Code Playgroud)
生病了更深入的解释
class template_data implements IteratorAggregate, ArrayAccess, Countable {
private $_data;
//some methods for the overloaded classes
//
//the getId function
public function getId() {
return hash('md5',serialize($this->_data));
}
}
$t = new template('file');
$d = new template_data('some data');
$t->addData($d);
$t->display();
Run Code Online (Sandbox Code Playgroud)
现在,如果给模板引擎的数据在缓存中,它使用该版本,防止必须重新解析数据集的模板
这是一个简单的template_data视图,它实际上是延迟加载并使用memcached dataid,所以数据实际上并没有被提取,直到它在模板中使用
我已经使用PHP创建了一个应用程序,我将把它卖给我当地的市场.我个人会去他们的位置安装/配置Apache和MySQL以及安装我自己的代码.
我想要一个安全系统,以便如果有人试图将我的代码复制到未经授权的机器,它将无法运行.
我知道没有人可以阻止逆向工程应用程序.甚至.exe(二进制)文件都被破解,并且PHP(源代码)任何人都可以做.
在我的国家,那些反向工程师真的很难找到,所以我想提出最小的安全选项,如:
1)创建类(比如说Navigation),它标识系统信息,如CPU ID,计算机名称或硬件ID的任意组合,以生成UNIQUE_ID并与我给定的UNIQUE_ID(我向其销售应用程序的个人)匹配.如果有效,则返回导航菜单.否则它只会破坏数据库并通过抛出异常来停止执行,可能就像:
class Navigation {
public function d() {
return current system UNIQUE_ID;
}
public function get() {
$a = file_get_contents('hash');
$c = $this->d();
if (crypt($c) != $a) {
//destory database
throw new Exception('');
} else {
return "<ul><li><a>home</a></li></ul>"; //navigation menu
}
}
}
Run Code Online (Sandbox Code Playgroud)
2)然后在安装过程中,我将在"hash"文件中更改系统UNIQUE_ID,创建一个对象,并将其保存到文件(nav.obj)中:
(install.php了)
<?php
$a=new Navigation;
$out=serialize($a);
file_put_contents('nav.obj', $out);
Run Code Online (Sandbox Code Playgroud)
3)在header.php中(包含在每个文件中):
<?php
$menu=file_get_contents('nav.obj');
$menu=unserialize($a);
echo $menu->get();
?>
Run Code Online (Sandbox Code Playgroud)
我知道这种方法不是完全证明,但我很确定大约60%的PHP开发人员无法破解它!
现在我只需要获取当前系统UNIQUE_ID.
我正在研究用C#编写的Metro应用程序,需要一种唯一识别设备的方法.我在文档中找到了ASHWID看起来很棒.建议的代码如下:
HardwareToken token = HardwareIdentification.GetPackageSpecificToken(null);
IBuffer hardwareId = token.Id;
IBuffer signature = token.Signature;
IBuffer certificate = token.Certificate;
Run Code Online (Sandbox Code Playgroud)
问题是,如何将IBuffer变成我可以使用的字符串?
我想要back_end服务(ws)的唯一设备ID,我发现以下参考
private string GetDeviceId()
{
var token = Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null);
var hardwareId = token.Id;
var dataReader = Windows.Storage.Streams.DataReader.FromBuffer(hardwareId);
byte[] bytes = new byte[hardwareId.Length];
dataReader.ReadBytes(bytes);
return BitConverter.ToString(bytes).Replace("-", "");
}//Note: This function may throw an exception.
Run Code Online (Sandbox Code Playgroud)
但是,我无法理解代码,每次我为我的设备获得相同的Id(64个字符串),我想知道它是否适用?我也找不到MSDN的任何参考资料
谢谢