(고급) PHP는 고유한 회원 카드 번호를 생성합니다.
0-Z(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ)를 사용하여 각각 0-35 값을 나타냅니다. 예를 들어 문자 Z는 35를 나타냅니다. 이 경우 5자리 숫자를 얻고 싶습니다. 최대 정보량은 36의 5제곱, 36^5 = 60466176입니다. 즉, 최대 5자리 숫자는 10진수인 60466176과 같습니다. .
이 기사에서는 설명을 위해 클럽이 10자리 회원 카드 번호를 일괄적으로 발급한다고 가정합니다. 회원 카드 번호는 3자리 도시 번호 + 5자리 카드 번호 코드 + 2자리 체크코드. 도시 번호는 지역 코드로 표시됩니다. 예를 들어 5자리 카드 번호는 36자리 카드 번호로 구성됩니다. 확인의 목적은 다음과 같습니다. 코드는 카드번호의 합법성을 확인하는 것입니다. 이 경우, 당사가 생성하는 10자리 카드번호는 최대 6천만개 이상의 멤버십 카드번호에 해당하며, 중복되지 않는 고유한 카드번호입니다.
우리는 PHP를 사용하여 10진수를 16진수로 변환합니다.
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 = bcdiv($int, $dnum, 0); if ($int == '0') { $loop = false; } } if (count($arr) < $format) $arr = array_pad($arr, $format, $dics[0]); return implode('', 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; } }
Code 클래스를 정의하고 먼저 비밀번호 사전, 즉 0-Z에 해당하는 값을 정의합니다. encodeID($int, $format) 메소드의 $int 매개변수는 숫자를 나타냅니다. $format은 자릿수 길이를 나타냅니다. 예를 들어 encodeID(123456789,5)는 숫자 123456789를 5자리 16진수로 변환하는 것을 의미하고, decodeID($ids) 메소드는 16진수를 10진수로 변환하는 데 사용됩니다. .
다음과 같이 카드번호를 생성할 수 있습니다:
$code = new Code(); $card_no = $code->encodeID(888888,5);
위와 같이 실제로 카드번호 888888(6자리)의 회원번호를 나타내는 5자리 카드번호를 얻을 수 있습니다. , 실제 변환 후에는 5자리 숫자: 0J1VC입니다.
다음으로 도시 번호와 검사 코드를 추가합니다. 도시 번호가 정의되었으며 특정 알고리즘을 통해 검사 코드를 얻습니다. 이 예에서는 처음 3개를 추가합니다. 도시번호와 5자리 카드번호를 md5로 암호화하고, md5 값의 처음 두 자리를 체크코드로 취하여 번호 뒤의 두 자리 체크코드를 획득합니다.
$card_pre = '755'; $card_vc = substr(md5($card_pre.$card_no),0,2); $card_vc = strtoupper($card_vc); echo $card_pre.$card_no.$card_vc;
실제 적용에서는 데이터베이스를 통해 십진수를 얻어 고유한 숫자인지 확인한 후, 위의 코드를 조합하여 최종적으로 10자리의 중복되지 않는 회원카드 번호를 생성합니다.
렌더링:
위는 PHP가 고유한 회원 카드 번호를 생성하는 방법(고급)입니다. 더 많은 관련 내용을 보려면 PHP 중국어를 참고하세요. 홈페이지(www.php.cn)!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu
