PHP: 어떻게 임의의 고유한 영숫자 문자열을 생성할 수 있습니까?
검증 링크에 사용할 숫자와 문자를 사용하여 임의의 고유한 문자열을 생성하는 것이 어떻게 가능할까요? 예를 들어, 웹 사이트에 계정을 만들면 링크가 포함된 전자 메일을 보내는데, 계정을 확인하려면 해당 링크를 클릭해야 합니다.네, 그 중 하나죠
PHP를 사용하여 이러한 항목 중 하나를 생성하려면 어떻게 해야 합니까?
업데이트: ['uniqid()][1]에 대해 방금 생각났어요. 현재 시간(마이크로초)을 기준으로 고유 식별자를 생성하는 PHP 기능입니다. 저는 그것을 사용할 것 같아요.
354
20
난 그냥 어떻게 해결할 것인지를 살펴보는 것도 이 같은 문제를 만들 수 있지만, 난 또 내 기능을 사용할 수 있는 스맥랜드의 증표지 암호란이 읽어들이기가 잘 알려져 있다. 즉, 내가 할 수 있는 토큰인지 막 제한할 수 있다. ['유니키드'] 때문에 (http://php.net/uniqid) 는 시간을 기준으로 따르면 " (php.net) 에서, 반환 값은 큰 차이가 없는 마이크로타임 (), ',' 유니키드 " 기준과 않습니다. &Lt openssl_random_pseudo_bytes (), php, code> < /code>, 사용하는 것이 좋습니다. 대신 암호학적으로 안전한 토큰을 생성할 수 있습니다.
짧고 빠른 점, 그 답을 찾을 수 있습니다.
임의의 문자열 영숫자를 생성될 수 있는 길이 = $ 바이트입니다 * 2. [A-f] [0-9] '의 알파벳' 이 있는 죄송합니다. 대뿐입니다 있지만 작동하잖아. < hr>; 다음은 내가 할 수 있다는 강력한 기준을 만족시키는 함수 (즉, 구축됩니까 버전니다 Erik& # 39 의 답).
'crypto_rand_secure ($ $ 최소, 최대)' 에 대한 교체품을 작동하여 드롭합니다 '랜드 ()' 또는 'mt_rand'. It 는 난수를 생성할 수 있도록 openssl_random_pseudo_bytes 사이에 막스야) 과 $ $
한글을 사용할 수 있는 '그레토켄 ($ 길이)' 는 '$ 길이 내 길이 문자열으로 토큰인지 그리곤요 tcpg'.
< b> EDIT:< /b>;;; 출처 - http://us1.php.net/manual/en/function.openssl-random-pseudo-bytes.php # 104322 내가 꼽는 데 소홀히
(PHP 7), /b> :< 편집하십시오 b> <;; Php 7 출시와 함께 새로운 기능을 대체할 수 있는 지금, 표준 라이브러리 함수 / 개선 / 간편해집니다 crypto_rand_secure 는 2 위. 'random_bytes ($ 길이)' 와 'random_int ($ $ 최소, 최대)'
http://php.net/manual/en/function.random-bytes.php
http://php.net/manual/en/function.random-int.php
예:
시간이 지남에 따라 완전히 고유할 필요가 없는 경우:
'md5(uniqid(rand(), true))`
그렇지 않은 경우(사용자의 고유한 로그인을 이미 결정한 경우):
객체중심형 가장 최대 투표 솔루션이므로 버전니다.
# 39, ve i& 만들어 객체중심형 기반으로 솔루션을 Scott 39 에 대답:
사용
사용자 정의 문자
사용자 정의 문자 필요한 경우 사용할 수 있습니다. 그냥 지나칠 수 있는 자 또는 setter 를 지원하는 문자열으로 구성자를.
# 39 의 출력물에는 샘플링합니다 Here&
<! - 언어: > 랑 없음 -;
누군가 데 도움이 될 것이라고 기대한다. 건배!
39 m, m 이 좋은 말, 그러나 I& i& # 39 와 일부 연구 데이터를 제공하는 기능에 따라 Scott& # 39 의 오토메이티드. 그래서 저는 그냥 긴 자동화된 테스트 및 디지털 오션 드롭릿 설정되었습니다 엔드입니다 생성된 고유해야 문장열 받을시간은 MySQL 데이터베이스에 저장된 5 일.
이 테스트 기간 동안 내가 사용한 5 가지 사이의길이 (5, 10, 15, 20, 50 개) 만 +/-0.5 각 레코드가 삽입됨 길이. 내 테스트 중 유일하게 길이 5 만 t # 39, 중복 아웃해야 +/-3K 생성할지 0.5, 나머지 모든 사이의길이 didn& 발령합니다 중복. 그래서 우리가 사용하는 경우 15 세 이상 말할 수 있는 길이 Scott& # 39 의 기능을 통해 안정적인 고유해야 써줬지 어졌다면 생성할 수 있습니다. 다음은 내 연구 데이터 테이블 있다.
! [입력하십시오. 이미지 여기에 설명을] [2]
이렇게 하면 좋겠다.
이 함수는 숫자와 문자를 사용하여 랜덤 키를 생성합니다.
출력 예:
Uuid 를 사용할 수 있습니다 (범용 고유 식별자) 에서, 어떤 목적으로, 사용자 인증 결제 트랜잭션 id 문자열을 사용할 수 있습니다.
Uuid 가 는 16 옥텟 (128-비트) 번호. 이 표준 형식, uuid 가 나타내는 32tb 진수 숫자, 표시되려면 형식으로 총 5 개 그룹으로 구분해서 하이픈, 8-4-4-4-12 36tb 문자 (32tb 영문자와 4 개의 하이픈).
//calling 하여 장소
출력입니다 다음과 같은 것입니다.
이를 통해 향후 누군가가 바랍니다:)
내가 본 한 줄 광고문:
여기서 길이는 필요한 문자열 (수, 그렇지 않으면 4 로 get down to the nearest 번호임 수 라운드된 의해 4)
아래 코드는 사용하여 난수 생성에 11 자 또는 변경 요구 사항에 따라 할 수 있다.
사용자 정의 함수 또는 임의의 숫자를 생성할 수 있습니다.
예: (의사 코드)
다음은 최고의 고유 id 발생기입니다 당신꺼에요. 나를 만들었다.
39, & # 39 모든 var& 에코 수 있습니다. 단축시킵니다 id 를 좋아해요. 그러나 md5, sha1 을 위한 것이 아니라, 더 나은 코드 $ 마던 바꿀 수 있습니다) 가 잘 될 수 있는 매우 긴 너회들 필요는 없지 않습니다.
감사합니다.
발령합니다 시도할 때 임의의 암호 노력하고 있습니다.
두 번째는 선반가공 cerner 임의적입니까 바이트입니다 붙여넣습니다 인쇄가능 문자열이어야 -
이제 다음과 같은 여러 가지 방법을 미리 발령합니다 임의적입니까 바이트입니다
그런 다음 매핑하려는 선반가공 이러한 임의적입니까 바이트입니다 붙여넣습니다 인쇄가능 구체화하십시오:
또는 base64_encode :
하지만 원하지 않는 제어입니다 사용하는 경우 끈의 길이에 base64.
발쿰치로 붙여넣습니다 32 바이트입니다 bin2hex 사용할 수 있습니다, 이를 사용하여 64 챨 구체화하십시오 . 그래서 할 수 있는 것 같이 일하는 디렉토리에만 * 구체화하십시오.
그게 바로 제가 여기 있습니다.
정말 임의적입니까 문장열 위해 사용할 수 있습니다.
출력:
그래서 심지어 발령합니다 문자열이어야 시도할 경우 정확한 시간에 동시에 여러 다른 출력 얻을 수 있습니다.
해시 키를 사용하여 처리할 때 모든검증 링크 싶어요. 난 이후 마이크로타임 사용 권장 및 MD5 해시 사용하는 것이 있어야 하는 이유도 이 때문에 기반한 마이크로타임 해시 시동키는 동일해야 합니다.
md5 (랜드 (), 키 = 1, $, code> <. < /code>; md5 (마이크로타임 (), 2., 키 = $ < code> < /code>;
Php 에서 문자열을 고유해야 생성하려면, 종료기 정보정의다음.
이,
'유니키드 ()' - It 가 생성한 고유해야 구체화하십시오. 이 함수는 시간스탬프와 기반 고유해야 식별자입니다 비호환성의 구체화하십시오.
'mt_rand ()' - 난수 생성.
'md5 ()' - 생성하는 것 해시보다 구체화하십시오.
내가 읽은 후 이전 참조용이므로 한국증권선물거래소법을:
내가 복제본임을 10 배 어레이입니다 [0-9, A-Z] 와 무순서 요소, 이후 추가 & # 39 I get a 임의적입니까 substr () 에 대한 시작점 creative& # 39;; ) [a-z] 와 다른 요소를 어레이이며 복제본임을 또는 그보다 더 추가할 수 있습니다, 나보다 더 창의적인
이는 단순한 생성할 수 있는 기능을 포함하는 무순서 문장열 문자와 숫자를 (문숫자). 문자열 길이를 제한할 수도 있습니다. 이러한 임의적입니까 문장열 등 다양한 용도로 사용할 수 있습니다. 추천 코드, 홍보 코드, 쿠폰 코드. 다음과 같은 함수 기반으로 PHP 기능: , 유니키드 mt_rand base_convert sha1,
39 를 사용하여 내 프로젝트 중 하나로, 어떤 I& 슬라이드에서는 it& # 39 m, s, a 고유해야 apc® 멋지구리해요 및 it 생성하는지 무순서 토큰인지 :
유념하십시오 내가 여러배의 타임스탬프와 3 점차로 만들려면 어떻게 만날 수 있다면 사용자 혼란을 이 토큰인지 수집됩니다;)
이를 통해 좋겠다:)
내 생각에 이것은 가장 좋은 방법은 사용할 수 있습니다.