2014-03-18 3 views
1

사용자에게 원하는 전자 메일을 등록 시키려합니다. 하지만 나는 그들에게 '@domain.com'을 입력시켜달라고하지 않으며, 사용자 이름을 입력하기를 원합니다 (왼쪽은 모두 '@'입니다). 또한 왼쪽에있는 유일한 문자가 소문자, 숫자 및 밑줄인지 확인하는 방법은 무엇입니까? 기본적으로 대문자를 입력하면 낮춰야합니다. strtolower에 대해 알고 있지만 내 스크립트에서 구현하는 방법을 알지 못합니다. 난 단지 내 스크립트가전자 메일 유효성 확인을위한 소문자 및 밑줄 만위한 PHP 표현

if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
       echo "You have entered an invalid email. Press back and try again."; 
       $db = null; 
     exit(); 
     } 

그래서 유효한 경우 'domain.com'

내 스크립트

$email = ($_POST['email']); 

채워 이러한 필드에이 검사를 필요로이 예에서는 하나 개의 도메인을 검증 할 수 있도록하려면 I 변수 $email으로 뭔가를해야한다는 것을 알고 있습니다. 죄송 새로운 비트는 다음

+0

당신에게 분명히 유효한 이메일 주소가 좋아하는 것이 무엇인지 모릅니다. http://en.wikipedia.org/wiki/Email_address –

+0

완벽하게 합법적 인 주소를 제외하지 않고 이메일 주소의 유효성을 확인하는 것은 정말 어렵습니다. 'x @ y.za'는 * 이론적으로 * 유효한 주소이며 배달을 시도 할 때까지는 알 수 없습니다. – tadman

+0

도메인을 'domain.com'으로 지정했습니다. 사용자가 사용자 이름을 제공하면 도메인의 왼쪽 부분이되도록하고 싶습니다. 아무 말도하지 않는다면, 다곤. 단순한. – unixpipe

답변

0

의 '@'이메일 주소에서 유효있는 왼쪽 문자 범위이있는 한 당신은 잘못하고있는, 그러나 이것은 당신이 원하는 무엇인가 :

$stub = strtolower($_POST['email']); 
$email = $stub . "@domain.com"; 
if ((preg_match("/[^a-z0-9_]/", $stub)) || 
    (filter_var($email, FILTER_VALIDATE_EMAIL) === false)) { 
    echo "Invalid email...."; 
    die; 
} 
+0

좋아,이 작동하는 것 같지만 잘못된 오류 던지고있다. 다음은 스크립트에있는 스 니펫입니다. 잘못된 문자를 입력하면 오류 : 모든 필드가 필요합니다. 뒤로 누르고 다시 시도하십시오. – unixpipe

+0

업데이트 된 코드를 시도하십시오;) – kguest

+0

다른 코드가 작동하지 않는 이유를 알아 내려고했지만 exit(); 심지어 죽는 대신에; 네가 사용하는 것처럼하지만 나는 네가 좋아하는 천재들에게 맡겨야하고 내가하는 일을 계속해야 할 것 같아! 고마워요 !! 그건 그렇고, 나는 스텁 변수에서 POST 전에 strtolower를 유지했다. – unixpipe

0

참조 PHP로 오전 :

하여 strtolower : http://php.net/manual/en/function.strtolower.php

strpos : 지정한대로

$email=strtolower($email); 
if(strpos($email,'@')){ 
//Fail 
} 

http://php.net/manual/en/function.strpos.php가 그럼 그냥 filter_var으로 확인합니다.

+0

좋아, 다시 설명 할 필요가 있다고 생각합니다. 사용자가 새로운 이메일을받을 수있는 가입 양식이 있습니다. 나는 단지 1 개의 도메인이 'domain.com'이라고 말할 수 있습니다. 사용자가 소문자, 숫자 및 밑줄 만 입력하면됩니다. @ 기호 나 도메인에 대한 입력이 필요 없거나 유효하지 않습니다 (또는 입력으로 도메인이 필요 없다는 오류 메시지를 제공 할 수 있습니다). 나중에 준비된 명령문을 사용하여 데이터베이스에 입력하므로 POST를 사용합니다. – unixpipe

+0

예,'$ email'을 소문자로 바꾸고 (대문자 'strtolower' 행을 어딘가에 두십시오), 대문자로 입력해도 문제가되지 않습니다. PHP는 서버 측이므로 입력 내용을 막을 수 없습니다. 이 경우'strpos'는 @ 심볼을 찾고'Fail'이 발생한 곳에서 실패 코드를 입력 할 수 있습니다. 여러 문자를 찾으려면 배열을 바늘로 지원하는 http://php.net/manual/en/function.str-replace.php를 참조하십시오. – JBES

+0

알겠습니다. 하지만 어떻게하면 내 실제 도메인을 알 수 있습니까? 사용자가 다른 도메인을 입력 할 수 없도록하고 싶습니다. 스크립트의 어딘가에 내 도메인과 변수가 있어야하지만 스크립트에 맞출 방법을 모릅니다. – unixpipe

-1
$email = strtolower('dsfds_09azZdsf'); 

if (strlen($email) == strlen(preg_replace('#[^a-z_0-9]#i', '', $email))) 
{ 
    echo 'valid'; 
} 
    else 
    { 
     echo 'not valid'; 
    } 
관련 문제