FONCTION de validation d'une adresse IP avec PHP

cs_faty86 Messages postés 20 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 5 juin 2008 - 3 juin 2008 à 16:05
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 3 juin 2008 à 18:58
Salut tout le monde !!
Bon j'ai integré une fonction dans mon code php pour valider le format d'une adresse IP le problème lors de l'execution j'ai ce message :
Fatal error: Maximum execution time of 30 seconds exceeded in c:\program files\easyphp1-8\www\index\modifcnx.php on line 9
Je ne comprends pas ou est mon erreur!
voici mon code :

<?php
function validerIP($ip)
   {
        $tab = array();
        $tab=explode(".", $ip); // je mets les parties de ma chaine dans un tableau (separateur =".")
     
        for($k=1;$k <= sizeof($tab);$k++) // 
            {   settype($tab[$k],"integer"); // je convertis en entier
            }
        $k=1;
        while($k < sizeof($tab) && $tab[$k]<=254)
         {  $k++;                        // je parcoure tant que les valeurs sont <  a 254
         }
       if($k==sizeof($tab) )
              { return true;}
        else
              {return false;}


}


     if(!session_is_registered("priv"))
 {
    session_register("priv");
 }             
   $link = mysql_connect("localhost","root","");
  mysql_select_db('administration equip1');
$err="L adresse ";
$c=0;
$x=0;
echo'<html>';
echo'<head>';


             
                echo'<link rel="stylesheet" href="style.css" media="screen" type="text/css" />';
              echo'</head>';




               if (strcmp($_POST["zone3"],"")==0 ||strcmp($_POST["zone4"],"")==0 || strcmp($_POST["zone5"],"")==0 )
                 {
                        $x=1;
                        echo "<SCRIPT LANGUAGE="JavaScript">\n";
           
                        echo 'alert("Vos données sont invalides: veuillez remplir tous les champs");';
 
                  echo "</SCRIPT>\n";
                 }


              else
                  {
                    if(!validerIP($_POST["zone3"]))
                         {$c++;
                          $err=$err."IP_CNX";
                         }
                    if( !validerIP($_POST["zone2"]))
                         {$c++;
                          $err=$err.",IP_Planet";
                         }
                    if( !validerIP($_POST["zone2"]))
                         {$c++;
                          $err=$err."et IP_LAN_CNX";
                         }
                    if($c==1)
                         {   $x=1;
                             echo "<SCRIPT LANGUAGE="JavaScript">\n";
           
                             echo 'alert($err."est invalide");';
 
                             echo "</SCRIPT>\n";
                          }
                     else
                          {   $x=1;
                             echo "<SCRIPT LANGUAGE="JavaScript">\n";
           
                             echo 'alert($err."sont invalides");';
 
                             echo "</SCRIPT>\n";
                          }
                         
                    }


 


           if($x==0)
            {
                $res=mysql_query("select * from Connexion where ID_CNX='".$_POST["zone1"]."'") or die("requete res non executee");


                $lig=mysql_fetch_array($res);
               mysql_query("UPDATE connexion SET Type_CNX='".$_POST["typ_cnx"]."' WHERE ID_cnx='".$_POST["zone1"]."'") or ("requete update nom non executee");


                      mysql_query("UPDATE client SET IP_CNX='".$_POST["zone3"]."' WHERE ID_CNX='".$lig['ID_CNX']."'") or ("requete update nom non executee");
                      mysql_query("UPDATE client SET IP_Planet='".$_POST["zone4"]."' WHERE ID_CNX='".$lig['ID_CNX']."'") or ("requete update nom non executee");
                      mysql_query("UPDATE client SET LAN_CNX='".$_POST["zone5"]."' WHERE ID_CNX='".$lig['ID_CNX']."'") or ("requete update nom non executee");
                     
                   
                       echo'<center> MODIFICATIONS DE LA CONNEXION EFFECTUEES AVEC SUCCES
</center>';
                       echo'

';


 
             echo'';
             echo'
';
            }
 
 if(strcmp($_SESSION['priv'],"admin") ==0)
 {
  echo'<form name="ad" action="admin.php">';
  echo'<center></center>';
  echo'</form>';
 }
 else
 {
  echo'<form name="tech" action="tech.php">';
  echo'<center></center>';
  echo'</form>';
 }
 
 echo'';
 echo'</html>';
                       
mysql_close($link);
?>

Merci de m'aider !! c'est hyper urgent je dois rendre mon application tèrs bientot!

1 réponse

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
3 juin 2008 à 18:58
salut

si ton ip est invalide, alors tu peux avoir sizeof($tab) == 0 donc une boucle infinie...

bref, tu devrais utiliser filter (cf php.net) ou bien long2ip(ip2long($ip))==$ip

t'auras un resultat bien plus fiable
0
Rejoignez-nous