如何创建自定义事务ID php
How to create custom transaction ID php
由于我是Web开发的新手,我创建了一个在线预订系统,我有一个交易Id,客户可以在其中取消预订。我已经用随机字符和字母创建了事务Id,但我想创建自定义Id示例:2014-09-000010-PM但我不知道在谷歌上搜索什么教程。谢谢你的帮助。顺便说一句,这是我的随机字符和字母代码。
function createRandomPassword() {
$chars = "abcdefghijkmnopqrstuvwxyz023456789";
srand((double)microtime()*1000000);
$i = 0;
$pass = '' ;
while ($i <= 7) {
$num = rand() % 33;
$tmp = substr($chars, $num, 1);
$pass = $pass . $tmp;
$i++;
}
return $pass;
}
$confirmation = createRandomPassword();
?>
如果您希望ID的一部分是可读的,可以使用日期函数,如另一个答案中所述。然而,正如我在评论中所说,如果攻击者能够预测(即猜测)您的交易ID,则攻击者可以执行取消或更改他人的预订等操作。您应该使用无法预测的事务ID。因此,一个基于日期的ID本身是危险的。你需要ID,或者它的一部分,是真正随机的。
srand()函数不一定能做到这一点。它的工作是生成一系列满足随机性而非不可预测性统计测试的数字。然而,PHP确实有一种生成随机数的方法,这种方法(可能)在加密方面是安全的。看看:http://php.net/manual/en/function.openssl-random-pseudo-bytes.php
您可以使用date()函数。
http://php.net/manual/en/function.date.php
根据日期设置格式,如果你想添加一个随机部分或其他内容,可以在字符串后面添加变量+="whatever";
还要确保你的身份证是安全的和不可预测的。
利用现有代码。例如,UUID是唯一的,版本1的UUID包含时间戳,节点可以用来添加随机性(或只有你才能检索的信息的哈希)。它也是非常通常重新实现的,所以你可以找到很多教程。请记住,您需要能够创建uuid,和以后能够从字符串表示中提取信息。
或者,您可以使用Rhumsaa''Uuid包(或任何类似的完整库)来完成初始化、转换Uuid的所有工作,并专注于您的代码真正需要做的事情。
use Rhumsaa'Uuid
// Uuid casts itself as a string whenever used as a string
$myTransactionId = Uuid::uuid1( $myHexNodeString, time() );
$uuidObject = Uuid::fromString( 'e886e43a-30b5-11e4-8751-7f0000014a23' );
// Creates a PHP DateTime object
// @see http://php.net/manual/en/class.datetime.php
$timestamp = $uuid->getDateTime();
// 2014-08-31T02:24:18+00:00
$myRetrievedHexNodeString = $uuid->getNodeHex()
// 7f0000014a23
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- jQuery自定义验证比较多个输入的序列
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 在wordpress一定时间后更改自定义字段
- 表达式引擎扩展开发-向呈现的条目添加自定义javascript
- 自定义函数中的光标位置
- 用于检查数组中是否存在元素的javascript自定义方法
- 绑定时将Parsley minlength消息作为选项传递时,未对其进行自定义
- Meteor-添加用户自定义字段的方法不起作用
- 自定义表单验证和提交
- jQuery工具验证器自定义效果-添加&消除影响
- 可以't计算自定义谷歌地图的js
- 谷歌水印未显示在自定义搜索框中
- vaadin:使用自定义布局集成angular js
- DataTables-创建自定义分页样式(加载更多样式)
- Azure 自定义 API:执行数据库事务返回超时
- 如何创建自定义事务ID php
- 在Azure移动服务自定义API中使用事务
- 我们可以用电子商务事务发送自定义维度(用户范围)吗?