Heim  >  Artikel  >  Backend-Entwicklung  >  Generieren Sie eine eindeutige Mitgliedskartennummer basierend auf PHP

Generieren Sie eine eindeutige Mitgliedskartennummer basierend auf PHP

墨辰丷
墨辰丷Original
2018-06-07 14:24:171943Durchsuche

Dieser Artikel stellt hauptsächlich die Generierung eindeutiger Mitgliedskartennummern auf Basis von PHP vor. Ich hoffe, dass er für alle hilfreich ist.

Ohne Abfrage der Datenbank generiert jedes Mitglied, das sich anmeldet, eine Mitgliedskartennummer mit einer eindeutigen Kombination aus Zahlen und Buchstaben.

Die Darstellung ist wie folgt:

Zu Demonstrationszwecken gehen wir in diesem Artikel davon aus, dass ein Club eine Charge herausgibt aus 10-stelligen Mitgliedskartennummern. Die Mitgliedskartennummer besteht aus einer 3-stelligen Ortsnummer + einem 5-stelligen Kartennummerncode + einem 2-stelligen Prüfcode. Die Stadtnummer wird durch die Vorwahl repräsentiert. Die 5-stellige Kartennummer besteht aus einer 36-stelligen Kartennummer. Der Zweck des Schecks Der Code dient der Überprüfung der Kartennummer. In diesem Fall entspricht die von uns generierte 10-stellige Kartennummer maximal mehr als 60 Millionen Mitgliedskartennummern und ist eine eindeutige Kartennummer, die sich nicht wiederholt.

PHP

Wir verwenden PHP, um Dezimalzahlen in Hexadezimalzahlen umzuwandeln.

class Code { 
 //密码字典 
 private $dic = array( 
 0=>'0', 1=>'1', 2=>'2', 3=>'3', 4=>'4', 5=>'5', 6=>'6', 7=>'7', 8=>'8', 
 9=>'9', 10=>'A', 11=>'B', 12=>'C', 13=>'D', 14=>'E', 15=>'F', 16=>'G', 17=>'H', 
 18=>'I',19=>'J', 20=>'K', 21=>'L', 22=>'M', 23=>'N', 24=>'O', 25=>'P', 26=>'Q', 
 27=>'R',28=>'S', 29=>'T', 30=>'U', 31=>'V', 32=>'W', 33=>'X', 34=>'Y', 35=>'Z' 
 ); 
 public function encodeID($int, $format=8) { 
 $dics = $this->dic; 
 $dnum = 36; //进制数 
 $arr = array (); 
 $loop = true; 
 while ($loop) { 
  $arr[] = $dics[bcmod($int, $dnum)]; 
  $int = bcp($int, $dnum, 0); 
  if ($int == '0') { 
  $loop = false; 
  } 
 } 
 if (count($arr) < $format) 
  $arr = array_pad($arr, $format, $dics[0]); 
 return implode(&#39;&#39;, array_reverse($arr)); 
 } 
 public function decodeID($ids) { 
 $dics = $this->dic; 
 $dnum = 36; //进制数 
 //键值交换 
 $dedic = array_flip($dics); 
 //去零 
 $id = ltrim($ids, $dics[0]); 
 //反转 
 $id = strrev($id); 
 $v = 0; 
 for ($i = 0, $j = strlen($id); $i < $j; $i++) { 
  $v = bcadd(bcmul($dedic[$id { 
  $i } 
  ], bcpow($dnum, $i, 0), 0), $v, 0); 
 } 
 return $v; 
 } 
}

Wir definieren die Code-Klasse und definieren zunächst das Passwort-Wörterbuch, also die Werte, die 0-Z entsprechen. Der Parameter $int in der Methode encodeID($int, $format) repräsentiert die Zahl und $format stellt die Länge der Ziffern dar, zum Beispiel bedeutet encodeID(123456789,5) die Konvertierung der Zahl 123456789 in eine 5-stellige 36-stellige Zahl, und die Methode decodeID($ids) wird zum Konvertieren der 36-stelligen Zahl verwendet in eine Dezimalzahl umwandeln.

Wir können die Kartennummer wie folgt generieren:

$code = new Code(); 
$card_no = $code->encodeID(888888,5);

Wie oben können wir eine 5-stellige Kartennummer erhalten, die tatsächlich die Kartennummer 888888 darstellt (6 8) Mitgliedsnummer, und die tatsächliche Konvertierung ist eine 5-stellige Nummer: 0J1VC.

Als nächstes fügen wir die Stadtnummer und den Prüfcode hinzu. Die Stadtnummer wurde definiert und der Prüfcode wird durch einen bestimmten Algorithmus erhalten: Fügen Sie die ersten drei hinzu Die Stadtnummer und die fünfstellige Kartennummer werden MD5-verschlüsselt, und dann werden die ersten beiden Ziffern des MD5-Werts als Prüfcode verwendet, sodass der zweistellige Prüfcode nach der Nummer erhalten wird.

$card_pre = &#39;755&#39;; 
$card_vc = substr(md5($card_pre.$card_no),0,2); 
$card_vc = strtoupper($card_vc); 
echo $card_pre.$card_no.$card_vc;

In der tatsächlichen Anwendung kann die Dezimalzahl über die Datenbank abgerufen werden, um sicherzustellen, dass die Nummer eindeutig ist. Anschließend werden die oben genannten Codes kombiniert, um schließlich eine 10-stellige, nicht doppelte Mitgliedskartennummer zu generieren.

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

PHP implementiert den Algorithmus zur Berechnung der Lotteriewahrscheinlichkeit

PHP implementiert die Definition und Definition der Redis-Cache-Klasse Detaillierte Erläuterung der Verwendung von

PHP zum Empfangen von E-Mails basierend auf IMAP

Das obige ist der detaillierte Inhalt vonGenerieren Sie eine eindeutige Mitgliedskartennummer basierend auf PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn