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 :

[Tableaux] variable qui affiche erreur même quand c'est bon


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut [Tableaux] variable qui affiche erreur même quand c'est bon
    bonjour j'ai un petit problème avec mon anuaire de blog il m'affiche une erreur même si .... la condition est remplie
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    adresse du blog <input type="text" name="adresse"><br />//la saisie
    $adresse = mysql_real_escape_string($_POST['adresse']);// sécuriter  contre les injection
    elseif(empty($adresse))// vérifie si elle est vide
    {
    $erreur[] = ' aucune adresse n\'est envoyée ';// l'erreur qui s'affiche même si la condition est remplie
    merci de m'aider

    schats
    adresse pour tester

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Je sais pas si c'est ton copié/collé qui est tres crade ou ton code ....lol

    en tout cas essaie en reecrivant ça proprement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    adresse du blog <input type="text" name="adresse"><br />//la saisie
    $adresse = mysql_real_escape_string($_POST['adresse']);// sécuriter  contre les injection
    if(empty($adresse))// vérifie si elle est vide
    {
    $erreur[] = ' aucune adresse n\'est envoyée ';// l'erreur qui s'affiche même si la condition est remplie
    }
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    vu que c'est juste une partie de code je ne sais pas si j'ai bien présenter et expliquer ( ca se peu que ca soit mon code :s )

  4. #4
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Si il y a un elseif c'est qu il y a un if avant !

    Donc l'affectation de $adresse se fait dans le if , si tu passe pas dans la boucle qui affecte $adresse tu auras toujours l'affichage de l erreur !

    Maintenant je suis pas devin et si tu veux qu 'on t aide mieu va falloir donner un peu plus de code
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    euh ... pas
    compris
    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
    //la zone de saisie
    	 if(!empty($_POST) ) // le form a été soumis
    {
      // servira à enregistrer les messages pour les erreurs rencontrées
       $_POST = array_map('trim', $_POST);
     
            $erreur = array();
    //la securiter contre les injection sql
     
    if(empty($email))
             {
             $erreur[] = 'vous n\'avez pas mit d\'adresse mail merci d\'en mettre une valide.';
     
     
                     }
    				 elseif(strchr($email,"@") == FALSE)
    {
    // le reste des vérification  avec  le
    elseif(empty($adresse))
    tu voudra peut être tout le code non ???

  6. #6
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    tout le code peut etre pas mais une partie de code exploitable quand meme. Parce que là tu as des accolades ouvrantes qui ne sont pas fermées avant d'arriver a un elseif qu'aucun if ne précède. Soit c'est un copier/coller qui a raté, soit ton code a des erreurs structurelles sur les if(condition){...}elseif(condition){...}else{...}

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    dans ce cas je dirait un copier /coller qui a rater je vais voir ce qui est intéressants et je le posterait
    Code php : 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
    		 if(!empty($_POST) ) // le form a été soumis
    {
      // servira à enregistrer les messages pour les erreurs rencontrées
       $_POST = array_map('trim', $_POST);
     
            $erreur = array();// on met les erreur dans  une global 
     
             $pseudo = mysql_real_escape_string($_POST['pseudo']);
    $adresse = mysql_real_escape_string($_POST['adresse']);
    $categorie = mysql_real_escape_string($_POST['categorie']);
    $description = mysql_real_escape_string($_POST['description']); 
    $email = mysql_real_escape_string($_POST['email']);// sécuriet pour éviter les injection sql
     
     
     
             if(empty($email))
             {
             $erreur[] = 'vous n\'avez pas mit d\'adresse mail merci d\'en mettre une valide.';
     
     
                     }
    				 elseif(strchr($email,"@") == FALSE)
    {
    $erreur[] = ' veillez rentrer une vrai adresse mail';
    }
    elseif(empty($pseudo))
    {
    $erreur[] = ' merci de mettre un pseudo ';
    }
    elseif(empty($categorie) AND $categorie == "rien")
    {
    $erreur[] = ' aucune catégorie n\'a été selectionner';
    }     
    elseif(empty($adresse))
    {
    $erreur[] = ' aucune adresse n\'est envoyée ';
     
     $paf = mysql_query("select adresse from blog where adresse='$adresse'");
    } 
    elseif($paf['adresse'] != NULL)
    {
    $erreur[] = ' votre blog est deja dans  les base de données';
    }
    elseif((preg_match("#viagra|^cialis$|cialis</a>|levitra|<a |<img #i" , $message)) == true)
    {
    $erreur[] = ' spam interdit merci';
    }
    if( empty($erreur) )
    {  
     
     
    /// tout ce qui est avant c'est la vérification  avnat d'enregistrer dans la table
    mysql_query("INSERT INTO blog VALUES('','".$pseudo."','".$adresse."','".$categorie."','".$description."','".$email."')")or die (mysql_error());// ben l'enregistrement  dans la table
     
    {
    echo 'merci d\'avoir fait confiance à nous pour faire l\'annuaire de blog du site merci de mettre un petit lien sur votre blog merci de la part de l\'équipe';
    }
    }
    }
    if( !empty($erreur) ) // Donc le formulaire a été envoyé et au moins une erreur a été rencontrée
    {
       // on affiche les erreurs
       foreach( $erreur as $valeur )
        echo $valeur . '<br>';
    }
    voila :s si on connait le php on ( je pence comprendre le code ) sans plus d'explication

  8. #8
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Bon ,

    Mis a part une logique assez etrange ...ceux qui auront pris le temps de verifier les accolades comprendront ....

    J'ai un doute sur

    Personelement pour entrer une valeur dans un tableau j'utilise array_push() !
    Donc il se peut que le pointeur de ton tableau $erreur ne bouge pas et que tu reecrase a chaques fois la premiere valeur ...

    Apres ça serait bien que tu me reprecise ton probleme parce que je commence a perdre le sens de ton post avec toutes les versions que tu me donne !
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  9. #9
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Citation Envoyé par RideKick
    J'ai un doute sur

    Personelement pour entrer une valeur dans un tableau j'utilise array_push() !
    Donc il se peut que le pointeur de ton tableau $erreur ne bouge pas et que tu reecrase a chaques fois la premiere valeur ...
    son code est correct, ca permet d'empiler directement des valeurs dans des tableaux sans passer par array_push ou une gestion d'indices.

    Sinon je suis assez d'accord, un code "plus clair" serait plus simple pour pouvoir t'aider correctement.

  10. #10
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Citation Envoyé par koopajah
    son code est correct, ca permet d'empiler directement des valeurs dans des tableaux sans passer par array_push ou une gestion d'indices.
    Ok , je demandais confirmation dans la premiere version de ma reponse (c'est ok merci )


    schats >> Code plus clair ça veut dire quoi ?

    Exemple :

    tu as
    suivit de
    un else serait surement mieu venu ...

    autre exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    {
    echo 'merci d\'avoir fait confiance à nous pour faire l\'annuaire de blog du site merci de mettre un petit lien sur votre blog merci de la part de l\'équipe';
    }
    celle la je la connaissais pas je sui smeme etonné que tu n'ai pas un erreur pour ces lignes avec accolades inutiles ..
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    ben en fait j'ai une valeur qui si elle n'est pas remplie ou remplie me renvoie ce qui est contenu dans le $erreur[]
    et la variable est $_POST['adresse'] qui après un sécuriter devient $adresse
    Sinon je suis assez d'accord, un code "plus clair" serait plus simple pour pouvoir t'aider correctement.
    oui j'aurai pu utiliser
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(empty($erreur))
    {
    else
    {
     
    }
    mais que pour ce formulaire

    euh non on peu utilise le echo avec ou sans ... par contre je ne sais pas quelle est la plus rapide

  12. #12
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    rien que dans ton exemple tout bete de if/else il manque une accolade, on va pas s'en sortir!
    Pourrais-tu montrer clairement le code qui te pose probleme? mis en forme correctement et avec toutes les accolades ?

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    le code qui pose problème est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    elseif(empty($adresse))
    {
    $erreur[] = ' aucune adresse n\'est envoyée ';
    }
    l'erreur s'affiche quand elle n'est pas remplie (logique ) et quand elle est remplie ( moin logique )

  14. #14
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Mon avis :

    quand ta variable $_POST['adresse'] est vide,mysql_real_escape_string($_POST['adresse']) te renvoi 'False' donc
    $adresse vaut 'False'

    Resultat : $adresse n'est jamais vide quelquesoit l'action d'où affichage de l'erreur ....
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    ok mais alors comment le regler ..... car pour tout le reste sa marche

  16. #16
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Citation Envoyé par schats
    ok mais alors comment le regler ..... car pour tout le reste sa marche
    il suffit de vérifier que la variable n'est pas vide avant de faire l'echappement.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(isset($_POST['adresse']) && !empty($_POST['adresse']))
    {
    $adresse = mysql_real_escape_string($_POST['adresse']);
    }
    elseif(empty($_POST['adresse'])
    {
    $erreur[] = ' aucune adresse n\'est envoyée ';
    }

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    a ben tien avec ca ceci marche :s comprend pas
    enfin maitenant .. petit problème il n'y a plus de sécuriter .... si on fait actualiser sa remet les même données

  18. #18
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Si ta variable est vide, quand tu fais appel à mysql_real_escape_string($_POST['adresse']) tu te retrouves avec $adresse = false; en fait et ca doit créer des erreurs ensuite. Maintenant ca fonctionne, pense au tag Résolu.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/04/2007, 15h26
  2. Réponses: 5
    Dernier message: 20/10/2006, 12h44
  3. [Tableaux] Variable qui ne prend pas sa valeur
    Par stephane78 dans le forum Langage
    Réponses: 11
    Dernier message: 19/08/2006, 20h30
  4. [Tableaux] Variable qui prend plusieurs valeurs
    Par gandoulfe dans le forum Langage
    Réponses: 14
    Dernier message: 26/02/2006, 18h02
  5. [Tableaux] variable qui ne passe pas
    Par oceane751 dans le forum Langage
    Réponses: 5
    Dernier message: 31/12/2005, 02h56

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