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 :

mauvais codage de mon URL


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Par défaut mauvais codage de mon URL
    Bonjour,
    J'ai créé un formulaire qui passe en champ caché une variable qui contient un "é". Cette variable identifie un utilisateur qui est inscrit dans une BDD, donc, on ne peut pas contourner le problème en l'enlevant...
    Cette variable suit donc page après page, mais à un moment, je me rend compte que le "é" s'est tranformé en "%E9" je crois bien. Total, mon url devient faux et patatras...
    Comme remédié à ce problème, sachant que j'ai essayé urlencode(), urldecode()...
    Merci à vous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <form action="admin_hebergement_creation.php" method="get" name="form_hebergement_creation" enctype="multipart/form-data">
     
    <?php  
     
    echo "<input type='submit' name='bt_creer' value='Enregistrer'>&nbsp;&nbsp;"; // onClick='verif_form()'
    echo "<input type='reset' name='bt_effacer' value='Tout Effacer'>&nbsp;&nbsp;";
    echo "<input type='button' name='bt_retourmenu' value='Retour Menu' onClick='parent.location.href=\"admin_accueil.php?who=$qui&can=$can\"'>";
    ?>
        <input type="hidden" name="who" value="<?php echo $qui ?>">
        <input type="hidden" name="can" value="<?php echo $can ?>">
     
        <input type="hidden" name="option" value="enregistrer">
        <input type="hidden" name="idproprio" value="<?php echo $idproprio; ?>">

  2. #2
    Membre émérite
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Par défaut
    Déjà, il n'est pas bon d'avoir des caractères spéciaux dans du code, cela risque à un moment ou un autre de poser des PB.....

    Pour passer une chaine de caractères (quelqu'ils soient, d'ailleurs : les espaces c'est pas bon non plus !!!) dans l'URL (donc méthode GET) il faut absolumeznt que tu utilises la fonction url_encode et url_decode, qui te permettent de transformer ce que tu veux pour que ca passe dans l'URL sans poser de PB.

    Au moment ou tu as besoin de la "forme claire", tu fais simplement un url_decode, et c'est bon (notamment pour l'affichage....)


    S'agissant des caractères spéciaux et de l'affichage HTML, je te conseil l'utilisationde htmlentities ou htmlspecialchars qui te permettent de changer automatiquement tout caractère spécial en sont équivalent HTML (ex : é = &eacute

    Evite absolument les caratères spéciaux, surtout si tu as des traitments interne dépendant d'une chaine !!!!

    PS : tu peux aussi utiliser utf8_encode si tu veux...
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  3. #3
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Par défaut
    Vraiment, je n'y arrive pas...

    Je pense que je dois mal utiliser la fonction urlencode().
    Selon toi, comment me faut il l'utiliser, c'est à dire où dois je l'utiliser?

    Car quand je clique sur le boutton 'retour menu' (dont on voit le code sur mon post précédent), l'url (visible dans la barre d'adresse) est nickel...

  4. #4
    Membre émérite
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Par défaut
    Je te conseil déjà de prendre cette habitude :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo "<input type='button' name='bt_retourmenu' value='Retour Menu' onClick='parent.location.href=\"admin_accueil.php?who=".$qui."&can=".$can."\"'>";
    ?>
    Le code est comme ca plus propre. Il faut que tu utilise le URLencode juste avant de balancer une chaine de caractère dans l'URL, dans le cas présent il faudtrait plutot que tu écrive :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo "<input type='button' name='bt_retourmenu' value='Retour Menu' onClick='parent.location.href=\"admin_accueil.php?who=".urlencode($qui)."&can=".urlencode($can)."\"'>";
    ?>
    Ensuite, si tu veux exploiter ces variables dans l'autre page, naturellement tu vas utiliser le superglobal $_GET :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $qui=urldecode($_GET['qui']);
    $can=urldecode($_GET['can']);
    Comme ca tu garde bien l'intégralité de tes chaines et tu es (quasiment) sur de ne pas avoir de PB....

    Cette méthode est si possible à utiliser dans toute chaine d'URL composé par des éléments en GET (SURTOUT si il y a des caractères spéciaux... Perso, moi je les évites dans mes éléments GET, ce qui me permet de ne pas utiliser l'URLencode )
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  5. #5
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Par défaut
    OK, j'y penserai, tu as raison..
    Le problème, c'est que ce n'est pas sur cette ligne de code que ça bogue. Je dirais même qu'elle fonctionne bien, même avec les accents

    C'est en fait quand je clique sur le boutton "enregistrer", c'est à dire quand je fait le submit de mon formulaire. EN fait, ce sont les vatriable "who" et "can" de mes <input type='text'....> qui me posent problème

  6. #6
    Membre émérite
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Par défaut
    Il manque 2 point virgules ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <input type="hidden" name="who" value="<?php echo $qui ?>">
        <input type="hidden" name="can" value="<?php echo $can ?>">
     
    //Plutot ca :
     
    <input type="hidden" name="who" value="<?php echo $qui; ?>">
        <input type="hidden" name="can" value="<?php echo $can; ?>">
    ...A la limite, dès le premier formulaire avec tes 'text', passe les à urlencode.... Et pourquoi ne pas les passer en SESSION ?
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

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

Discussions similaires

  1. [Htaccess] récupération de mon url
    Par dbuweb dans le forum Apache
    Réponses: 1
    Dernier message: 28/06/2007, 15h08
  2. Que doit contenir mon URL pour me connecter à maBase
    Par maxinformatique dans le forum JDBC
    Réponses: 22
    Dernier message: 03/04/2007, 16h27
  3. [Cookies] enlever PHPSESSID de mon url
    Par ANISSS dans le forum Langage
    Réponses: 15
    Dernier message: 01/03/2007, 16h00
  4. [SQL] mauvaise requete ou mauvais codage ?
    Par temperature dans le forum PHP & Base de données
    Réponses: 29
    Dernier message: 03/05/2006, 11h57
  5. Logo dans mon url
    Par derric8016 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/01/2006, 16h26

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