Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/06/2007, 17h53   #1
Invité régulier
 
Inscription : octobre 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 34
Points : 6
Points : 6
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 :
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; ?>">
FredLam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 18h19   #2
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
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
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 19h48   #3
Invité régulier
 
Inscription : octobre 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 34
Points : 6
Points : 6
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...
FredLam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 20h14   #4
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
Je te conseil déjà de prendre cette habitude :

Code :
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 :
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 :
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
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 20h34   #5
Invité régulier
 
Inscription : octobre 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 34
Points : 6
Points : 6
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
FredLam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 20h39   #6
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
Il manque 2 point virgules ici :

Code :
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
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 21h17   #7
Invité régulier
 
Inscription : octobre 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 34
Points : 6
Points : 6
Bon, je vais réfléchir à tout ça, puis je te tiens au courant.

Au fait, encore une question, les SESSIONS, ça marche peut importe la configuration du navigateur, contrairement aux cookies ?

Merci pour ton aide.
FredLam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 21h49   #8
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
Les SESSIONS sont par défaut stockés sur le serveur, donc oui c'est indépendant du navigateur (il ne faut pas l'utiliser pour n'importe quoi non plus....) Mais pour plus d'infos------>Ma signature te fourniras ce que tu veux !!!! (Le manuel PHP décrit très bien le fonctionnement des SESSIONS)
__________________
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
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 22h02   #9
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par FredLam
Au fait, encore une question, les SESSIONS, ça marche peut importe la configuration du navigateur, contrairement aux cookies ?
ça dépend de la configuration du serveur, il existe deux modes de transmission de l'identifiant de session : par cookie ou par réécriture des liens internes et formulaires afin d'y ajouter dynamiquement l'identifiant. Si la personne désactive les cookies ou le client ne les supporte pas, il sera alors impossible pour le serveur de réattribuer cette même session si le serveur ne se base que sur les cookies (session.use_cookies à 1, session.use_only_cookies à 1 et session.use_trans_sid à 0). D'un autre côté, la seconde méthode permet beaucoup plus facilement le vol de session avec tous les risques que cela comporte ... Donc la configuration recommandée est d'utiliser uniquement les cookies.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 22h02   #10
Invité régulier
 
Inscription : octobre 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 34
Points : 6
Points : 6
Merci beaucoup.
FredLam est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h44.


 
 
 
 
Partenaires

Hébergement Web