Klez Posted November 22, 2005 Report Share Posted November 22, 2005 Uztaisīju vienu maziņu skriptiņu, kas pārbauda e-mail, vai ir valīds un vai domēns eksistē, ar iespēju bloķēt noteiktus domēnus Kapēc šit rakstu. Man liekas ka šī ir aktuāla problēma pie reģistrācijām. <?php ini_set('display_errors',0); //lai fsockopen nebljaustas ja nau pareizs hosts //šajā masīvā savadām email adreses, ar kurām nav iespējams veikt reģistrāciju //šie trīs domēni ir temporarie email servisi $blocked_domain = array("pookmail.com","mailinator.com","dodgeit.com"); function validate_email($email_address) { //atgriezham FALSE ja ir kljuuda, ja viss ok atgriezham TRUE global $blocked_domain; if (preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._-]+\.[A-Z]{2,6}$/i", $email_address)){ /*E - mail adreses formāts ir OK, {2,6} vaig jo ir .museum*/ $m = explode('@',$email_address); $host = $m[1]; unset($m); if (in_array($host,$blocked_domain)) return FALSE; $fp = fsockopen($host, 80, $errno, $errstr, 1); /*piekonektējams pie hosta. Parasti uz visiem mail domēniem 80 ports ir atvērts , griežas kāds WEBs vai arī WEB mails. */ if (!$fp) {/* hosts neexistee */ fclose($fp); return FALSE; } return TRUE; }else return FALSE; //Nav OK E - mail formāts } if (validate_email('manspasts@kautkas.lv')) echo 'Emails pareizs'; else echo 'Nepareiz emails!'; ?> Manuprāt daudz maz normāls :), lai izķerstītu tādus kas regojas ar bla@tralalaa.lv un bloķētu noteiktus domēnus. Vēl vienīgi varētu te piemest klāt adreses, kurās ir iespējams reģistrēt temporary emailus, kā http://www.pookmail.com vēl ir te bik http://www.zend.com/zend/spotlight/ev12apr.php Te ir jāiet manuprāt pie katra servera runāties. Respektīvi ja ir inbox.lv tad pop.inbox.lv one.lv ir one.lv, lab, kko sacepināšu :) pagaidām itais Link to comment Share on other sites More sharing options...
Delfins Posted November 22, 2005 Report Share Posted November 22, 2005 (edited) /*piekonektējams pie hosta. Parasti uz visiem mail domēniem 80 ports ir atvērts , griežas kāds WEBs vai arī WEB mails. */ apstrīdams, tad jau labāk uz 110/25 Edited November 22, 2005 by Delfins Link to comment Share on other sites More sharing options...
[Ya] Posted November 22, 2005 Report Share Posted November 22, 2005 (edited) /*piekonektējams pie hosta. Parasti uz visiem mail domēniem 80 ports ir atvērts , griežas kāds WEBs vai arī WEB mails. */apstrīdams, tad jau labāk uz 110/25 tieši tā, man draugam piem. mājās nemētājas webs, bet mailserveris griežās ... kā arī jautājums kapēc aizveram socket ja atbildes nav, bet kad ir atbilde tad neaizveram socket ? Edited November 22, 2005 by [Ya] Link to comment Share on other sites More sharing options...
Delfins Posted November 22, 2005 Report Share Posted November 22, 2005 If the call fails, it will return FALSE nav jau ko close-ēt Link to comment Share on other sites More sharing options...
rpr Posted November 22, 2005 Report Share Posted November 22, 2005 nevajag jau nemaz visu sarezjgjiit, ir taada funkcija kaa getmxrr() Link to comment Share on other sites More sharing options...
hmnc Posted November 22, 2005 Report Share Posted November 22, 2005 es parasti rakstu feikotu meilu ar eksistējošu domēnu, ja nevajag kkādu aktivizāciju. ja vajag aktivizāciju tad tāpat vajadzēs ievadīt valīdu meilu (kkādu miskasti), lai saņemtu info... tā kā diezgan bezjēdzīgs pasākums Link to comment Share on other sites More sharing options...
Klez Posted November 22, 2005 Author Report Share Posted November 22, 2005 (edited) tods te: http://paste.php.lv/2892 Skripts paarbauda vai e-pasta adrese eksistē! Bet gljuki ira. Nevarēju atrast tvnet.lv serveri, kas atbildeetu uz 25 porta, ja nu vieniigi tas mails vinjiem staav uz latnet serveriem .. ar inbox probleema ... 220 smtp.inbox.lv ESMTP HELO inbox.lv 250 smtp.inbox.lv MAIL FROM: <xxxxx@inbox.lv> 250 ok RCPT TO: <xxxxx@inbox.lv> 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1) kur varētu būt proba ? emails ir pareizs un iists. Edited November 22, 2005 by Klez Link to comment Share on other sites More sharing options...
rpr Posted November 22, 2005 Report Share Posted November 22, 2005 1. es domaaju, ka paarsvaraa tev atgrieziis shaadu kljuudu, jo open relay serveri tiek blacklisteeti un visi no taa izvairaas. deelj spama protams. 2. var meegjinaat ar finger noteikt vai ir taads juuzers uz servera, bet biezji vien arii no personiigaas pieredzes skatoties tas serviss parasti tiek atsleegts viens no pirmajiem 3. ko tu tur ciinies, ja jau ir php core funkcijas, kas cheko domainus. 4. http://lv.php.net/eregi Link to comment Share on other sites More sharing options...
Klez Posted November 22, 2005 Author Report Share Posted November 22, 2005 (edited) beigas nonaacu pie itaada koda cita varianta nau, tiek pārbaudīts vai ira DNS tāds, respektīvi šķību domēnu nevaru iedot ... Edited November 22, 2005 by Klez Link to comment Share on other sites More sharing options...
rpr Posted November 22, 2005 Report Share Posted November 22, 2005 taa jau labaak, bet tik un taa labaak izmanto checkdnsrr ($host, "MX" ) Link to comment Share on other sites More sharing options...
hmnc Posted November 22, 2005 Report Share Posted November 22, 2005 es laikam esmu īpaši stulbs padevies, bet joprojām neredzu vajadzību pēc meila čekošanas caur hosta konekcijas esamību. ievadīt var tur dajebko un viņš vienalga rāda, ka meils ir OK. un ja nav aktivizācijas tad es ievadu blahblahblah@inbox.lv un tu vari kaut izlekt pa logu - viņš tāpat nav valīds lai gan funkcija atgriež OK. tātad secinājumi: 1) ja meils ir tikai ķeksīša pēc (obligātais fields, bez aktivizācjas) tad pietiek tika ar regexpu - nu nafig taisīt liekas konekcijas un lieki resursus tērēt, ja tā funkcija tāpat aiziet pa pieskari ierakstot jebkuru feikotu meilu ar reālu domēnu galā?! 2) ja ir aktivizācija, tad lietotājs principā rakstīs iekšā kādu reālu meilu, lai varētu aktivizāciju apstiprināt (dooh). ja negribēs tad skatīt pirmo punktu - pārbaudam pēc regexpa un smtp tāpat atmetīs atpakaļ, ja nebūs valīds meils (jebkurā gadījumā) 3) ja taisa maillistes - skat. otro un pirmo punktu. tātad galvenā problēma ir tāda, ka tu NEKAD nevarēsi (atskaitot izmantojot aktivizācijas mailus) noteikt vai meils tiešām ir valīds vai nav. un līdz ar ko visa šī reģistrācijas jezga tiek novesta līdz pašam elementārākajam - pārbaudam ar regexpu un metam aktivizācijas meilu (pirmstam jāpabrīdina lietotājs, tas uzreiz stimulē pareiza meila ievadi). blahblahblah@inbox.lv tev jebkurā gadījumā atnāks atpakaļ maildelivery error. Link to comment Share on other sites More sharing options...
hmnc Posted November 22, 2005 Report Share Posted November 22, 2005 + protams tādi sīkumi kā: if (isset($_POST['m'])){ if (validate_email($_POST['m'])) echo $_POST['m'].' - ir OK'; else echo $_POST['m'].' - Nepareiza adrese'; } aizstājami ar: if ( isset($_POST['m']) ) { echo $_POST['m'].( validate_email($_POST['m']) ? ' OK' : ' BAD'); } Link to comment Share on other sites More sharing options...
Kristabs Posted November 22, 2005 Report Share Posted November 22, 2005 a starpība ta kāda? kā pašam ērtāk tā arī raksti... Link to comment Share on other sites More sharing options...
hmnc Posted November 22, 2005 Report Share Posted November 22, 2005 performance (hāhā sekundes miljardā daļa - sīkums, bet patīkami) + pārskatāmāk + glītāk. + kāda hera pēc skriptā vēl tiek explodēts kkas? regexpā nogrupē domēna regus un pēctam vienkārši izmanto matchu domēnam. preg_match ( string pattern, string subject [, array &matches [, int flags [, int offset]]] ) Link to comment Share on other sites More sharing options...
Klez Posted November 23, 2005 Author Report Share Posted November 23, 2005 Ju tas ka var iedot blaaa@inbox.lv tas jaa. Vieniigaa sisteem jau ir registraacija ar paarbaudes mailu. Bet nu parasti jau "pareizie" lietotaaji ievad blaaa@lalalala.lv vai kkaa taaa. Bus laiks uztaisiishu skriptu, kas suuta autorizacijas kodu. Domaju ka taads noderees kaadam :) turmaak :) es ceru :) Link to comment Share on other sites More sharing options...
Recommended Posts