Newsgroup: it.comp.www.php
Titolo: domanda su un'altro script

date un'occhiata qui
http://www.alcohol-software.com/download.php
per scaricare il file, ti chiedono l'email.
se do una cosa tipo
fdj...@libero.it
lo script si accorge che non è valida!!
Come fa??
grazie
Andrea

 Come fa??
2 metodi:
1- Validazione sintattica (non e questo il caso)
2- Controllo tramite SMTP/Relay.
-- 
I'am what I'am, I do what I can

 2- Controllo tramite SMTP/Relay.
cioč? Come funziona?

 cioh? Come funziona?
Una ricerchina con google? Una letta agli RFC sull'SMTP?


 Una letta agli RFC sull'SMTP?
boh, non so che roba sia, mai sentita (RFC)
Grazie,
Andrea

 boh, non so che roba sia, mai sentita (RFC)
Sono i documenti che definiscono i protocolli (e molto altro) che
stanno alla base di Internet.
http://rfc-editor.org/


> 
http://rfc-editor.org/
ok, grazie per le info. Cmq mi sa che mollo: la realizzazione o la
comprensione di come funziona quello script è ben al di fuori della mia
portata
Andrea

trova l'SMTP per quel domino, fa una connessione e verifica se accetta
l'utente su quel dominio
ovviamente basta usare un email vera per bypassare il tutto: ma se manda
un'email, non ricevi nulla...
"Muppy" <mup...@NOSPAMlibero.it> ha scritto nel messaggio
news:RVqBb.179048$e6.66...@twister2.libero.it...


 I'am what I'am, I do what I can
Ciao!
Interessante questo argomento, ho dato uno sguardo veloce al sito ma x ora
ci ho capito poco in google ho trovato 
http://www.ugimex.org/rfc/rfc.aspx
che descrive le RFC per i protocolli SMTP, POP3, IMAP ma non ho *intuito*
come sia possibile utilizzare le RFC con php.
Setec, tu che hai un grado di cultura informatica + elevato, hai voglia di
farci un esempio?
Sarebbe utile per tanti webmaster evitare ad es. moltissime iscrizioni con
indirizzi email fasulle o più semplicemente perchè sbagliano a digitarlo.
E' possibile usare le RFC per controllare la validità di un indirizzo email
usando solo php?
Ciao e forza Setec
CR

 email usando solo php?
E va be, la mia figura l'ho fatta, se siete arrivati a leggere fin qui
vi meritate anche il dolce:
<?php 
define ('DEBUG_OK', false);
Class CSmtp
{
	var $timeout = 10;
	function checkmail ($email = "")
	{
		$host = substr (strstr ($email, '@'), 1, 255) . ".";
 
		if (getmxrr ($host, $mxhosts[0],  $mxhosts[1]) == true) 
		{ array_multisort ($mxhosts[1],  $mxhosts[0]); }
		else
		{
			$mxhosts[0] = $host;
			$mxhosts[1] = 10;
		} 
		if (DEBUG_OK) { print_r ($mxhosts); }
 
		$port = 25;
		$error = '';
		$localhost = '
libero.it
';
		$sender = 'info@' . $localhost;
 
		$result = false;
		$id = 0;
		while (!$result && $id < count($mxhosts[0]))
		{
			if (function_exists ("fsockopen"))
			{
				if (DEBUG_OK) { print_r ($id . " " . $mxhosts[0][$id]); }
				if ($connection = fsockopen ($mxhosts[0][$id], $port, $errno,
$error, $this->timeout))
				{
					fputs ($connection,"HELO $localhost\r\n"); // 250
					$data = fgets ($connection,1024);
					$response = substr ($data,0,1);
					if (DEBUG_OK) { print_r ($data); }
 
					if ($response == '2') // 200, 250 etc.
					{ 
						fputs ($connection,"MAIL FROM:<$sender>\r\n");
						$data = fgets($connection,1024);
						$response = substr ($data,0,1);
						if (DEBUG_OK) { print_r ($data); }
 
						if ($response == '2') // 200, 250 etc.
						{ 
							fputs ($connection,"RCPT TO:<$email>\r\n");
							$data = fgets($connection,1024);
							$response = substr ($data,0,1);
							if (DEBUG_OK) { print_r ($data); }
 
							if ($response == '2') // 200, 250 etc.
							{ 
								fputs ($connection,"data\r\n");
								$data = fgets($connection,1024);
								$response = substr ($data,0,1);
								if (DEBUG_OK) { print_r ($data); }
 
								if ($response == '2') // 200, 250 etc.
								{ $result = true; }
							}
						}
					}
					fclose ($connection);
					if ($result) { return true; }
				}
			}
			$id++;
		}	
		return false;
	}
}
?>
// esempio
function checkmail($address) 
{
	$smtp = new CSmtp();
	if ($smtp->checkmail($address))
	{ return "Ok"; }
	else
	{ return "Ko"; }



Setec ti adoro! 6 Il mio guru :-)
Fossi stato il mio prof di informatica al posto di un perfetto idiota che
non ti *svelava* nemmeno il segreto per impostare i preferiti in internet, a
quest'ora nella vita avrei sicuramente realizzato qualcosa di meglio!
Thnks e forza Setec!
Ora provo lo script
Ciao
CR
P.S. Se fondi un partito, una squadra di calcio, o apri un sito internet,
considerami il primo dei tesserati, tifoso, supporter ed estimatore  :-)


