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 :

quelle est cette étrange notation ou expression ou opérateur en php ? &not_


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 423
    Points : 874
    Points
    874
    Par défaut quelle est cette étrange notation ou expression ou opérateur en php ? &not_
    bonjour,

    je tentais de faire une concaténation de variables pour construite une chaine URL de paramètre pour le navigateur (je travaille sous chrome):

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $id_groupe=151;
    $ladate="2022-03-14";
    $id_matiere=28;
     
    $lien_notation="notes_v01_add.php?not_grp_id=".$id_groupe."&not_date=".$ladate."&not_mat_id=".$id_matiere;

    à l'affichage , ça me remplace mes caractères & par ¬_ et ça enlève la partie du paramètre "not_" !

    notes_v01_add.php?not_grp_id=151¬_date=2022-03-14¬_mat_id=28
    qu'est-ce qu'il se passe ?

    est-ce &not_ est un champ ou une expression php réservées ou un code spécial pour url de navigateur ?
    si je renomme mes paramètre not_date et not_mat_id and mettant des m au lieu des n , ça fonctionne bien

    Pourquoi j'ai un bug comme ça avant le weekend ?!

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 888
    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 888
    Points : 6 632
    Points
    6 632
    Par défaut
    Depuis quand contrôle t-on ce que produit un code php avec ce qu'affiche le navigateur? Il n'y a pas de bug. Affiche le code source de la page pour t'en persuader.

    ¬ est l'entité html pour ¬ (la négation logique). Bien qu'il manque le ; final, le navigateur, tolérant par nature avec la syntaxe html, l'identifie comme tel et effectue le remplacement.

    Pour avoir un affichage (et non un code) "correct", il faut en passer par htmlspecialchars().

  3. #3
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 423
    Points : 874
    Points
    874
    Par défaut
    bonjour,

    je ne comprends pas votre réponse.

    au départ, je vois ces caractères dans l'url (la barre d'adresse du navigateur) et là-bas, normalement le navigateur ne transforme pas les sympbols html !

    pour mieux comprendre mon souci et être sur, j'ai fait un die($lien_notation);



    j'ai besoin de mon caractère & pour ma chaine URL et séparer les paramètres.

    au final, si je suis (j'essaie) votre réponse, j'ai pas eu de chance car mon paramètre URL s'appelle, ou du moins, commence par le même symbol qu'un caractère spécial HTML !; cest-ce bien cela ?

    en d'autres termes, si j'avais un paramètre URL qui s'appelle "darr" j'aurai eu le même souci car il existe un symbol html encodé par ↓ ! ?

    ce que je comprends pas, c'est pourquoi l'url dans la barre d'adresse de chrome se met à interpréter ça ! c'est pas du code HTML là-bas !

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 200
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 200
    Points : 8 425
    Points
    8 425
    Billets dans le blog
    17
    Par défaut
    Donne-nous un exemple qui illustre le problème.

    ce que je comprends pas, c'est pourquoi l'url dans la barre d'adresse de chrome se met à interpréter ça ! c'est pas du code HTML là-bas !
    Donne-nous un exemple qui illustre cela.

  5. #5
    Membre habitué Avatar de ane-mais
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 37
    Points : 162
    Points
    162
    Par défaut
    Bonjour,

    Le texte source est enregistré sous quel encodage ? ANSI , UTF ?

    La page HTML est défini avec quel encodage ?
    <html lang=" ?? ">
    <meta charset=" ??? "/>

  6. #6
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 423
    Points : 874
    Points
    874
    Par défaut
    bonjour,
    je suis actuellement pas sur mon poste, je répondrais demain.
    par contre, personne ne me dit pourquoi le code html est interprété alors qu'il n'y a pas le point virgule dans mon code ?

    j'ai pourtant bien écrit dans ma variable string :
    &not_monchamps
    et non pas
    &not;_monchamp

    pourquoi l'interpréteur ou compilateur ne tient pas compte de l'absence du point virgule ?

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 333
    Points : 15 677
    Points
    15 677
    Par défaut
    Citation Envoyé par clavier12AZQSWX Voir le message
    pourquoi l'interpréteur ou compilateur ne tient pas compte de l'absence du point virgule ?
    parce que les analyseurs html viennent d'un monde où le code html était écrit parfois en majuscules parfois en minuscules ou avec un mélange des 2. parfois même des balises fermantes étaient oubliées donc l'analyseur devait deviner où elles se ferment.
    et donc dans toute cette jungle, le standard recommande surement de considérer "&not" comme une entité. par exemple c'est la cas avec la dernière version de firefox.

    pour éviter cela, il vaut mieux être plus strict dans le code html produit et par exemple utiliser htmlspecialchars comme l'a recommandé CosmoKnacki. cette fonction va remplacer & par &amp; ce qui produira donc &amp;not_monchamps.

  8. #8
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut
    Vous pouvez voir aussi urlencode


    https://www.php.net/manual/fr/function.urlencode.php

  9. #9
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 423
    Points : 874
    Points
    874
    Par défaut
    je ne peux pas utiliser urlencode car je me retrouve avec une url qui ne marche plus car les & sont remplacés par les caractères ascii qui ne sont pas interprétés par le navigateur .
    http://localhost/projet/notes_v01_ad...ot_mat_id%3D27

    par contre, oui ça fonctionne nickel avec
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $lien_notation=htmlspecialchars($lien_notation);

    en fait, j'ai compris, c'est le problème de "pas de chance". si ya 20ans, j'avais nommé un champs de base de données 'nbsp' que je le passais dans l'url à un script, alors j'aurai déjà eu le problème !

    je connaissais htmlspecialchars, mais j'ai jamais eu le besoin de l'utiliser pour "encoder" une URL, c'est bien la première fois là.

    Pour répondre à la question du dessus, mon codage html est :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <meta charset="utf-8">
    <META http-equiv="Content-Type" content="text/html; charset=utf-8" />


    merci à tous pour vos aides.

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

Discussions similaires

  1. Mais quelle est cette balise ? '<#'
    Par Ska_Dg dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 10/04/2012, 10h24
  2. Quelle est cette typo ?
    Par Invité dans le forum Imagerie
    Réponses: 3
    Dernier message: 21/02/2012, 20h12
  3. Quelle est cette police de caractère?
    Par vovor dans le forum Webdesign & Ergonomie
    Réponses: 2
    Dernier message: 09/11/2007, 07h51
  4. quelle est cette valeur
    Par b4mail dans le forum C
    Réponses: 13
    Dernier message: 14/05/2006, 23h39
  5. Quelle est cette commande qui plante linux?
    Par 123quatre dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 18/02/2006, 13h48

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