2010-05-24 3 views
11

이제 ICann이 비 라틴 문자 도메인 이름을 허용하므로 전자 메일 유효성 검사에 대해 염려해야합니까? 현재, 내 사이트는 전자 메일 주소의 각 세그먼트에 일부 영숫자 문자 집합을 보장하기 위해 PHP 함수를 사용하고 있습니다. 키릴 문자, 아랍어 및 중국어와 같은 다른 문자 집합이 유효성 검사를 통과합니까? 거기에 권장되는 PHP 함수가 있습니까?비 라틴 전자 메일 주소 유효성 검사

+0

+1 예 :'info @ müller.de' –

+0

@ 존 콘데 : 당신은 이미 그것을 입력했습니다, 우리는 귀하의 의견 이외의 upvote 수 있도록 게시하십시오. – salathe

+0

글쎄, 그것은별로 해결책이 아니지만, 적어도 PHP가 현재이 점을 설명합니다. 희망찬 질문자는 이전 질문에 대한 해결책을 선택하기 바랍니다. 그들에게 좋은 대답이 있습니다. –

답변

0

나는 FILTER_VALIDATE_EMAIL 필터와 함께 filter_var()을 사용할 것을 권장했습니다. 그러나 Google 검색 후 doesn't support multi-byte characters 아직 밝혀졌습니다. 지금은 가장 좋은 방법은 strip out non-latin characters이며 정상적인 유효성 검사를 수행하는 것입니다 (단 checkdnsrr은 라틴어가 아닌 문자를 제거하여 도메인을 변경했기 때문에 분명히 실패하고 라틴어로 바뀌 었습니다. 이를 사용하여 이메일 도메인의 MX 레코드를 확인한 다음 일시적으로 사용 중지해야합니다.

+0

FILTER_VALIDATE_EMAIL도 멀티 바이트가 아닌 문자를 처리 할 때 너무 엄격하게 나타납니다. –

1

궁극적으로 가장 좋은 방법은 적절한 IDN 함수를 사용하여 들어오는 문자열을 ACE 문자열 (xn--xyz-blah.com)로 변환하는 것입니다. 해당 프로세스가 작동하면 도메인 이름이 유효합니다. 그렇지 않으면 그렇지 않습니다.

idn_to_ascii()이라는 PHP 함수가 있지만 추가 라이브러리가 필요합니다. 시스템에서 사용할 수 있는지 확인해야합니다.

또한 IDN 변환을 수행하는 idn이라는 외부 Linux 명령이있는 것으로 보입니다. 나는 그것에 대해 더 이상 알지 못한다.

PHP 내장 메서드 만 사용하려는 경우 delfuego는 this question의 정규식을 매우 잘 보여줍니다.