IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Test d'expression régulière sur variable POST


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juin 2010
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 210
    Points : 81
    Points
    81
    Par défaut Test d'expression régulière sur variable POST
    Bonjour,

    Je rencontre un pb dans mon code ci-dessous.
    En effet, je récupère un champs "AdresseIP" via $_POST[]
    J'aimerai tester cette variable afin de voir si la valeur rentrée est correctement formatée mais j'ai l'impression que mon prog ne rentre jamais dans la boucle de test.
    Pourriez-vous m'aider svp à y vor un peu plus clair, sachant que c'est aussi la première fois que j'utilise les expressions régulières.
    En d'autre terme, j'ai l'impression que le test "if(preg_match($pattern, $NouvelleAdresseIP))" ne fonctionne pas correctement.
    Si le champs récupéré est vide, il ne m'affiche pas le msg d'erreur.
    Si le champs est correctement rempli, l'adresse n'est pas modifiée alors qu'avan d'intégrer ce test ça fonctionnait
    Si le champs est rempli avec une adresse incorrecte, le message d'erreur ne s'affiche pas


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
     
        	if( isset($_POST['BoutonModifier'] ) )
        	{
        		$result = mysql_query($VerifierPresenceDNS) or die ("Erreur de requÛte de connexion : " . mysql_error()) ;
        		$count = mysql_num_rows($result);
        		if( $count === 1 )
        		{
        			if( isset( $_POST['AdresseIP'] ))
        			{
                $ResultatRechercheDNS = mysql_query("$RechercherDNS") or die ("Erreur de requete de recherche DNS : " . mysql_error());
                $count = mysql_num_rows($ResultatRechercheDNS);
                if( $count === 1 )
                {
                    // Rechercher ancien DNS
                    $ctItem = mysql_fetch_array($ResultatRechercheDNS);
                    $AdresseDNS = $ctItem[0];
                    $AncienneAdresseIP = $ctItem[1];
                    $NouvelleAdresseIP = mysql_real_escape_string($_POST['ID']);
     
                    // Vérification Si NouvelleAdresseIP correcte
    //              Expression régulière AdresseIP
                    $pattern = "#[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}#" ;
                    if(preg_match($pattern, $NouvelleAdresseIP))
                    {
                      // Nouvelle AdresseIP OK
                      // Supprimer DNS
                      $cmd = "dnscmd ServeurDNS /RecordDelete ZoneDNS $AdresseDNS.Domaine A $AncienneAdresseIP /f";
    //                system($cmd);
     
                      //Mettre à jour DNS dans BDD
                      $result = mysql_query($MAJ_DNS) or die("Erreur de mise Ó jour : " . mysql_error());
     
                      //Mettre à jour la table t_DNS_UA avec nouvelle adresseIP
                      $query="UPDATE t_DNS AS T1 SET AdressesReseaux = CONCAT(LEFT(T1.AdresseIP, LOCATE('.', T1.AdresseIP, (CHAR_LENGTH(T1.AdresseIP) - 3))),'0') WHERE T1.AdresseIP LIKE '%.%.%.___';";
                 			$result = mysql_query($query) or die("Erreur de modification : " . mysql_error());
     
                      $query="UPDATE t_DNS AS T1 SET AdressesReseaux = CONCAT(LEFT(T1.AdresseIP, LOCATE('.', T1.AdresseIP, (CHAR_LENGTH(T1.AdresseIP) - 2))),'0') WHERE T1.AdresseIP LIKE '%.%.%.__';";
                 			$result = mysql_query($query) or die("Erreur de modification : " . mysql_error());
     
                      $query="UPDATE t_DNS AS T1 SET AdressesReseaux = CONCAT(LEFT(T1.AdresseIP, LOCATE('.', T1.AdresseIP, (CHAR_LENGTH(T1.AdresseIP) - 1))),'0') WHERE T1.AdresseIP LIKE '%.%.%._';";
                 			$result = mysql_query($query) or die("Erreur de modification : " . mysql_error());
     
                      $query="UPDATE t_DNS SET AdressesReseaux_Traitee = inet_aton(AdressesReseaux);";
                 			$result = mysql_query($query) or die("Erreur de modification : " . mysql_error());
     
                      $query = "UPDATE t_DNS AS D1, t_Reseaux_ARSIT AS R1 SET D1.Service = R1.Service WHERE D1.AdressesReseaux_Traitee = R1.AdressesReseaux_Traitee;";
                 			$result = mysql_query($query) or die("Erreur de modification : " . mysql_error());
     
                      $cmd = "dnscmd ServeurDNS /RecordAdd ZoneDNS $AdresseDNS.Domaine A $NouvelleAdresseIP";
    //                system($cmd);
                    }
        			      else
        			      {
                        $ErreurIP = "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\" color=\"FF0000\">ERREUR !! Vous n'avez pas indiquÚ <br>une Adresse IP valide</font>";
                    }
                }
     
                mysql_close($connexion);
        				echo "<meta http-equiv=\"refresh\" content=\"0;url=./GestionTableDNS.php\" />" ;
        			}
        			else
        			{
        			    $ErreurIP = "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\" color=\"FF0000\">ERREUR !! Vous n'avez pas indiquÚ <br>une Adresse IP valide</font>";
        			}
        		}
        		else
        		{
        			$ErreurID = "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\" color=\"FF0000\">ERREUR !! Vous n'avez pas indiquÚ <br> un ID valide</font>";
        		}
        	}

  2. #2
    Membre régulier
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juin 2010
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 210
    Points : 81
    Points
    81
    Par défaut
    Bon bah merci qd même mais le pb est maintenant résolu en grande partie.
    Il suffisait de modifier la variable $pattern (Expression régulière) sans oublier de corriger la variable $NouvelleAdresseIP qui devait récupérer $_POST['ADresseIP'] et non $_POST['ID'] par ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                    $NouvelleAdresseIP = mysql_real_escape_string($_POST['AdresseIP']);
     
                    // Vérification Si NouvelleAdresseIP correcte
    //              Expression régulière AdresseIP
                    $pattern = "#[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}#" ;
    Par contre il me reste un léger pb, c'est de vérifier que le test via l'expression régulière fonctionne correctement et ne doit pas être correct si on entre une adresse IP invalide (0.xxx.xxx.xxx ou 00.xxx.xxx.xxx ou 000.xxx.xxx.xxx)
    En gros comment faire pour exclure les adresses IP commençant par "0" via l'expression régulière.

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    Pour valider une adresse ip : PHP a tout prévu avec filter_var() avec le filtre FILTER_VALIDATE_IP
    Pour limiter l'étendue tu peux utiliser les flags : FILTER_FLAG_NO_PRIV_RANGE et FILTER_FLAG_NO_RES_RANGE.
    Enfin il te reste la fonction ip2long() au besoin.
    Bref, à choisir.

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juin 2010
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 210
    Points : 81
    Points
    81
    Par défaut
    OK Merci
    Je vais regarder à ça et reviendrai vers vous dès que ce sera fait.

Discussions similaires

  1. Expression régulière sur un ls
    Par goeland444 dans le forum Linux
    Réponses: 3
    Dernier message: 13/02/2007, 14h47
  2. expression régulière sur flux
    Par zais_ethael dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 19/09/2006, 23h38
  3. Expressions régulières avec variable
    Par killprog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/04/2006, 17h03
  4. Test d'expression régulière, besoin d'aide
    Par RedShift2 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/02/2005, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo