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/10/2011, 03h41   #1
Membre habitué
 
Inscription : décembre 2007
Messages : 392
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : décembre 2007
Messages : 392
Points : 118
Points : 118
Par défaut POST invisible avec FF

Bonjour,

J'ai le formulaire suivant :


Code :
1
2
3
<form  method="post" action="test.php" name="Form" id="Form">
<input type="text" SIZE="35" name="theme" value=""/>
<input onclick="return (testeradio(this.form) && verifForm());" type="image" src="envoyer.png" value="Envoyez" alt="Submit"></form>
et voici le code dans test.php

Code :
1
2
3
4
<?php
header('Content-type: text/html; charset=UTF-8');
echo $theme;
?>
A tous les coups FF recupere la valeur de $theme et l'affiche sans avoir aucun POST sur ma page. Comment cela est-il possible? et surtout comment eviter cela?

Merci de votre aide
voyageurdumonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 08h14   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 789
Points : 35 789
Citation:
Envoyé par voyageurdumonde
sans avoir aucun POST sur ma page.
Ben... à quel moment tu demandes l'affichage des données reçues ?
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 08h41   #3
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 807
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 807
Points : 1 522
Points : 1 522
C'est à cause d'une directive de ton serveur qui transforme les variables globales en variables locales.

$_GET['id'] sera ainsi accessible via $id
Tu dois donc avoir une variable globale ayant comme index theme.

Mais ce n'est pas une bonne manière de faire.
Le mieux aurait été de passer par les tableaux super-globaux, ainsi tu sais ce que tu manipules :
Code php :
1
2
if( isSet($_POST['theme']) )
  echo $_POST['theme'];
__________________
Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 11h25   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 661
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 661
Points : 5 388
Points : 5 388
+1 sur transgohan. La directive en question est register_globals. Si tu as la main sur le serveur, tu peux la désactiver dans le php.ini, sinon via un .htaccess
Utilisation des variables super-globales
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 18h37   #5
Membre habitué
 
Inscription : décembre 2007
Messages : 392
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : décembre 2007
Messages : 392
Points : 118
Points : 118
bonjour,

en fait ce que je voudrais faire, c'est cela:
Code :
1
2
3
4
5
6
<input type="radio" id="type" name="type" value="fastfood"><span class="Style5" >Restauration Rapide / Relais</span><br>
<input type="radio" id="type" name="type" value="restaurant"><span class="Style5" >Restaurant Classique</span><br>
<input type="radio" id="type" name="type" value="gastronomique"><span class="Style5" >Restaurant Gastronomique</span><br>
 
<input type="text" SIZE="35" name="theme1" value="blabla00"/>
<input type="text" SIZE="35" name="theme2" value="blabla11"/>

et sur l'autre fichier recuperer ainsi

Code :
1
2
3
4
5
6
7
8
9
10
11
12
if (type=="fastfood")
{
 
$theme1= ["theme1"]; 
}
 
if (type=="restaurant")
{
 
$theme2= ["theme2"]; 
}
etc...
Donc theme1 et theme2 contiennent toujours une valeur!
Je n'ai malheuresement pas acces au serveur pour changer les parametres. Avez vous une idee comment faire cela?

Merci de votre aide
voyageurdumonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 18h44   #6
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 661
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 661
Points : 5 388
Points : 5 388
Si ton hébergeur le permet, tu peux passer par un .htaccess dans lequel tu mets quelque chose comme php_flag register_globals off
Et sinon, ben il faut que tu fasses très attention aux noms de variable que tu utilises pour éviter de rentrer en collision avec les valeurs du formulaire et que tu récupères les données du formulaire systématiquement par $_POST pour éviter les collisions. Genre si tu as un input dont le name est "theme", ne pas utiliser de variable $theme, mais plutôt des choses comme $var_theme = $_POST['theme'];
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 23h52   #7
Membre habitué
 
Inscription : décembre 2007
Messages : 392
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : décembre 2007
Messages : 392
Points : 118
Points : 118
Ok merci Celira maintenant j'ai compris pourquoi! merci pour l'astuce des noms de variable
voyageurdumonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 01h38   #8
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Citation:
Envoyé par voyageurdumonde Voir le message
Ok merci Celira maintenant j'ai compris pourquoi! merci pour l'astuce des noms de variable
C'est plus qu'une astuce mais une règle que tu dois suivre absolument !

Revois tout le code de ton site si tu n'a pas vérifié la provenance des variables car si par exemple tu utilises des variables de sessions pour protéger une partie privative tu peux très facilement te faire pirater (il suffirait d'essayer des noms de variables que l'on passe dans l'url et si l'une d'entre elle correspond au nom de ta variable de session, c'est tout bon pour le pirate).
C'est pour cette raison que php désactive maintenant cette option (register_globals) car certains utilisateurs n'étaient pas au courant des risques encourus

Pour récupérer ses variables, on utilise souvent les opérateurs ternaires par exemple si l'on attend des variables post:
Code :
$theme = isset($_POST['theme']) ? $_POST['theme'] : null;
très lisible et rapide à mettre en place
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h30.


 
 
 
 
Partenaires

Hébergement Web