Transfert de donnée par formulaire

Résolu
littleboy78 Messages postés 10 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 16 novembre 2009 - 7 juil. 2009 à 18:47
littleboy78 Messages postés 10 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 16 novembre 2009 - 7 août 2009 à 11:01
Bonjour à tous !

Je vais vous soumettre un problème qui n’en est peut-être pas un, qui en fera sourire plus d'un.
Je tente de faire passer une variable au moyen d'un formulaire comme celui-ci:


<html><head><title>Document sans titre</title><meta http-equiv= "Content-Type" content="text/html; charset=iso-8859-1" /></head> <form action="pagecible.php" methode="POST">Nom:, , ----
Valider:,
</form> </html>
---------------------------------------------------------------------------------------------------
…que je récupère dans une autre page avec:
----------------------------------------------------------------------------------------------------
<html><?php
echo "Bonjour " .$_POST['var1'];
???><head><title>CIBLE </title><meta http-equiv ="Content-Type" content="text/html; charset=iso-8859-1" /></head>
CECI EST LA PAGE CIBLECECI EST LA PAGE CIBLE
</html>
----------------------------------------------------------------------------------------------------
On peut difficilement faire plus simple.

Il est possible que pour vous cela fonctionne sans problème.

En ce qui me concerne j'obtient invariablement le message d'erreur bien connu:
"Undefined index: var1 in c:\program files\easyphp1-7\www... etc. (page cible)

En mettant:
<?php
if(!isset($_POST['var1'])) $_POST['var1']="";
???>

Cela n'avance à rien car, comme la variable ne passe pas d'une page à l'autre elle reste à zéro et je garde mon "Bonjour... sans rien après. :0((

J'ai testé sur Windows Explorer6, FireFox, Opéra: idem.

Je travail actuellement avec EasyPhp 1.7 - qui contient Apache 1.3.27...

Est-ce un souci au niveau du php.ini ? Faut-il utiliser une autre version de PHP ?


La vie est dure pour les super débutants.javascript:Insert_Emoticon('/imgs2/smile_dead.gif');

Merci à vous tous.

14 réponses

ptiniko Messages postés 26 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 8 juillet 2009
8 juil. 2009 à 11:01
Ou sinon dans ton php.ini cherche la ligne

error_reporting = E_ALL

et remplaces la par
error_reporting = E_ALL & ~E_NOTICE

puis redémarre le serveur.
Niko
3
ptiniko Messages postés 26 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 8 juillet 2009
7 juil. 2009 à 20:01
Bonjour,

Peux-tu poster le code-source de ta première page, et celui de la page qui récupère ta variable?

Merci.
Niko
0
littleboy78 Messages postés 10 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 16 novembre 2009
8 juil. 2009 à 10:36
Je tente de faire passer une variable au moyen d'un formulaire comme celui-ci:






<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>



<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<form action ="pagecible.php" methode ="POST">
Nom:,
,      

----

Valider:,

</form>

</html>



</html>


…que je récupère dans une autre page avec:


----------------------------------------------------------------------------------------------------



<html><?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>





<?php





echo "Bonjour   " .$_POST['var1'];





?>





<head>




<title>CIBLE </title>



<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">





</head>






CECI EST LA PAGE CIBLECECI EST LA PAGE CIBLE


</html>


---------------------------------------------------------------------------------


On peut difficilement faire plus simple.



 




Il est possible que pour vous cela fonctionne sans problème.



 




En ce qui me concerne j’obtiens invariablement le message d'erreur bien connu:



"Undefined index: var1 in c:\program files\easyphp1-7\www... etc. (page cible)



 




En mettant:



 <?php


if(!isset($_POST['var1'])) $_POST['var1']="";


?>


---------------- Cela ne m'avance à rien car cela vide la variable...


J'ai testé sur Windows Explorer6, FireFox, Opéra: idem.



 




Je travail actuellement avec EasyPhp 1.7 - qui contient Apache 1.3.27...



 




Est-ce un souci au niveau du php.ini ? Faut-il utiliser une autre version de PHP ?



 
C'est un exemple ordinaire trouver dans un bouquin "Eyrolles" . Je pense qu'il y a une autre cause.





 




La vie est dure pour les super débutants.




Merci à toi si tu peux m'aider
0
ptiniko Messages postés 26 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 8 juillet 2009
8 juil. 2009 à 10:59
Et en faisant

if (isset($_POST['var1']))
{
echo "Bonjour   " .$_POST['var1'];
}
?
Niko
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
littleboy78 Messages postés 10 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 16 novembre 2009
8 juil. 2009 à 14:54
Merci beaucoup Niko.


Voila ce qui se passe: si j'ai bien compris la séquence if (isset .... conditionne l'affichage de Bonjour ... avec var1 entré dans le formulaire de la page d'origine.

... et bien en rajoutant une alternative else

<?php
if (isset($_POST['var1']))


{
echo "Bonjour   " .$_POST['var1'];
}
else
{
echo "pas de réponse possible";
}
?>

je retrouve : "pas de réponse possible"

Donc la variable ne passe pas dans la page cible?

Ce qui est vexant c'est de ne pas pouvoir réaliser un truc aussi basic...

j'ai modifié le php.ini suivant tes indications: nada (Sagit-il d'un traitement d'erreur plus évolué?)

et en plus il pleut. :0(

Encore merci
0
ptiniko Messages postés 26 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 8 juillet 2009
8 juil. 2009 à 16:34
Non mais si tu traites l'erreur via un if/else je pense que le fait de modifier le php.ini n'a plus d'intérêt.

Lorsque tu rajoutes & ~E_NOTICE en fait tu demandes à PHP de ne pas afficher de message d'erreur pour des erreurs dites "voulues" (= pas d'erreur de code).
Si tu essayes juste un echo en dehors du if/else, il n'affiche rien je pense? si tu fais un $test = $_POST['var1'] suivi d'un echo $test ?
En essayant pas la méthode get plutôt que post, pas plus de succès?
Niko
0
littleboy78 Messages postés 10 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 16 novembre 2009
8 juil. 2009 à 18:24
Merci pour ta patience, j’ai lu bien attentivement ta réponse. En particulier ce qui concerne « & ~E_NOTICE »



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




Par ailleurs,



 




$test = $_POST['var1'];


echo $test



 




Ecrit en dehors du If/else nous donne encore « Notice : Undefined index: var1 … »



 




GET ne donne pas de meilleurs résultats.



 




 Le problème dans tout cela est que ce bout de code très simple provient de l’ouvrage


PHP/Mysql avec DreamWeaver Mx2004 de Jean-Marie DEFRANCE. Je ne pense pas qu’il soit faut. J’ai utilisé la manipulation « if ( !isset …» qu’il préconise pour réparer, sans succès.



 




Mais il parle aussi de la « configuration du serveur » qui pourrait causer ce type de comportement.  C’est pourquoi il invite le lecteur à rajouter en haut de la page :



 









<?php









if(!isset($_POST['var1'])) $_POST['var1'] ="";








?>








  … taper mot à mot. Et cela doit fonctionner en principe.



 




Qu’entends-t-il par configuration du serveur ?


Etant novice en PHP mais un peu habitué à d’autres systèmes (plus gros que des PC) j’ai l’impression que le message d’erreur est un message « passe-partout ». Qui dit rien en fait.


Je compte dans un premier temps réinstaller l’Easy PHP 1.7 (PHP 4.3) et voir s’il n’y a pas une autre version de serveur APACHE à utiliser. Je dispose d'un autre Easy en PHP 5 ...


Qu’en penses-tu ?


Je suis certain que tu es très bon au niveau de la syntaxe et ne souhaite pas te faire tourner en rond indéfiniment sur un simple cas d'école.



 




Merci par avance pour ton avis avisé :0)



 




Bien cordialement,
0
ptiniko Messages postés 26 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 8 juillet 2009
8 juil. 2009 à 18:50
Dieu me punira...

Dans ton form ... method et non methode... c'etait donc bien une erreur de code...

Remets ton php.ini comme il faut (ou tu peux le laisser, comme tu veux...)
Désolé de pas avoir vu l'erreur avant.

Niko
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
8 juil. 2009 à 20:00
Salut,

Et puis :

<html>
<head>
<title>Document sans titre</title>
<meta http-equiv= "Content-Type" content="text/html; charset=iso-8859-1">
</head>

<html>
<head>
<title>Document sans titre</title>
<meta http-equiv ="Content-Type" content= "text/html; charset=iso-8859-1">
<form action ="pagecible.php" methode ="POST">
Nom:,
,      

----

Valider:,

</form>

</html>

</html>

Tu risques d'avoir de gros problèmes avec ce qu'il y a en rouge; tags non fermés, tags en doublons, ...

Cordialement,

Kohntark -
0
littleboy78 Messages postés 10 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 16 novembre 2009
9 juil. 2009 à 13:08
Bonjour et merci à tous,


c'est moi qui suis désolé de vous soumettre des problèmes aussi ridicules.
Enfin, c'est pas le tout d'avoir un cerveau, encore faut-il avoir les yeux qui vont avec.. :0(
Je scruterai davantage mon code à l'avenir.
Evidemment ça marche!

Entre temps j'ai installé un EasyPhp3.0 avec php 5. (Avec un pareil code ça n'a rien changé, of course)
Du point de vue de l'hébergement  est-ce que cela pose problème ou peux-t-on resté en PHP 4.3?

En ce quiconcerne l'HTML, je vous remercie pour l'info.
En fait c'etait pas mon problème du moment. Il y avait n'importe quoi dedans à l'origine et c'est pas fait pour être publié.
Je prends en compte ta remarque.Merci.
A ce propos, fais-tu allusion à un problème de sécurité par rapport aux tags?

Bien cordialement

Michel
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
9 juil. 2009 à 18:59
Il n'y a pas de question stupide ou ridicule tant que l'on constate une certaine volonté de progresser et que le post ne relève pas du "CS trolling"

En fait c'etait pas mon problème du moment
= >
Oui, mais non
A mettre des <html>, , , tags non fermés etc .. partout tu risques fort d'embrouiller le navigateur qui peut très bien ne plus prendre en compte ton formulaire.

Je ne faisais pas allusion à un pb de sécurité mais aux pbs d'affichage et d'interprétation.

Par contre là il y a un pb de sécurité :
<?php

if(!isset($_POST['var1'])) $_POST['var1'] ="";

?>

.... pense à traiter les données envoyées par l'utilisateur.

Cordialement,

Kohntark -
0
littleboy78 Messages postés 10 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 16 novembre 2009
4 août 2009 à 13:42
Merci encore Kohntark, je rentre de vacance ce matin. Si tu es en vacance ... alors bonne vacances!
Dans le cas contraire, je sollicite encore ton avis.

Voici ma question. Je schématise.

1) Je dispose d'une base de données x_db qui contient une table « utilisateurs » dont les colonnes sont ?nom? et ?prenom?.

2) Ci-dessous une entrée de formulaire : prénom.



...

Veuillez taper votre prénom :



<form action="cible.php" method="post">




</form>

3) J'envoie le tout vers une autre page : cible.php?

Bonjour !



Bonjour <?php echo $_POST['prenom']; ?> !



Dans cible.php on affiche une variable $_POST['prenom'] qui contient ce que l'utilisateur a rentré dans le formulaire.

Jusque là tout va bien.

4) Ce que je tente de faire :

Au moyen d'une requête qui pointe sur ma table « utilisateurs » je veux extraire la variable ?nom? dans la page cible.php. Cette variable ?nom? devant en principe se trouver sur la même ligne que le ?prenom? entré dans le formulaire.

La requête que j'utilise est du type :

$query = "SELECT nom FROM utilisateurs WHERE user='{$_POST['prenom']}'";

A ce stade, je ne sais plus trop quoi faire car je m?embrouille dans l'extraction des données.

(Je ne vais pas vous détailler mes nombreux essais).

Si quelqu'un peut me mettre simplement sur la voie? UN GRAND MERCI !
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
5 août 2009 à 19:02
Re LittleBoy,
Si tu es en vacance ... alors bonne vacances!

=> c'est pour m'embêter que tu dis ça ? Non, je n'y suis pas, ... mais ça va venir

Ta façon de faire est à mon avis une très mauvaise idée :
Que se passera t il si demain il y a 2 Michel dans ta base ??
Au mieux ton script va planter, au pire le Michel X va être renommé Michel Y. Peut être que cela n'est pas dramatique à l'instant T, mais dans l'avenir, proche, où tu décideras de mettre des données personnalisées ça le deviendra.
Il faut à tous prix éviter cela car tu t'exposes, en plus, à des problèmes de sécurité très importants (il est très facile, avec ton script actuel, d'afficher toute ta table, le jour où il y aura d'autres infos (tel, mails, ...) ça va devenir dangereux)

Tu devrais :
- redéfinir les champs de ta table afin de te baser sur un identifiant
- utiliser les sessions

Pour répondre tout de même à ta question :

$prenom = mysql_real_escape_string($_POST['prenom']);
$query = "SELECT nom FROM utilisateurs WHERE user='$prenom'"; 
$q = mysql_query($query);
$nom = mysql_result($q, 0);
echo $nom;


Cordialement,

Kohntark -
0
littleboy78 Messages postés 10 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 16 novembre 2009
7 août 2009 à 11:01
Bonjour Kohntark,

c'est vrai, beaucoup de personne n'ont pas toujours la possibilité de partir.
Ta remarque est judicieuse, l'homonymie des noms et/ou prénoms est trop fréquente pour être utilisé.
En fait cette requete porte en réalité sur le login, qui est déjà filtré sur la page ou se trouve le formulaire.
Ma création de login, empèche aussi de créer des doublons.
Le but de la manip était de pouvoir extraire n'importe quel élément de ma table, qui se trouve sur la même ligne que le "login" unique.

En tout cas merci.

Michel
0
Rejoignez-nous