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 :

Variable ok et pas du tout, le résultat n'est pas bon


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Points : 102
    Points
    102
    Par défaut Variable ok et pas du tout, le résultat n'est pas bon
    Je me mélange les pinceaux avec mes variables et je n'ai jamais le résultat attendu

    url : si vide ou égal à http:// => afficher un message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(empty($_GET['url']) && $_GET['url']=='http://') {  
       echo "Ok";
    }
    else {
    	echo" message d'erreur";
    }
    sujet : si le sujet n'est pas vide ou = à cestbon => Affiche un message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(empty($_GET['subject']) && $_GET['subject']=='cestbon') {   
    	echo "Ok";
    }
    else{
    	echo" message d'erreur";
    }
    si email n'est pas vide ==> affiche un message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     if(empty($_GET['email']) && $_GET['email']=='') {   
       echo "Ok";
    }
    else{
    	echo" message d'erreur";
    }
    Ca vous semble cohérant ou pas ? je n'arrive pas afficher les bonnes erreurs. en fait les messages d'erreurs s'affichent directement sur ma page sans les avoir encore traités par mon formulaire...

    D'avance merci pour votre aide
    Yule

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    c'est pas if ( empty()... ) c'est if ( ! empty()... )

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 84
    Points : 101
    Points
    101
    Par défaut
    Bonjour,

    tu peux verifier ta condition comme suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $my_var='test';
    $var  = isset($my_var) ?$my_var : "message d'erreur";
     
    echo $var;
    ?>
    ++
    zwaldo

  4. #4
    Membre régulier
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Points : 102
    Points
    102
    Par défaut
    Citation Envoyé par iakou Voir le message
    c'est pas if ( empty()... ) c'est if ( ! empty()... )
    Idem... le message d'erreur s'affiche sans mêem traiter la variable ?


    @zwaldo : ça m'affiche tout simplement url

    avant php 5.4, je n'avais pas de soucis.. depuis avec ces variables je pige plus rien et surtout pourquoi l'erreur est affichée avant même de traiter la page ?


    HTML
    Code html : 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
    <form name="aform" action="" method="get">
        <div class="row">
            <div class="form-group">
                <div class="col-md-8">
                    <label>L'Url à soumettre ci-dessous <strong>(AVEC le http://)</strong></label>
                    <input name="url" id="url" type="text" value="<?php echo(htmlentities($url)); ?>" class="form-control"/>
                </div>
            </div>
        </div>
        <!-- Obliger le visiteur a valider son choix, utile pour l'antibot -->
        <div class="row">
            <div class="form-group">
                <div class="col-md-8">
     
                    <label>Que voulez-vous faire ? #</label>
                    <select class="form-control" name="subject" id="subject">
                        <option value="">Un choix s'impose sur notre menu déroulant</option>
                        <option value="">Rien ! Je me promène sur ce site (feinte anti-spam)</option>
                        <option value="cestbon">J'aimerais ajouter ce site (Mieux qu'un code captcha illisible)</option>
                    </select>
                </div>
            </div>
        </div>
        <!-- Un champ spécial pour contrôler qu'on est en face d'une personne -->
        <div class="row">
            <div class="form-group serieux">
                <div class="col-md-4">
                    <label for="serieux">Vous ne devez pas remplir ce champ *</label>
                    <input type="text" name="email" id="blague" class="form-control"/>
                </div>
            </div>
        </div>
        <div class="row">
            <div class="col-md-12">
                <input type="submit" value="Soumettre" class="btn btn-primary" data-loading-text="Loading...">
            </div>
        </div>
    </form>

    Les contrôles avant d'aller plus loin..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    if(empty($_GET['email'])) { 
    }else { 
        $Status = "0";
        $message1 ="Vous avez rempli un champs que ne devait pas l'être..";
    }
    if(!empty($_GET['subject'])) { 
    }else {
    	$Status = "0";
    	$message2 ="Vous n'avez pas stipulé votre choix (utile pour ne pas utiliser un code captcha - Antibot)..";
    }
    ?>
    A+
    YUle

  5. #5
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Idem... le message d'erreur s'affiche sans même traiter la variable ?
    Montrez-nous au moins le code correspondant (je veux dire "les lignes" qui produisent cet évènement !)

    PS : C'est vous qui constuisez la query-string (les paramètres $_GET de vos url).
    Pourquoi alors en réception, tester l'existence de tel ou tel variable ?...
    Vous devez bien savoir comment est bâtie votre query-string (c'est vous qui la créez)...

    Quand vous allez à une autre page avec des paramètres $_GET. Cette page doit récupérer tous les paramètres !
    Autrement dit, si au départ, il vous manque une donnée, il ne faut pas aller à cette page !
    J'ai l'impression que vous avez un pb de conception de votre application...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 84
    Points : 101
    Points
    101
    Par défaut
    bonjour,

    Je ne comprends pas ce que vous voulez faire :

    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
    if(empty($_GET['email'])) { 
    //si $_GET['email'] est vide, il ne se passe rien 
    		 }else { 
    //sinon 
             $Status = "0";
    		 $message1 ="Vous avez rempli un champs que ne devait pas l'être..";
    
    		 }
     
     
     
             if(!empty($_GET['subject'])) { 
    //si $_GET['subject'] n'est pas vide, il ne se passe rien 
             }else {
    //sinon
    		 $Status = "0";
    		 $message2 ="Vous n'avez pas stipulé votre choix (utile pour ne pas utiliser un code captcha - Antibot)..";
             } 
    ?>
    j'ai du mal a conceptualiser ...
    pourriez vous etre plus clair?

    ++
    zwaldo

  7. #7
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 881
    Points : 6 607
    Points
    6 607
    Par défaut
    En fait tu t'es simplement trompé dans ton expression logique, il faut utiliser un "OU", pas un "ET":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (empty($_GET['url']) || $_GET['url']=='http://') {
        echo "message d'erreur";
    } else {
        echo "Ok";
    }
    ou en utilisant la négation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (!empty($_GET['url']) && $_GET['url']!='http://') {
        echo "Ok";
    } else {
        echo "message d'erreur";
    }
    Dans tous les cas, comme zwaldo l'a fait remarqué, un petit test isset en amont ne peut pas faire de mal. Par exemple avec la deuxième version, ça donne ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (isset($_GET['url']) && !empty($_GET['url']) && $_GET['url']!='http://') {
        echo "Ok";
    } else {
        echo "message d'erreur";
    }
    Nota Bene: J'anticipe un peu. Si tu as plusieurs valeurs à exclure (comme "http://", "HTTP://", "https://", "choucroutegarnie", "ftp://", ...) au lieu de toutes les tester une par une dans la condition du if, autant utiliser filter_var pour faire le boulot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (isset($_GET['url']) && filter_var($_GET['url'], FILTER_VALIDATE_URL)) {
        echo "Ok";
    } else {
        echo "message d'erreur";
    }
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  8. #8
    Membre régulier
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Points : 102
    Points
    102
    Par défaut
    Re,

    Argh !!! Exactement.

    Merci a vous tous

    A+
    Yule

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/02/2012, 12h16
  2. Réponses: 6
    Dernier message: 21/08/2009, 18h20
  3. [Tableaux] Ne pas afficher tout le résultat de Shuffle
    Par Gunner4902 dans le forum Langage
    Réponses: 4
    Dernier message: 16/03/2008, 23h33
  4. Récupérer tout ce qui n'est pas dans la base
    Par SnakeBoudoir dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/11/2006, 19h18
  5. LIKE de tout ce qui n'est pas compris entre a<-&
    Par DjinnS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/07/2003, 13h09

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