如何创建自定义事务ID php

时间:2014-09-01 15:54:20

标签: javascript 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();
?>

3 个答案:

答案 0 :(得分:0)

您可以使用date()函数。

http://php.net/manual/en/function.date.php

将其格式化为您对日期的喜好,如果您想要添加随机部分或其他任何内容,请在字符串后附加变量+ =&#39;无论什么&#39 ;;

还要确保您的ID安全无法预测。

答案 1 :(得分:0)

如果您希望ID的一部分是人类可读的,您可以使用日期函数,如另一个答案中所述。但是,正如我在评论中所说,如果攻击者可以预测(猜测)您的交易ID,攻击者可以执行取消或更改其他人预订等操作。您应该使用无法预测的交易ID。因此,基于日期的ID本身就很危险。您需要ID或其中的一部分才能真正随机。

srand()函数不一定这样做。它的工作是生成一系列满足随机性统计测试的数字,而不是不可预测性。但是,PHP确实有一种方法可以生成(可能)加密安全的随机数。看看:http://php.net/manual/en/function.openssl-random-pseudo-bytes.php

答案 2 :(得分:0)

利用现有代码。例如,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