Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > PHP

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 20.01.2002, 02:39
Anton-Killer вне форума Посмотреть профиль Отправить личное сообщение для Anton-Killer Посетить домашнюю страницу Anton-Killer Найти все сообщения от Anton-Killer
  № 1  
Anton-Killer

Регистрация: Jun 2001
Адрес: Украина Днепропетровск
Сообщений: 185
Отправить сообщение для Anton-Killer с помощью ICQ
По умолчанию e-mail

Я пишу скрипт, и мне нужно к моеему скрипту добавить такую функцию, которая б проверяла на существование электронной почты
Помогите плиз

Старый 20.01.2002, 05:12
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 2  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
Можно проверить введеный мэйл-адрес регулярным выражением [.]+[@]*[.]+[\.][...]... Это тебе даст адрес позволит проверить адрес по шаблону что@что-то.com

Что же касается проверяния...

Здесь функцией не обойдешься. Нужнен целый скрипт (а можно и больше одного) который бы высылал юзеру на почту сообщение со ссылкой. Юзверь тыкает на ссылку в письме и ты, узнав что такой адрес есть, ...


Последний раз редактировалось kompadre; 20.01.2002 в 05:14.
Старый 20.01.2002, 12:42
Anton-Killer вне форума Посмотреть профиль Отправить личное сообщение для Anton-Killer Посетить домашнюю страницу Anton-Killer Найти все сообщения от Anton-Killer
  № 3  
Anton-Killer

Регистрация: Jun 2001
Адрес: Украина Днепропетровск
Сообщений: 185
Отправить сообщение для Anton-Killer с помощью ICQ
Регулярные выражения еще можно писать так
PHP код:
<?
function mailcheck($email) {
if (
eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}"$email)) return true;
else return 
false;
};
?>
А насчет проверки существование адреса, нужно знать старший МХ и потом коннектиться к нему через smtp-порт
а вот как это сделать, я не знаю.

Старый 21.01.2002, 00:50
Anton-Killer вне форума Посмотреть профиль Отправить личное сообщение для Anton-Killer Посетить домашнюю страницу Anton-Killer Найти все сообщения от Anton-Killer
  № 4  
Anton-Killer

Регистрация: Jun 2001
Адрес: Украина Днепропетровск
Сообщений: 185
Отправить сообщение для Anton-Killer с помощью ICQ
Один хороший человек под прозвищем Faeton, с форума PHP, за что я ему премного благодарен, поделился со мною таким скриптиком.
PHP код:
<?
function SnowCheckMail($Email,$Debug=false)  
{  
    global 
$HTTP_HOST;  
    
$Return =array();   
    
// Variable for return. 
    // $Return[0] : [true|false] 
    // $Return[1] : Processing result save. 

    
if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"$Email)) {  
        
$Return[0]=false;  
        
$Return[1]="${Email} is E-Mail form that is not right.";  
        if (
$Debug) echo "Error : {$Email} is E-Mail form that is not right.<br>";          
        return 
$Return;  
    }  
    else if (
$Debug) echo "Confirmation : {$Email} is E-Mail form that is not right.<br>";  

    
// E-Mail @ by 2 by standard divide. if it is $Email this "lsm@ebeecomm.com".. 
    // $Username : lsm 
    // $Domain : ebeecomm.com 
    // list function reference : [url]http://www.php.net/manual/en/function.list.php[/url] 
    // split function reference : [url]http://www.php.net/manual/en/function.split.php[/url] 
    
list ( $Username$Domain ) = split ("@",$Email);  

    
// That MX(mail exchanger) record exists in domain check . 
    // checkdnsrr function reference : [url]http://www.php.net/manual/en/function.checkdnsrr.php[/url] 
    
if ( checkdnsrr $Domain"MX" ) )  {  
        if(
$Debug) echo "Confirmation : MX record about {$Domain} exists.<br>";  
        
// If MX record exists, save MX record address. 
        // getmxrr function reference : [url]http://www.php.net/manual/en/function.getmxrr.php[/url] 
        
if ( getmxrr ($Domain$MXHost))  {  
      if(
$Debug) {  
                echo 
"Confirmation : Is confirming address by MX LOOKUP.<br>";  
              for ( 
$i 0,$j 1$i count $MXHost ); $i++,$j++ ) {  
            echo 
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result($j) - $MXHost[$i]<BR>";   
        }  
            }  
        }  
        
// Getmxrr function does to store MX record address about $Domain in arrangement form to $MXHost. 
        // $ConnectAddress socket connection address. 
        
$ConnectAddress $MXHost[0];  
    }  
    else {  
        
// If there is no MX record simply @ to next time address socket connection do . 
        
$ConnectAddress $Domain;          
        if (
$Debug) echo "Confirmation : MX record about {$Domain} does not exist.<br>";  
    }  

    
// fsockopen function reference : [url]http://www.php.net/manual/en/function.fsockopen.php[/url] 
    
$Connect fsockopen $ConnectAddress25 );  

    
// Success in socket connection 
    
