Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
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 19/05/2006, 23h58   #1
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 148
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 148
Points : 26
Points : 26
Par défaut [Sécurité] Pb de transfert de données de pages en pages

Bonsoir tout le monde!!

alors un léger souci, je suis en train de créer un formulaire sur plusieures pages voici le schéma :


Index.php-->Login.php-->Form1.php --> traitement1.php -->Form2.php --> traitement2.php --> Form3.php --> traitement3.php --> Merci.php

j'ai un problème pour transmetre de page en page le "username"... j'arrive a le transmettre juska traitement 1 mais plus apres..

voici le code que de la page traitement1.php :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<? 
/* Include Files *********************/
session_start();
include("database.php");
$user=$_POST['user'];
$civ = $_POST["CIV"];
$nom = $_POST["nom"];
$prenom = $_POST["prenom"];
$date = $_POST["date"];
$email = $_POST["email"];
$pro = $_POST["PRO"];
$ent = $_POST["ENT"];
$on1 = $_POST["ON1"];
$pay = $_POST["PAY"];
$opt = $_POST["OPT"];
$dip = $_POST["DIP"];
$dipl = $_POST["dipl"];
echo "username = ".$_POST['user']."<br />";
/*************************************/
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="refresh" content="10;URL=Form2.php" >
</head>
<body>
<?
if (isset($_POST['user']))
{
    $user=$_POST['user'];
 
   } 
   else {
     var_dump($_POST);
     die('Erreur à la soumission du formulaire');
 
}
function transfer1($user,$civ,$nom,$prenom,$date,$email,$pro,$ent,$on1,$pay,$opt,$dip,$dipl){
   global $conn;
   $q = "UPDATE utilisateur SET civ='".$civ."', nom='".$nom."', prenom='".$prenom."', date='".$date."', email='".$email."', pro = '".$pro."', ent= '".$ent."', on1 = '".$on1."', pay = '".$pay."', opt = '".$opt."', dip= '".$dip."', dipl = '".$dipl."' WHERE user='".$user."' ";
   echo $q;
   return mysql_query($q,$conn) or die(mysql_error($conn));
}
 
transfer1($user,$civ,$nom,$prenom,$date,$email,$pro,$ent,$on1,$pay,$opt,$dip,$dipl);
?> 
<form name="form1" method="post" action="">
  <input type="hidden" name="hiddenField" value="<? echo $username;?>">
</form>
<p align="center"><strong>TRAITEMENT DES DONNEES EN COURS....</strong></p>
</body>
</html>
Help!!!
sagitarium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2006, 00h04   #2
Membre émérite
 
Inscription : juin 2002
Messages : 1 013
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 1 013
Points : 959
Points : 959
dans ton type="hidden", tu fais bien un echo de ton $username

et il est défini ou et quand, ce $username ?
francis m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2006, 00h12   #3
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 148
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 148
Points : 26
Points : 26
oui j'ai oublié de déclarer..donc je l'ai bien fait cette fois ci
mais je me dis le 'hiddenfield' n'est pas posté car je ne presse aucun bouton pour valider le formulaire..
je ne fais qu'une redirection..est ce que je dois mettre ce qu'il ya dans traitement1.php directement dans form2.php
sagitarium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2006, 00h15   #4
Membre émérite
 
Avatar de Linaa
 
Inscription : avril 2005
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2005
Messages : 988
Points : 922
Points : 922
En fait, je crois que ta variable est $user et non $username
__________________
Linaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2006, 00h26   #5
Membre émérite
 
Inscription : juin 2002
Messages : 1 013
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 1 013
Points : 959
Points : 959
Citation:
Envoyé par sagitarium
mais je me dis le 'hiddenfield' n'est pas posté car je ne presse aucun bouton pour valider le formulaire..
il ne sera effectivement pas posté

Citation:
Envoyé par sagitarium
je ne fais qu'une redirection..est ce que je dois mettre ce qu'il ya dans traitement1.php directement dans form2.php
c'est à mon avis la meilleure solution :
  • primo, tu as une page en moins, et donc un appel de page en moins.
  • secundo, ta redirection ne se fait qu'au bout de 10 secondes, pendant lesquelles ton client attend pour rien, et cela l'incite à aller voir ailleurs
  • tertio, si tu mets un bouton, tu demandes à ton client de cliquer sur un bouton qui pour lui ne sert à rien.
francis m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2006, 00h34   #6
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 148
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 148
Points : 26
Points : 26
maintenant j'ai une erreur du type :

Code :
Erreur de syntaxe près de 'organisme :', te12='Coût :',te13='Durée :',te14='Appréciation :'' à la ligne 1
quand je lance la requtes suivante :

Code :
1
2
3
4
5
6
 
function transfer2($user,$Q21,$com,$Q22e1,$Q22e2,$Q22e3,$Q23e1,$Q23e2,$Q23e3,$Q24e1,$Q24e2,$Q24e3,$Q25e1,$Q25e2,$Q25e3,$RAI1,$RAI2,$RAI3,$Q26e1,$Q26e2,$Q26e3,$Q27e1,$Q27e2,$Q27e3,$Q28e1,$Q28e2,$Q28e3,$Q29e1,$Q29e2,$Q29e3,$Q210e1,$Q210e2,$Q210e3,$Q211e1,$Q211e2,$Q211e3,$Q212e1,$Q212e2,$Q212e3,$CA1,$CA2,$CA3,$Q213e1,$Q213e2,$Q213e3,$te11,$te12,$te13,$te14,$te21,$te22,$te23,$te24,$te31,$te32,$te33,$te34){
   global $conn;
$q = "UPDATE utilisateur SET Q21='".$Q21."', com='".$com."', Q22e1='".$Q22e1."', Q22e2='".$Q22e2."',Q22e3='".$Q22e3."',Q23e1='".$Q23e1."',Q23e2='".$Q23e2."',Q23e3='".$Q23e3."',Q24e1='".$Q24e1."',Q24e2='".$Q24e2."',Q24e3='".$Q24e3."',Q25e1='".$Q25e1."',Q25e2='".$Q25e2."',Q25e3='".$Q25e3."',RAI1='".$RAI1."',RAI2='".$RAI2."',RAI3='".$RAI3."',Q26e1='".$Q26e1."',Q26e2='".$Q26e2."',Q26e3='".$Q26e3."',Q27e1='".$Q27e1."',Q27e32='".$Q27e2."',Q27e3='".$Q27e3."',Q28e1='".$Q28e1."',Q28e2='".$Q28e2."',Q28e3='".$Q28e3."',DEP1='".$DEP1."',DEP2='".$DEP2."',DEP3='".$DEP3."',PAY1='".$PAY1."',PAY2='".$PAY2."',PAY3='".$PAY3."',Q29e1='".$Q29e1."',Q29e2='".$Q29e2."',Q29e3='".$Q29e3."',Q210e1='".$Q210e1."',Q210e2='".$Q210e2."',Q210e3='".$Q210e3."',Q211e1='".$Q211e1."',Q211e2='".$Q211e2."',Q211e3='".$Q211e3."',Q212e1='".$Q212e1."',Q212e2='".$Q212e2."',Q212e3='".$Q212e3."',CA1='".$CA1."',CA2='".$CA2."',CA3='".$CA3."',Q213e1='".$Q213e1."',Q213e2='".$Q213e2."',Q213e3='".$Q213e3."', te11='".$te11."', te12='".$te12."',te13='".$te13."',te14='".$te14."',te21='".$te21."',te22='".$te22."',te23='".$te23."',te24='".$te24."',te31='".$te31."',te32='".$te32."',te33='".$te33."',te34='".$te34."' WHERE user='".$user."' ";
   return mysql_query($q,$conn) or die(mysql_error($conn));
}
sagitarium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2006, 00h41   #7
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 148
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 148
Points : 26
Points : 26
quand je lance la requete dans le SGBD easyphp tout fonctionne a merveille...
sagitarium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2006, 00h45   #8
Membre émérite
 
Inscription : juin 2002
Messages : 1 013
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 1 013
Points : 959
Points : 959
elle n'est pas un peu longue ta ligne ? je ne sais pas s'il y a une limite ou non, mais bon j'aurais fait plus court

quitte à faire une concaténation sur plusieurs lignes

et surtout je me serais débrouillé pour faire une boucle for. peut-être plusieurs en fonction du nom de tes champs

es-tu sûr que c'est bien cette ligne qui est la source de l'erreur ? mets y juste un seul SET pour voir ...
francis m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2006, 00h53   #9
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 148
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 148
Points : 26
Points : 26
alors la l'erreur a disparu..
c'était peut etre le nombre de set..
comment on fait la concaténation..?c'est en utilisant les .points. ...?
sagitarium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2006, 01h10   #10
Membre émérite
 
