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 :

Passage de caractère "+" dans les url [PHP 7]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 760
    Par défaut Passage de caractère "+" dans les url
    Bonjour,

    J'ai un soucis de passage de valeur en url (GET).

    Je suis sensé passé une valeur de type "1 et+" dans une URL (ainsi que que d'autres valeurs), mais c'est surtout ce "+" qui me fait des misères

    La première recherche est faite depuis des input, donc en POST, ici pas de soucis, mais pour créer la pagination, je mets les paramètres de recherche dans l'url :
    <a href=pages_toto.php?age=1 et +& sexe=f& ...> , c'est ici que ça met le foin.


    J'ai tenté le urlencode / urldecode , mais il semble que le + soit automatiquement passé en espace ... et dans les correspondances html, + = +

    Une idée ?

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Bonjour,

    Effectivement, le + est un caractère défini dans une URL comme étant un espace.
    De plus, ce n'est pas une manière très souple de gérer ce cas.

    En effet, à partir de l'URL, il y aurait potentiellement moyen d'écrire tout et n'importe quoi et d'altérer le code (une requête en base de données j'imagine).

    Personnellement; j'utiliserais plutôt un tableau de correspondance qui me permet d'une part de créer facilement une URL ou un <select>, et d'autre part de vérifier (et de limiter) ce que l'utilisateur peut faire en modifiant l'URL.
    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
    <?php
     
    $ages = [
        '1 semaine',
        '2 semaines',
        '3 semaines',
        '1 mois',
        '6 mois',
        '9 mois',
        '1 an et plus',
    ];
    foreach ($ages AS $k => $v) {
        echo '<a href="?age=' . $k . '">Filtrer pour : ' . $v . '</a><br />';
    }
    if(isset($_GET['age']) && array_key_exists($_GET['age'], $ages)) {
        $age_label = $ages[$_GET['age']];
        echo PHP_EOL . '<pre>$age_label: ' . print_r($age_label, true) . '</pre>' . PHP_EOL;
    }

    Sinon, il y a moyen de malgré tout passer un + dans l'URL en écrivant : $params = "?age=" . urlencode(htmlentities("1 an et +"));.
    Ce qui équivaut à $params = "?age=" . urlencode("1 an et &plus;");.
    &plus; étant le code HTML du signe plus, comme visible ici : https://theasciicode.com.ar/ascii-pr...i-code-43.html

  3. #3
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Bonjour,

    je viens de tester : urlencode() fonctionne très bien avec "1 et +", ou "ceci & celà".

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    @var_dump( $_GET );
    $var1 = '1 et +';
    $var2 = 'ceci & celà';
    ?>
     
    <a href="?var1=<?=urlencode($var1);?>&var2=<?=urlencode($var2);?>">test</a>

    • l'URL est "?var1=1+et+%2B&amp;var2=ceci+%26+cel%C3%A0".
    • et $_GET renvoie bien les bonnes valeurs.

  4. #4
    Membre chevronné Avatar de wd_newbie
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2007
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 760
    Par défaut
    je viens de tester, c'est nickel, merci !

    Je sais que ce serais mieux de passer par un combo ou autre prédéfini, mais en vérité c'est déjà un combo, mais qui est construit selon les valeurs entrées par les utilisateurs dans un logiciel desktop.

    je ne gère pas ce qui est est saisi, la page web étant un catalogue des objets saisis dans le logiciel, ici l'utilisateur a sais "1 et +", et je dois faire avec


    mais tout est OK , merci encore

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

Discussions similaires

  1. Quote et double quote dans les requêtes paramétrées
    Par michel.souris dans le forum WinDev
    Réponses: 5
    Dernier message: 07/06/2013, 10h27
  2. Comment cacher les 4DACTION dans les urls?
    Par longomarc dans le forum 4D
    Réponses: 3
    Dernier message: 05/10/2007, 15h01
  3. Caractères italiques directement dans les glyphes de la police
    Par MasterOfChakhaL dans le forum Webdesign & Ergonomie
    Réponses: 5
    Dernier message: 31/05/2007, 18h12
  4. Les doubles quotes dans les fprintf
    Par Changedman dans le forum C
    Réponses: 30
    Dernier message: 22/02/2007, 12h07
  5. Webservices et passage de variable en GET dans l'URL
    Par SuperCed dans le forum Dynamique
    Réponses: 2
    Dernier message: 12/01/2007, 17h24

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