사용자가 가입하는 PHP 웹 사이트를 만들고 있는데 "전자 메일 확인"코드에 대한 모범 사례가 궁금합니다.전자 메일 확인 코드에 대한 유용한 정보
신규 사용자는 전자 메일 주소를 확인해야합니다. 코드를 생성하여 사용자에게 전자 메일로 보냄으로써 전자 메일 주소를 확인한 다음 전자 메일 주소를 사용하여 계정을 활성화 할 수 있습니다. 오히려 데이터베이스에이 키를 저장하는 대신, 나는 쉽고 간단한 해결 방법을 사용하고 있습니다 : 코드의 결과입니다
$ 타임 스탬프가 사용자 생성 시간을 의미md5("xxxxxxxxx".$username."xxxxxxxxxxx".$timestamp."xxxxxxxxx");
. 전체적으로 나는 이것에 상당히 만족하고 있었지만, 생각해 보았습니다. 충분히 안전합니까? 그리고 충돌의 가능성은 어떻습니까? 암호 재설정 등을위한 코드를 생성해야합니다. 비슷한 방법을 사용하면 충돌로 인해 한 사용자가 부주의로 다른 사용자의 비밀번호를 재설정 할 수 있습니다. 그리고 그것은 좋지 않습니다.
어떻게 이런 일을합니까? 내 생각은 다음과 같은 형식의 테이블했다 '유형'1, 2, 3의 의미 "활성화", "이메일 변경"또는 "암호 재설정"것
codePK (int, a-I), userID (int), type (int), code (varchar 32), date (timestamp)
. 이것이 좋은 방법인가요? 더 좋은 방법이 있습니까?
위와 유사한 방법을 사용하면 cron-jobs를 사용하지 않고 2 일 이상 된 항목을 자동으로 삭제할 수 있습니까? 내 호스트 (nearlyfreespeech.net)는 지원하지 않습니다. 가능하다면 wget이 일을 삭제하는 스크립트 인 외부 호스트에서 cron-job을 사용하는 것을 피하고 싶습니다.
감사합니다.
말라
업데이트 :
명확히하기 위해 : 나는 원래 기능을 피하기 위해 노력했다있는 데이터베이스를 사용하는 것입니다 안전하고 안전하게이 작업에 대해 갈 수있는 유일한 방법을 깨달았다. 내 질문은 테이블 (또는 테이블)을 구성하는 방법에 관한 것입니다. 누군가 제가 codePK를 없애고 코드를 PK로 만들 것을 제안했습니다. 간단히 말해, 제 질문은 당신이하는 일입니까?
전자 메일 확인 코드에 대한 유용한 정보가 있습니까? 그들을 퇴장 시키십시오. – Leo
비밀번호 리셋을 위해서만 사용자가 유효한 이메일 주소를 가지고 있어야합니다. 우리가 다루는 실제 세계는 "사용자의 책임입니다"라고 주장 할 수는 있지만 ... "암호를 절대 잊지 않을"사람이 암호를 잊어 버리 자마자, 아마도 1 ~ 2 주 안에 시스템은 "멍청한"것입니다. – Mala