Inscription : juin 2002
Messages : 1 013
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 1 013
Points : 959
Points : 959
si, avec des points
tu peux faire (il y a d'autre possibilités ou syntaxes !)
Code :
1
2
3
$q = "UPDATE tralala";
$q = $q . 'SET blabla';
$q = $q . 'suite';
si tu insères la totalité des champs de ta table, tu peux faire quelque chose du genre
Code :
1
2
3
$ajout = "INSERT INTO conjoints VALUES ('" .$conjoint[0] ."'";
for ($i = 1; $i < $champs; $i++) $ajout = $ajout .", '" .$conjoint[$i]. "'";
$ajout = $ajout .")";
Il y a deux avantages : ton code est plus court, et tu ne dois pas faire un SET individuel pour chaque champ. Il y a un bon tutoriel sur ce site pour te montrer les différentes possibilités
francis m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2006, 01h14   #11
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 148
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 148
Points : 26
Points : 26
merci bien je v opter pour la premiere methode..enfin la dodo jai plus trop les yeux en face des trous!!

bonne soirée!
sagitarium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2006, 11h35   #12
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 148
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 148
Points : 26
Points : 26
Par défaut Parse error

Est ce que quelqu'un pourrait vérifier cette syntaxe svp..

Code :
1
2
3
$q = "UPDATE utilisateur";
$q = $q.'SET Q21='".$Q21."', com='".$com."', Q22e1='".$Q22e1."', Q22e2='".$Q22e2."',Q22e3='".$Q22e3."',Q23e1='".$Q23e1."',Q23e2='".$Q23e2."',Q23e3='".$Q23e3."',Q24e1='".$Q24e1."',Q24e2='".$Q24e2."',Q24e3='".$Q24e3."',Q25e1='".$Q25e1."',Q25e2='".$Q25e2."',Q25e3='".$Q25e3."',RAI1='".$RAI1."',RAI2='".$RAI2."',RAI3='".$RAI3."',Q26e1='".$Q26e1."',Q26e2='".$Q26e2."',Q26e3='".$Q26e3."',Q27e1='".$Q27e1."',Q27e2='".$Q27e2."',Q27e3='".$Q27e3."'';
$q = $q.'Q28e1='".$Q28e1."',Q28e2='".$Q28e2."',Q28e3='".$Q28e3."',DEP1='".$DEP1."',DEP2='".$DEP2."',DEP3='".$DEP3."',PAY1='".$PAY1."',PAY2='".$PAY2."',PAY3='".$PAY3."',Q29e1='".$Q29e1."',Q29e2='".$Q29e2."',Q29e3='".$Q29e3."',Q210e1='".$Q210e1."',Q210e2='".$Q210e2."',Q210e3='".$Q210e3."',Q211e1='".$Q211e1."',Q211e2='".$Q211e2."',Q211e3='".$Q211e3."',Q212e1='".$Q212e1."',Q212e2='".$Q212e2."',Q212e3='".$Q212e3."',CA1='".$CA1."',CA2='".$CA2."',CA3='".$CA3."',Q213e1='".$Q213e1."',Q213e2='".$Q213e2."',Q213e3='".$Q213e3."', te11='".$te11."', te12='".$te12."',te13='".$te13."',te14='".$te14."',te21='".$te21."',te22='".$te22."',te23='".$te23."',te24='".$te24."',te31='".$te31."',te32='".$te32."',te33='".$te33."',te34='".$te34."' WHERE user='".$user."'';
j'ai une erreur du type :

Code :
1
2
3

Parse error:  parse error in c:\program files\easyphp1-8\www\questionnaire\form3.php on line 53
sagitarium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2006, 12h05   #13
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 148
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 148
Points : 26
Points : 26
Re!!! Je galère trop!! je n'arrive pas à trouver l'erreur..je suis la dessus depuis ce matin..J'ai tout concaténé mais ca ne marche tjrs pas..

Code :
1
2
3
4
5
6
7
8
9
10
11
 
function transfer2($user,$Q21,$com,$Q22e1,$Q22e2,$Q22e3,$Q23e1,$Q23e2,$Q23e3,$Q24e1,$Q24e2,$Q24e3,$Q25e1,$Q25e2,$Q25e3,$RAI1,$RAI2,$RAI3,$Q26e1,$Q26e2,$Q26e3,$Q27e1,$Q27e2,$Q27e3,$Q28e1,$Q28e2,$Q28e3,$Q29e1,$Q29e2,$Q29e3,$Q210e1,$Q210e2,$Q210e3,$Q211e1,$Q211e2,$Q211e3,$Q212e1,$Q212e2,$Q212e3,$CA1,$CA2,$CA3,$Q213e1,$Q213e2,$Q213e3,$te11,$te12,$te13,$te14,$te21,$te22,$te23,$te24,$te31,$te32,$te33,$te34){
   global $conn;
 
$q= "UPDATE utilisateur";
$q=  $q." SET Q21='".$Q21."', com='".$com."', Q22e1='".$Q22e1."', Q22e2='".$Q22e2."',Q22e3='".$Q22e3."',Q23e1='".$Q23e1."',Q23e2='".$Q23e2."',Q23e3='".$Q23e3."',Q24e1='".$Q24e1."',Q24e2='".$Q24e2."',Q24e3='".$Q24e3."',Q25e1='".$Q25e1."',Q25e2='".$Q25e2."',Q25e3='".$Q25e3."'";
$q=  $q.",RAI1='".$RAI1."',RAI2='".$RAI2."',RAI3='".$RAI3."',Q26e1='".$Q26e1."',Q26e2='".$Q26e2."',Q26e3='".$Q26e3."',Q27e1='".$Q27e1."',Q27e2='".$Q27e2."',Q27e3='".$Q27e3."',Q28e1='".$Q28e1."',Q28e2='".$Q28e2."',Q28e3='".$Q28e3."',DEP1='".$DEP1."',DEP2='".$DEP2."',DEP3='".$DEP3."',PAY1='".$PAY1."',PAY2='".$PAY2."',PAY3='".$PAY3."'";
$q=  $q." ,Q29e1='".$Q29e1."',Q29e2='".$Q29e2."',Q29e3='".$Q29e3."',Q210e1='".$Q210e1."',Q210e2='".$Q210e2."',Q210e3='".$Q210e3."',Q211e1='".$Q211e1."',Q211e2='".$Q211e2."',Q211e3='".$Q211e3."',Q212e1='".$Q212e1."',Q212e2='".$Q212e2."',Q212e3='".$Q212e3."',CA1='".$CA1."'";
$q=  $q." ,CA2='".$CA2."',CA3='".$CA3."',Q213e1='".$Q213e1."',Q213e2='".$Q213e2."',Q213e3='".$Q213e3."', te11='".$te11."', te12='".$te12."',te13='".$te13."',te14='".$te14."',te21='".$te21."',te22='".$te22."',te23='".$te23."',te24='".$te24."',te31='".$te31."',te32='".$te32."',te33='".$te33."',te34='".$te34."' WHERE user='".$user."'";
   return mysql_query($q,$conn) or die(mysql_error($conn));
}
Code :
1
2
 
Erreur de syntaxe près de 'organisme :', te12='Coût :',te13='Durée :',te14='Appréciation :'' à la ligne 1
sagitarium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2006, 16h16   #14
Membre émérite
 
Inscription : juin 2002
Messages : 1 013
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 1 013
Points : 959
Points : 959
puisque tu as avancé je suppose que tu as trouvé ton parse error

si tu as toujours ton erreur de syntaxe, refais ce que je t'ai proposé avant : raccourcis la partie SET de ton code pour voir si l'instruction n'est pas trop longue

et si c'est le cas fais quelque chose du genre :
Code :
$q = "REPLACE INTO utilisateur VALUES ('" .$Q21 ."','" .$com ."','" .etc ."')";
Il faut que le nombre de values soit égal au nombre de champs dans ta table pour que cela fonctionne, mais je pense que c'est le cas chez toi ...
francis m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2006, 16h36   #15
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 148
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 148
Points : 26
Points : 26
en fait j'a i trpuvé l'erreur c'était une chaîne caractère contenant un apostrophe..et comme je n'avais pas mis le "addlashes" ca a provoquer un erreur...

morale tjrs mettre addslashes() lorsqu'il s'agit d'un champ de texte!!!


Merci kan même
sagitarium 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 18h14.


 
 
 
 
Partenaires

Hébergement Web