2012-12-05 2 views
4

나는 대학생들 만 내 웹 사이트에 가입 할 수 있기를 원하지만 어떻게 관리해야하는지 알 수 없었습니다. 또한 .edu.fr, edu.tr 또는 기타 .edu 확장을 사용하여 내 웹 사이트에 가입 할 수 있습니다. 일부 reg-ex를 사용하려고 생각했지만 해결책을 찾지 못했습니다. 누군가 나를 도울 수 있으면 기뻐할 것입니까?전자 메일 주소가 교육용 전자 메일 주소인지 여부를 어떻게 알 수 있습니까?

중요한 것은 아니지만 laravel 프레임 워크에서 PHP를 사용하고 있습니다.

+2

체크 아웃이 두 ​​게시물 : http://stackoverflow.com/questions/5136678/php-validate-email-address-based-on-the-domain-name 및 HTTP : //stackoverflow.com/questions/6609195/parse-rfc-822-compliant-addresses-in-a-to-header – Stegrex

+1

그것은 내게 상실된 것처럼 보입니다. 전자 메일이 어떤 형식을 따르는 지 보장 할 수는 없습니다. 예를 들어, 우리 대학교는 학생들에게 ulaval.ca 이메일 주소를 제공합니다. –

답변

2

대부분의 교육 기관은 이러한 패턴을 따르는 도메인 이름이 있습니다. 확인 링크가 포함 된 자동 이메일을 보내 이메일이 진짜인지 확인하십시오.

해당 PHP :

if (preg_match('/(\.edu(\.[a-zA-Z]+)?|\.ac\.[a-zA-Z]+)$/i', $domain)) { 
    // allow 
} 
+0

입니다. – bamya

+0

@mortalcombat :-) –

1

이 그것을 할 수있는 좋은 방법은 아니지만, 하나의 가능한 방법은 @ 기호를 사용하여 주소를 폭발 할 수 있습니다 : 물론

// Split the email address into 2 values of an array using the @ symbol as delimiter. 
$emailParts = explode('@', $theEmailAddress); 
// If the second part (domain part) contains .edu, period, country code or just .edu, then allow signup. 
if (preg_match('/\.edu\.[^.]+$/i', trim($emailParts[1])) || preg_match('/\.edu$/i', trim($emailParts[1]))) { 
    // Use the above if you are assuming that the country codes can be any number of characters. If you know for sure country codes are 2 chars, use this condition: 
    // (preg_match('/\.edu\.[^.]{2}$/i', trim($emailParts[1])) || preg_match('/\.edu$/i', trim($emailParts[1]))) 
    // Allow signup 
} 

을,이 도메인 또는 이메일 주소가 보장하지 않습니다 기존의 것!

uni.edu 
uni.edu.fr 
uni.ac.uk 

다음 정규 표현식은 이러한 모든 경우에 대해 설명합니다 : 필요에 따라

/(\.edu(\.[a-z]+)?|\.ac\.[a-z]+)$/ 

당신은 정규식에 케이스를 추가 할 수 있습니다

+2

하지만 제대로 작동하지 않을 수 있습니다. 예를 들어 [email protected] – bamya

관련 문제