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

EDI, CMS, Outils, Scripts et API PHP Discussion :

[Configuration] preg_match acceptant apostrophe


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut [Configuration] preg_match acceptant apostrophe
    Bonjour,

    J'ai une fonction de contrôle des caractères pour les libellés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function okTexte($texte)
    {
       	return preg_match("`^[a-zA-Z0-9éèêùûôçàâî°_\-\(\),';:?.!/\%:& ]*$`",$texte);
    }
    Lorsque j'écris : "c'est l'identité"

    J'ai un message d'erreur à cause des " ' ", pourtant j'ai mis que je l'acceptais.
    Est-ce un caractère qui demande quelque précaution ?

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut

    Perso que je fasse comme tu dis ou comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return preg_match('`^[a-zA-Z0-9éèêùûôçàâî°_\-\(\),\';:?.!/\%:& ]*$`',"c'est l'identité");
    ça marche très bien, ça renvoit "1".
    Ton problème ne vient pas d'autres part?

  3. #3
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut
    Je vais creuser la chose.

    Dès que je retire " ' ", c'est bon et je n'ai que cela comme contrôle.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Est-ce que vous testez des données qui proviennent des méthodes POST/GET/COOKIE ? Si oui, les magic_quotes ne sont pas activées sur votre serveur par hasard ? Il y aurait donc dans ce cas un backslash devant votre apostrophe.


    Julp.

  5. #5
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut
    Il y a bien les magic_quotes d'activés

    Mais je l'ai gère

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (!empty($_POST)) 
    	{
    	require_once("../inc/valRetour.php");
    	require_once("../inc/valButton.php");
     
    // Traitement des données en provenance du formulaire pour protection
    $indice=array_keys($_POST);
    foreach($indice as $i)
    {
    	$_POST[$i]=quote_post($_POST[$i]);
    }
    	// Contrôle des champs à mettre à jour
    	require_once("../inc/ctrReqSql.php");
    Dans "quote_post" je fais :

    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
    // Protège la variable en entrée de script
    function quote_post($value)
    {
    	if (is_numeric($value))
    	{ 
             return $value;
        }
        elseif(is_array($value))
        {
        	foreach($value as $k => $v)
        	{
        		if (is_numeric($k))
        		{
        			return $value;
            	}
            	$value[$k] = stripslashes($v);
        	}
        }
        else
        {
        	if (get_magic_quotes_gpc())
                $value = stripslashes($value);
       }
       return $value;
    }
    Et mon controle avec le " ' " se fait dans "ctrReqSql.php"

  6. #6
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    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
    // Protège la variable en entrée de script
    function quote_post($value)
    {
    	if (is_numeric($value))
    	{ 
             return $value;
        }
        elseif(is_array($value))
        {
        	foreach($value as $k => $v)
        	{
        		if (is_numeric($k))
        		{
        			return $value;
            	}
            	$value[$k] = stripslashes($v);
        	}
        }
        else
        {
        	if (get_magic_quotes_gpc())
                $value = stripslashes($value);
       }
       return $value;
    }


    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
     
    // Protège la variable en entrée de script
    function quote_post($value)
    {
         if (is_numeric($value))
    	 return $value;
         elseif(is_array($value))
         {
        	foreach($value as $k => $v)
        	    $value[$k] = quote_post($v);
         }
         else
         {
        	if (get_magic_quotes_gpc())
                $value = stripslashes($value);
         }
         return $value;
    }
    Mais bon je vois pas l'interet de faire ça en début de script hormis celui de perdre du temps... .. .

    @ tchaOo°

  7. #7
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut
    Ben si je ne fais pas ça c'est un vrai bordel dans mes champs de contrôle et dans ce qui est mis à jour dans ma base.

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Si le problème vient des magic_quotes, tu peux utiliser un fichier .htaccess pour modifier la configuration PHP avant l'exécution du script. Il y a une directive pour changer les options de php.ini, je ne l'ai plus en tête.

    J'en profite pour caser cet article : http://g-rossolini.developpez.com/tu...ns-regulieres/

  9. #9
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut
    Citation Envoyé par julp
    Est-ce que vous testez des données qui proviennent des méthodes POST/GET/COOKIE ? Si oui, les magic_quotes ne sont pas activées sur votre serveur par hasard ? Il y aurait donc dans ce cas un backslash devant votre apostrophe.


    Julp.
    Bon c'est bien un "\" qui traîne, je vais donc faire un "stripslashes"

    Merci, j'avais mal placé mon echo de contrôle.

  10. #10
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut
    Non, j'ai trouvé, je ne sais pas en core comment le résoudre, mais c'est en faite le saut de ligne.

    Je suis dans un champ "text" et en saisissant, je fais "enter" pour sauter une ligne et c'est lui qui n'est pas accepté.

    Pas trouver dans la doc mise en lien par yogui, mais on cherche on cherche

  11. #11
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Dans un contrôle input de type "text", la touhe Entrée du clavier sert à valider le formulaire. Pour passer une ligne, il te faut utiliser un contrôle textarea.
    Il me semble l'avoir traité dans un autre tuto : Les formulaires et PHP

  12. #12
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut
    Citation Envoyé par Yogui
    Dans un contrôle input de type "text", la touhe Entrée du clavier sert à valider le formulaire. Pour passer une ligne, il te faut utiliser un contrôle textarea.
    Il me semble l'avoir traité dans un autre tuto : Les formulaires et PHP
    J'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!okTexte(nl2br($_POST["dec_commentaire"])))
    Mais cela n'a rien changé

    J'ai mis 2 echo avant mon contrôle pour voir ce que cela donnait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo $_POST["dec_commentaire"];
    echo "<p>";
    echo nl2br($_POST["dec_commentaire"]);
    if(!okTexte(nl2br($_POST["dec_commentaire"])))
    Le 1er donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    On test le saut de ligne. Comme ceci
    Le 2ème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    On test le saut de ligne.
    Comme ceci
    C'est ok pour la présentation, mais pas pour le contrôle des caractères interdits.

  13. #13
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Et si tu ajoutes \s dans les caractères interdits ?

  14. #14
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut
    Là c'est top, c'est tout à fait ça.

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] preg_match vérifier apostrophe
    Par fazpedro dans le forum Langage
    Réponses: 4
    Dernier message: 04/04/2013, 16h11
  2. Réponses: 0
    Dernier message: 08/03/2008, 20h13
  3. Réponses: 2
    Dernier message: 04/10/2006, 13h03
  4. n'accepte pas les apostrophes
    Par flo456 dans le forum Langage
    Réponses: 6
    Dernier message: 18/09/2006, 14h14
  5. Comment configurer linux pour accepter le telnet
    Par youtou dans le forum Applications et environnements graphiques
    Réponses: 16
    Dernier message: 03/07/2006, 13h40

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