checkdnsrr erreur format du domaine

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : checkdnsrr erreur format du domaine

par tomahawk » 27 avr. 2009, 18:35

Merci de votre aide, tout particulièrement Genova. Etant en vacances je ne peux pas tester ta fonction. Je posterais le résultat final!

Encore un grand merci à tous!

par Genova » 25 avr. 2009, 15:57

Si ça t'interesse, voilà une fonction qui marche plutôt bien :
function email_valid($email, $check_server = true)
{
	if (preg_match('/^\w[-.\w]*@(\w[-._\w]*\.[a-zA-Z]{2,}.*)$/', $email, $match))
	{
		if (!$check_server)
		{
			return (true);
		}

		$check = false;
		if (function_exists('checkdnsrr'))
		{
			$check = checkdnsrr($match[1] . '.', 'MX');
			if (!$check)
			{
				$check = checkdnsrr($match[1] . '.', 'A');
			}
		}
		else if (function_exists('exec'))
		{
			$result = array();
			@exec('nslookup -type=MX ' . $match[1], $result);
			foreach ($result as $line)
			{
				if (substr($line, 0, strlen($match[1])) == $match[1])
				{
					$check = true;
					break;
				}
			}
		}

		if (!$check)
		{
			$errno = 0;
			$errstr = '';
			$check = @fsockopen($match[1], 25, $errno, $errstr, 5);
		}

		return ($check);
	}
	return (false);
}

par abdelseo » 25 avr. 2009, 15:51

pour la fonction checkdnsrr adapte la par nslookup je pense que sa va marché

par Nagol » 24 avr. 2009, 21:40

peut etre pas relié mais

checkdnsrr n'existe pas sous windows avant php 5.3, autrement je vois pas le soucis avec un "-" dans un nom de domaine.

checkdnsrr erreur format du domaine

par tomahawk » 24 avr. 2009, 19:32

Bonjour,

Grand débutant en php j'ai été chargé de modifier quelque peu un site de petites annonces codé en php. J'ai pu m'en sortir mais une erreur persiste :(
Dans le formulaire pour poster une annonce, une adresse email est obligatoire mais un type de domaine n'est pas supporté: @mon-truc.fr
Le problème vient surement de "-" mais je suis quelque peu perdu!

L'erreur stipule: "ce type de domaine n'est pas supporté"

Voici le code :
if ($email)
	 {
	 $email = strtolower($email); 
  
  	if (strlen($email) < 6){ 
	echo "$email : Email trop court<br>";
	$retour=1;
	} 
	  if (strlen($email) > 255) {
	echo "$email : Email trop long<br>";
	$retour=1;
	} 
	  if (!ereg("@", $email)){
	 echo "$email : Le email n'a pas d'arobase (@)<br>"; 	
	$retour=1;
	}
	  if (preg_match_all("/([^a-zA-Z0-9_\@\.\-])/i", $email, $trouve)) 
  	{ 
	  echo "$email : caractère(s) interdit dans un email (".implode(", ",$trouve[0]).")."; 
	echo "<br>";
	$retour=1;
  	} 
	  if (!preg_match("/^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}\$/i", $email)) 
	  { 
	  echo "$email : ce n'est pas un la forme d'un email.<br>"; 
	$retour=1;
	  } 
	  list($compte, $domaine)=split("@", $email, 2); 
	  if (!checkdnsrr($domaine, "MX")){ 
	  echo "$email : Ce domaine ($domaine) n'accepte pas les emails<br>"; 
          $retour=1;
  	  } 


Merci d'avance de votre aide,

Tomahawk