Проверка е-мэйла

Discussion in 'PHP' started by soxer, 6 Feb 2010.

  1. soxer

    soxer Banned

    Joined:
    30 Jul 2009
    Messages:
    0
    Likes Received:
    17
    Reputations:
    -5
    Привет у меня есть форма типа :
    Логин
    Почта
    Пароль
    Подтверждение пароля

    сопсна вопрос, как сделать так чтоб проверялось правильность ввода мыла ... то есть щас чел может нажать войти и ничего не вводить а нужно чтоб проверялось что в поле е-мэйл было введено например @
     
  2. ChieFSS

    ChieFSS Elder - Старейшина

    Joined:
    23 Nov 2006
    Messages:
    35
    Likes Received:
    2
    Reputations:
    0
    PHP:
    if(!preg_match('/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i'$email)) {
        exit(
    'Вы неверно заполнили поле e-mail.');
    }
     
  3. soxer

    soxer Banned

    Joined:
    30 Jul 2009
    Messages:
    0
    Likes Received:
    17
    Reputations:
    -5
    вот полная форма куда вставить нужно?

    Code:
    <div class="simplePage">
    
     <form method="post" name="login" id="login" action="ap.php">
       <table align="center" cellpadding=0 cellspacing=7 border=0 width="40%">
       <tr>
        <td><span class="grey"><b>Логин:</span>    </td>
        <td><input type="text" class="inputText" size="25" maxlength="15" /></td>
       </tr>
       <tr>
        <td width="100px">
         <span class="grey"><b>E-mail:</span>
        </td>
        <td>
         <input class="inputText" type="text" name="login" value="" id="email" size="25" />
        <td>
       </tr>
       <tr>
        <td>
         <span class="grey"><b>Пароль:</span>
        </td>
        <td>
         <input class="inputText" type="password" name="pass" value="" id="pass" size="25" />
        </td>
       </tr>
       <tr>
        <td><span class="grey"><b>Пароль ещё раз:</span>    </td>
        <td><input type="text" class="inputText" size="25" maxlength="15" /></td>
       </tr>
       <tr>
        <td>&nbsp;
         
        </td>
        <td><ul class="nNav">
          <li>
            <div align="left"><b class="nc"><b class="nc1"><b></b></b><b class="nc2"><b></b></b></b> <span class="ncc"><a href="javascript:document.login.submit()"reg0="reg0""><b>Зарегистрироваться</a></span> <b class="nc"><b class="nc2"><b></b></b><b class="nc1"><b></b></b></b> </div>
          </li>
        </ul>
        </td>
       </tr>
       <tr>
        <td>&nbsp;    </td>
        <td class="forgotPass">&nbsp;</td>
       </tr>
    
      </table>
      <input type="submit" value="." style="color:#fff;border:0;padding:0;margin:0;background:#fff;height:6px;width:6px"/>
     </form>
    
    </div>
     
  4. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    PHP:
    <html>
    <form name="form1" method="post" action="">
      <input name="preg" type="text" id="preg">
      <input type="submit" name="Submit" value="check">
    </form>
    </html>
    <?
    $text=$_POST['preg'];
    if(preg_match("/^[a-z0-9]+@[a-z]+(.ru|.com|.net)/i", $text)) { 
        echo "ок. Все введено"; 
    } else { 
        echo "чезана***";

    ?>
     
    #4 Compton, 6 Feb 2010
    Last edited: 6 Feb 2010
  5. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18
    Я на сайте вообще сделал Фофч проверку кода
    1)удобно если юзер вводит спец символы вылазит окошечко и говорит что они зпрещены и т д
    2)Сделал проверку на сущесвование логина

    Я долго искал что то подобное вот нашел

    Качай _http://rapidshare.com/files/346836323/formValidator.zip.html

    потом закидуеш папку на локалхост и открываеш и смотриш на примерах как оно работает - потом просто подставляеш переменные в свой скрипт и вуаля.
    Если что пиши помогу
     
  6. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    Compton
    А если мыло будет не в зоне (.ru|.com|.net) ?
    Да и вообще зачем регулярка?
    PHP:
    var_dump(filter_var('[email protected]'FILTER_VALIDATE_EMAIL));  
     
    1 person likes this.
  7. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    b3
    пусть так будет
    PHP:
    "/^[a-z0-9]+@[a-z]+\.[a-z0-9]/i"
    пусть тс выберет,как ему нравится
     
  8. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Compton, e-mail может содержать и точку, и подчеркивание. Кроме того, домен может быть больше, чем второго уровня, и может содержать тире.
    [email protected] - не пройдет. Да и твоя регулярка пропустит нечто типа
    [email protected][любые_символы]

    Более верно (хотя и не лишено недостатков - позволяет ввести несколько тире подряд в домене):
    /^[a-z0-9_]+(\.[a-z0-9_]+)*@[0-9a-z]{1}[\-0-9a-z]*(\.[0-9a-z]{1}[\-0-9a-z]*)*\.[a-z]{2,4}/i
     
  9. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    Тут возникает вопрос - "зачем?" если есть filter_var() с ключем FILTER_VALIDATE_EMAIL, зачем составлять сложные неидеальные регекспы, рискуя недопустить к регистрации пользователя. Не утверждаю что FILTER_VALIDATE_EMAIL идеален, но полагаюсь на девелоперов РНР (=
     
  10. suser

    suser Member

    Joined:
    30 Dec 2009
    Messages:
    35
    Likes Received:
    5
    Reputations:
    0