250 ser...@tin.it... OK
RCPT TO: <234uh34yv53d7234@***>
250 234uh34yv53d7234@***... go ahead, will do my best
QUIT
221 QUIT (no delivery, attempt 1 of 3: blacklisted for 60 seconds)
Leonardo
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.

 vi meritate anche il dolce:
bhč, grazie! io perň avrei un problemino: non riesco a farlo andare: mi
presenta una pagina bianca e non mi scrive nulla: ecco il codice che go
usato
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<?php
define ('DEBUG_OK', false);
Class CSmtp
{
var $timeout = 10;
function checkmail ($email = "
mup...@libero.it
")








}
return false;
}
}
?>
<?php
$address="
mup...@libero.it
";
function checkmail($address)
{
$smtp = new CSmtp();
if ($smtp->checkmail($address))
{ return "Ok"; }
else
{ return "Ko"; }
}
?>
</body>
</html>
grazie
Andrea

 che go usato
AAAARRRRGGGGGHHHHH!!!!
Come pensi che possa funzionare se non chiami la funzione checkmail da
nessuna parte?


 nessuna parte?
ok, dai, ho capito che č meglio se vado a letto un altro po' che questa
mattina mi sono svegliato con la febbre...
Grazie!!!
Andrea

			}
Leonardo


 connessione il client bene educato :-) avverte:
Grazie dell'improvement.


> Grazie dell'improvement.
sto provando lo script in locale, ma ho notato che la versione di php che
gira su win non implementa la funzione getmxrr. Come suggerito qui,
http://it2.php.net/getmxrr
ho preso questa funzione, che a quanto pare la dovrebbe sostituire, ma come?
grazie
Andrea
<?php
$command = "nslookup -type=mx 
yahoo.com
";
exec ( $command, $result );
$i = 0;
while ( list ( $key, $value ) = each ( $result ) ) {
   if ( strstr ( $value, "mail exchanger" ) ) { $nslookup[$i] = $value;
$i++; }
}
while ( list ( $key, $value ) = each ( $nslookup ) ) {
   $temp = explode ( " ", $value );
   $mx[$key][0] = $temp[3];
   $mx[$key][1] = $temp[7];
   $mx[$key][2] = gethostbyname ( $temp[7] );
}
   array_multisort ( $mx );
?>

 ma come?  grazie
Ovviamente devi essere in safe_mode off e deve essere presente il
comando nslookup (es. Win2000 etc.).
<?php
function win_getmxrr  ($hostname = "", &$mxhosts, $weight = array())
{
	$command = "nslookup -type=mx " . $hostname;
	$nslookup = array ();
	$mx = array ();
 
	exec ( $command, $result );
	$i = 0;
	while ( list ( $key, $value ) = each ( $result ) ) {
	   if ( strstr ( $value, "mail exchanger" ) ) { $nslookup[$i] = $value;
	$i++; }
	}
	while ( list ( $key, $value ) = each ( $nslookup ) ) {
	   $temp = explode ( " ", $value );
	   $mx[$key][0] = $temp[3];
	   $mx[$key][1] = $temp[7];
	   $mx[$key][2] = gethostbyname ( $temp[7] );
	}
 
	array_multisort ( $mx );
	$mxhosts = $mx;
	return count($mxhosts)>0;
}
$mx = array();
win_getmxrr("
google.com
", $mx);
print_r ($mx);
?>
