訂單號的處理

2021-09-09 04:14:49 字數 1359 閱讀 2130

自動編號會被人猜出來嫩**每天的下單量,每季度的下單量,每年的下單量...等於直接把**經營資料拱手他人...所以一般都是無法跟下單量直接掛鉤的單號

一、ecshop訂單號生成規則:

function get_order_sn()

ecshop的訂單號是會重複,ecshop生成訂單號後會做判斷,如果訂單號重複則重新提交資料

二、模仿**訂單號:

function orderid($length=4)  else 

file_put_contents($oid_filename,$oid);

$oid = str_pad($oid,$length,'0',0);

return $date.$oid;

}

跟**的一樣,14位。寫檔案部分自己改,或入庫,或memcache,或xx請自便……理論上如果你沒**的交易量或你每分鐘會有超過99999筆訂單不會重複。

三、和使用者id號關聯:

時間+使用者id+隨機n位

<?php

/** * php版本的自動生成有規則的訂單號(或編號)

* 日期: 2009-8-14

* 生成的格式是: 200908010001 前面幾位為當前的日期,後面五位為系統自增長型別的編號

* 原理:

* 1.獲取當前日期格式化值;

* 2.讀取檔案,上次編號的值+1最為當前此次編號的值(記錄以檔案的形式儲存)

* (下月會接著這個編號)

*/class fileeverydayserialnumber

public function getorupdatenumber($current, $start) else

} }

class ioutil

public static function write_content($content, $filename)

}//測試**

//引數含義分別是日期後自增長數的位數, 儲存的檔名稱, 日期與自增長數的分割數

$obj = new fileeverydayserialnumber(4,"everydayserialnumber.dat",",");

$current_date = date("ymd");

//$current_date = eov_;//自定義字首

echo $obj->getorupdatenumber($current_date,1);

//eov_0007

//201103130003

?>

訂單號生成

之前用uuid 因為太長改用16位因此在網上找到一下這種做法,年月日擷取 時間戳 在加隨機數 生成乙個訂單 獲取年份 var date j f c d e b h i a date gettime tostring var ordersn date new date getfullyear 2015...

mysql 訂單號主鍵 為什麼不用訂單號當做主鍵?

1.普通索引上儲存的值是主鍵的值,如果主鍵是乙個很長的字串並且建了很多普通索引,將造成普通索引占有很大的物理空間 2.自增id 在插入的時候可以保證相鄰的兩條記錄可能在同乙個資料塊,而訂單號的連續性在設計上可能沒有自增id好,導致連續插入可能在多個資料塊,增加了磁碟讀寫次數。innodb儲存引擎邏輯...

PHP訂單號的生成

前陣子,公司有個電子商務專案,需要生成訂單號。當時的考慮很簡單,取系統時間加上隨機數,或者使用 uniqid 方法。我們都知道,訂單號最基本的要求就是唯一,這個條件必須滿足。仔細考慮下上述方法,在顧客購買量少的情況下,訂單重複的可能性為零,但是在購買高蜂期生成的訂單號重複是很有可能發生的。所以上述方...