if ($Connect)    
    {  
        if (
$Debug) echo "Connection succeeded to {$ConnectAddress} SMTP.<br>";  
        
// Judgment is that service is preparing though begin by 220 getting string after connection . 
        // fgets function reference : [url]http://www.php.net/manual/en/function.fgets.php[/url] 
        
if ( ereg "^220"$Out fgets $Connect1024 ) ) ) {  
              
            
// Inform client's reaching to server who connect. 
            
fputs $Connect"HELO $HTTP_HOST\r\n" );  
                if (
$Debug) echo "Run : HELO $HTTP_HOST<br>";  
            
$Out fgets $Connect1024 ); // Receive server's answering cord. 

            // Inform sender's address to server. 
            
fputs $Connect"MAIL FROM: <{$Email}>\r\n" );  
                if (
$Debug) echo "Run : MAIL FROM: &lt;{$Email}&gt;<br>";  
            
$From fgets $Connect1024 ); // Receive server's answering cord. 

            // Inform listener's address to server. 
            
fputs $Connect"RCPT TO: <{$Email}>\r\n" );  
                if (
$Debug) echo "Run : RCPT TO: &lt;{$Email}&gt;<br>";  
            
$To fgets $Connect1024 ); // Receive server's answering cord. 

            // Finish connection. 
            
fputs $Connect"QUIT\r\n");  
                if (
$Debug) echo "Run : QUIT<br>";  

            
fclose($Connect);  

                
// Server's answering cord about MAIL and TO command checks. 
                // Server about listener's address reacts to 550 codes if there does not exist   
                // checking that mailbox is in own E-Mail account. 
                
if ( !ereg "^250"$From ) || !ereg "^250"$To )) {  
                    
$Return[0]=false;  
                    
$Return[1]="${Email} is address done not admit in E-Mail server.";  
                    if (
$Debug) echo "{$Email} is address done not admit in E-Mail server.<br>";  
                    return 
$Return;  
                }  
        }  
    }  
    
// Failure in socket connection 
    
else {  
        
$Return[0]=false;  
        
$Return[1]="Can not connect E-Mail server ({$ConnectAddress}).";  
        if (
$Debug) echo "Can not connect E-Mail server ({$ConnectAddress}).<br>";  
        return 
$Return;  
    }  
    
$Return[0]=true;  
    
$Return[1]="{$Email} is E-Mail address that there is no any problem.";  
    return 
$Return;  
}  
?>

Старый 22.01.2002, 05:42
sapenov вне форума Посмотреть профиль Отправить личное сообщение для sapenov Посетить домашнюю страницу sapenov Найти все сообщения от sapenov
  № 5  
sapenov

Регистрация: Feb 2001
Адрес: Canada, Toronto
Сообщений: 167
eregi - тормоза для сервера неслабые

лучше использовать preg

Старый 22.01.2002, 11:59
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 6  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Цитата:
Оригинал написал(а) sapenov
eregi - тормоза для сервера неслабые

лучше использовать preg
Какой смысл оптимизировать работу с eregi, если основное время работы скрипта (99%) пожирается совсем в другом месте?
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 23.01.2002, 05:49
sapenov вне форума Посмотреть профиль Отправить личное сообщение для sapenov Посетить домашнюю страницу sapenov Найти все сообщения от sapenov
  № 7  
sapenov

Регистрация: Feb 2001
Адрес: Canada, Toronto
Сообщений: 167
выполнение ваших 99% очень трудно прокнтролировать
поэтому указал лишь реальные места для оптимизации...

Старый 24.01.2002, 19:17
der вне форума Посмотреть профиль Отправить личное сообщение для der Посетить домашнюю страницу der Найти все сообщения от der
  № 8  
der

Регистрация: Nov 2001
Адрес: Казань
Сообщений: 130
Отправить сообщение для der с помощью ICQ Отправить сообщение для der с помощью Yahoo
что у вас за проверки? чего проверить хотите?

если хотите чтоб реальные мыла в соответствии с RFC-822 пропускал то эти рег.выр. не пподходят - значит не все смогут воспользоваться...


вот проверка (правда на перле)


Последний раз редактировалось der; 24.01.2002 в 19:22.
Старый 24.01.2002, 19:21
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 9  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Цитата:
Оригинал написал(а) der
что у ва с за проверки? чего проверить хотите?
В идеале -- существование почтового ящика. Программа минимум -- проверка существования почтового сервера для указанного домена.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 24.01.2002, 19:25
der вне форума Посмотреть профиль Отправить личное сообщение для der Посетить домашнюю страницу der Найти все сообщения от der
  № 10  
der

Регистрация: Nov 2001
Адрес: Казань
Сообщений: 130
Отправить сообщение для der с помощью ICQ Отправить сообщение для der с помощью Yahoo
зачем велосипед изобретать?
люди не первый год с этой проблеммой мучаются..

вот тут не плохой рецепт от мэтров

Создать новую тему   Часовой пояс GMT +4, время: 00:47.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:47.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.