2010-04-29 2 views
0

키오스크로 사용하는 오프라인 사이트 사용자를 위해 데이터베이스 테이블을 만들 계획입니다.이 키오스크는 네트워크에 연결되어 있지 않으며 서로간에 연결되어 있지 않습니다. 별도의 웹 서버 및 데이터베이스 .. 무엇이 가장 매끄러운 키오스크에서 다른 고유 ID를 갖기 위해이 사용자를 사용할 수 있습니까? 해시를 사용하여 단일 서버에서 모든 시스템의 모든 데이터를 결합 할 때 각 고유 ID를 수용 할 수 있도록 계획하고 있습니다.PHP를 사용하여 각기 다른 서버에 고유 ID 생성

+0

동일한 사용자에 대해 모든 컴퓨터에서 동일한 해시를 생성하는 무언가를 찾고 있습니까? 마찬가지로,'Slokun'으로 로그인하면 모든 머신에서 해시가'abc123'이 될 수 있지만,'Slokun2'로 로그인하면'g6y3xg'가됩니까? 신용 카드 번호 같은 사람이 누구인지 알려주는 특정 항목이 있습니까? – Tarka

답변

1

ID 작성 방법을 완전히 제어 할 수있는 경우 처음 설정할 때 각 컴퓨터에 고유 한 ID를 부여한 다음 해당 ID를 컴퓨터간에 중복되지 않도록 해당 ID를 사용자의 고유 ID에 포함시킬 수 있습니다 .

수동 설정을하고 싶지 않다면 네트워크 어댑터 MAC 주소와 같은 종류의 하드웨어 ID를 시스템의 고유 ID로 사용하십시오.

+0

+1은 무작위 = 고유하지 않기 때문입니다. – Zarigani

0

제로 설정 옵션이 필요한 경우 사용자 생성시 microtime()을 가져 와서 문자열로 변환 한 다음 해시 (md5 또는 일부 사용)로 해시 할 수 있습니까? 정확성과 기계 시계의 임의적 인 변형으로 인해 모든 사용자에게 고유성을 부여해야합니다.

사전 설정을 할 수 있다면 각 컴퓨터에 고유 한 ID를 부여하고 해당 컴퓨터의 사용자 별 데이터 일부 항목에서 해시를 생성하십시오.

1

PHP의 uniqid() 함수를 사용하거나 MySQL의 UUID() 함수를 사용합니다.

1

간단한 ini 파일을 사용하여 키오스크 ID를 저장하고 고유 한 해시 앞에 배치하십시오.

그것은이 방법으로 구현 될 수있다 :

$config = parse_ini_file('./config.php'); 
$hash = $config['kiosk_id'].'_'.microtime(); 
//$hash = md5($hash); //looks more random, but can collide 
0

가장 좋은 방법은 다양한 일환으로 정기적 AUTO_INCREMENT 컬럼을 기반으로, 복합 키를 생성, 그리고 변하지 않는 고유의 당 키오스크 식별자입니다. 호스트 이름, IP 주소는 이더넷 카드가있는 경우 MAC 주소 (도 실제로 사용하는 경우), 윈도우 SID, 등등 ... 다음 하찮게 나중에 마스터 테이블에 결합 될 수있다

CREATE TABLE user 
    user_id auto_increment not null, 
    kiosk_id char(32) not null, 
    PRIMARY KEY (user_id, kiosk_id), 
    etc... 
); 

.

관련 문제