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 05/06/2007, 14h58   #1
Nouveau Membre du Club
 
Inscription : mai 2007
Messages : 177
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 177
Points : 33
Points : 33
Par défaut Pb session après formulaire à deux boutons

Bonjour,

Voilà mon application fonctionnait bien puis j'ai du dans un formulaire ajouter un bouton submit. Du coup j'ai deux boutons
Si le second est cliqué ça imprime la page
Si le premier il "include" le traitement.php où dessuite après <?php il y a session_start().
Avant cela fonctionnait, c'est depuis que j'ai ajouté le bouton print que ça plante.

Voilà mon erreur :
Citation:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\home\easyphp1-8\www\modification.php:2) in c:\home\easyphp1-8\www\TreatModify.php on line 12
Celle-ci est affiché au dessus de ma page de recherche...

Merci d'avance
Lolie11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 15h08   #2
Membre habitué
 
Avatar de maxime.ohayon
 
Inscription : mai 2007
Messages : 113
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : mai 2007
Messages : 113
Points : 100
Points : 100
header already send, tu as déjà envoyer l'entete de ta page donc il ne peut pas commencer de session.

Envoie tout ton code.

Max
maxime.ohayon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 15h14   #3
Nouveau Membre du Club
 
Inscription : mai 2007
Messages : 177
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 177
Points : 33
Points : 33
Voilà mon formulaire à deux boutons :

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
 
<p>	
<?php
if (!isset($_POST['submitted']))
{
		?>
		<div id="contenu">
			<form action="./Modification.php" name="viewcart" id="viewcart" method=post>
			<input type="hidden" name="fuseaction" id="fuseaction" value="default" />
				<?
					$CompNb2 =$_POST['NbComplaint'];
					$CompNb1 =$_POST['Complaint_year'];
					$Reception_date =$_POST['Reception_date'];
					$Recording_date =$_POST['Recording_date'];
					$Recording_time =$_POST['Recording_time'];
					$Recorded_by =$_POST['Recorded_by'];
					$Desc =$_POST['Description'];
					$NbIncident =$_POST['NbIncident'];
					$Natco =$_POST['Natco'];
					$LOS =$_POST['LOS'];
					$Status =$_POST['Status'];
					$LSCD =$_POST['LSCD'];
					$LCD =$_POST['LCD'];
					$LCT =$_POST['LCT'];
					$LCB =$_POST['LCB'];
					$Complainant_name =$_POST['Complainant_name'];
					$CPSD =$_POST['CPSD'];
					$CPST =$_POST['CPST'];
					$R_comments =$_POST['R_comments'];
					$Problem_type =$_POST['Problem_type'];
					$CA_P =$_POST['CA_P'];
					$CA_D =$_POST['CA_D'];
					$CD =$_POST['CD'];
					$CT =$_POST['CT'];
					$Del =$_POST['Del'];
 
					?>
					<table width=100%>
						<tr>
							<td width=63%>Incident/Request number <INPUT TYPE=text NAME=NbIncident size=8 maxlength=8 value=<?php echo$NbIncident; ?>> taken delivery of the <b><?php echo$Reception_date; ?></b></td>
						</tr>
						<tr>
							<td>Recorded to <b><?php echo$Recording_date; ?></b> at <b><?php echo$Recording_time; ?></b> as a complaint number <b><?php echo$CompNb1; echo"-"; echo$CompNb2; ?></b></td>
						</tr>
					</table>
					<table width=100%>
						<tr>
							<td width=63%>Complainant name : <INPUT TYPE=text NAME=Complainant_name size=15 maxlength=50 value=<?php echo$Complainant_name; ?>></td>
							<td width=20%>Origin : 
									<select name=natco>
										<option value='CE'>CE</option> 
										<option value='A-D'>A-D</option> 
										<option value='A-E'>A-E</option>
										<option value='A-F'>A-F</option> 
										<option value='A-UK'>A-UK</option>
									</select>
								</td>
								<td width=20%>LOS :  
									<select name=los>
										<option value='DM'>DM</option> 
										<option value='SD'>SD</option> 
										<option value='RM'>RM</option>
										<option value='Other'>Other</option> 
									</select>
								</td>
						</tr>
				</table>
				<table style=table-layout:fixed>
					<tr>
						<td width=70%>Description : <br><TEXTAREA NAME=Description ROWS=6 COLS=53><?php echo$Desc; ?></TEXTAREA> </td>
						<td>
						<table>
							<tr>
								<td>Status :
									<br><select name=status >
										<option value='Opened'"; 
										<?php
											if ("Opened"==$Status) 
												{echo"selected";} 
											echo">Opened</option> 
										<option value='Under investigation'"; 
											if ("Under investigation"==$Status) 
												{echo"selected";} 
											echo">Under investigation</option> 
										<option value='Solution proposed'"; 
											if ("Solution proposed"==$Status) 
												{echo"selected";} 
											echo">Solution proposed</option>
										<option value='Solution applied'"; 
											if ("Solution applied"==$Status) 
												{echo"selected";} 
											echo">Solution applied</option> 
										<option value='Closed'"; 
											if ("Closed"==$Status) 
												{echo"selected";} 
											echo">Closed</option>
									</select>
								</td>
							</tr>
							<tr>
								<td>Problem type : 
									<br><select name=problemType>
										<option value=''";
										if (""==$Problem_type) 
											{echo"selected";} 
										echo"</option> 
									<option value='No existing process'";
										if("No existing process"==$Problem_type)
											{echo"selected";}
										echo">No existing process</option> 
										<option value='Process not clear'";
										if ("Process not clear"==$Problem_type) 
											{echo"selected";} 
										echo">Process not clear</option> 
										<option value='Process not applied'";
										if ("Process not applied"==$Problem_type) 
											{echo"selected";} 
										echo">Process not applied</option>
										<option value='Delay'";
										if ("Delay"==$Problem_type) 
											{echo"selected";} 
										echo">Delay</option> 
										<option value='Other'";
										if ("Other"==$Problem_type) 
											{echo"selected";} 
										echo">Other</option> 
									</select>
								</td>
							</tr>
						</table>
						</td>
					</tr>
					<tr>
						<td width=100%>
							Resolution comments : <br><TEXTAREA NAME=R_comments ROWS=4 COLS=53>$R_comments</TEXTAREA> </td>
						</td>
						<td>
						<table>
							<tr>
								<td>Corrective action planned :
									<select name=CA_P>
										<option value=''";
										if (""==$CA_P) 
											{echo"selected";} 
										echo"></option> 
										<option value='Agent training'";
										if ("Agent training"==$CA_P) 
											{echo"selected";} 
										echo">Agent training</option> 
										<option value='Agent reminder'";
										if ("Agent reminder"==$CA_P) 
											{echo"selected";} 
										echo">Agent reminder</option> 
										<option value='Process setup'";
										if ("Process setup"==$CA_P) 
											{echo"selected";} 
										echo">Process setup</option>
										<option value='Process updated'";
										if ("Process updated"==$CA_P) 
											{echo"selected";} 
										echo">Process updated</option> 
										<option value='Resolver reminder'";
										if ("Resolver reminder"==$CA_P) 
											{echo"selected";} 
										echo">Resolver reminder</option>
										<option value='Solution speed-up'";
										if ("Solution speed-up"==$CA_P) 
											{echo"selected";} 
										echo">Solution speed-up</option>
										<option value='Other'";
										if ("Other"==$CA_P) 
											{echo"selected";} 
										echo">Other</option>
									</select>
								</td>
							</tr>
							<tr>
								<td>Corrective action done : 
									<br><select name=CA_D>
										<option value=''";
										if (""==$CA_D) 
											{echo"selected";} 
										echo"></option> 
										<option value='Agent training'";
										if ("AgentT"==$CA_D) 
											{echo"selected";} 
										echo">Agent training</option> 
										<option value='Agent reminder'";
										if ("Agent reminder"==$CA_D) 
											{echo"selected";} 
										echo">Agent reminder</option> 
										<option value='Process setup'";
										if ("Process setup"==$CA_D) 
											{echo"selected";} 
										echo">Process setup</option>
										<option value='Process updated'";
										if ("Process updated"==$CA_D) 
											{echo"selected";} 
										echo">Process updated</option> 
										<option value='Resolver reminder'";
										if ("Resolver reminder"==$CA_D) 
											{echo"selected";} 
										echo">Resolver reminder</option> 
										<option value='Solution speed-up'";
										if ("Solution speed-up"==$CA_D) 
											{echo"selected";} 
										echo">Solution speed-up</option>  
										<option value='Other'";
										if ("Other"==$CA_D) 
											{echo"selected";} 
										echo">Other</option> 
									</select>
								</td>
							</tr>
						</table>
						</td>
					</tr>
				</table>
				<table width=100%>
					<tr>
						<td width=45%>"; 
						?>
 
						<INPUT TYPE="submit" name="submitted" VALUE="      Ok      " onClick="document.getElementById('fuseaction').value = 'modify';">
						<INPUT TYPE="submit" name="submitted" VALUE="   Print   "  onClick="document.getElementById('fuseaction').value = 'print';"></td>
						<input type="hidden" name=Complaint_year value="$CompNb1">
						<input type="hidden" name=Complaint_nb value="$CompNb2">
						<td width=30%> This problem has been solved ? </td>
						<td><input type="radio"<?php
							if($CPSD=='0000-00-00' && $CPST=='00:00:00')
								{echo"name='Pb' value='Yes'> Yes</td>";}
							else
								{echo"checked='checked'name='Pb' value='Yes'> Yes</td>";}
 
						echo"<td><input type='radio'";
							if($CPSD=='0000-00-00' && $CPST=='00:00:00')
								{echo"checked='checked' name='Pb' value='No'> No</td>";}
							else
								{echo"name='Pb' value='No'> No</td>";}
							?>
 
					</tr>
				</table>
				</form>
			</p>
			</div>
			<?php
}			
if(isset($_POST['submitted']))
{
	if ($_POST['submitted']=="      Ok      ")
	{
		include"TreatModify.php";
	}
	else if ($_POST['submitted']=="   Print   ")
	{
		include"PrintC.php";
	}
	else
	{
		echo"Ca ne fonctionne pas";
	}
}
Et voilà le TreatModify.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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
 
<?php
session_start();
// Connexion
$lien=mysql_connect("localhost","root","");
mysql_select_db("complaint_applet",$lien);
 
//Test connexion
if ($lien==0)
{
	printf("Error of connexion with the server");
}
 
//Recovery of the data
$Complaint_year= $_POST['Complaint_year'];
$Complaint_number= $_POST['Complaint_nb'];
$NbIncident = $_POST['NbIncident'];
$Complainant_name = $_POST['Complainant_name'];
$Description = $_POST['Description'];
$Los = $_POST['los'];
$Natco = $_POST['natco'];
$Status = $_POST['status'];
$Problem_type = $_POST['problemType'];
$R_comments = $_POST['R_comments'];
$CA_P = $_POST['CA_P'];
$CA_D = $_POST['CA_D'];
$Pb = $_POST['problemType'];
 
//Recovery of resolving problem date & time
	$CurrentYear=Date("Y");
	$CurrentMonth=Date("m");
	$CurrentDay=Date("j");
	$CurrentHour=Date("H");
	$CurrentMinute=Date("i");
	$CurrentSecond=Date("s");
	$CurrentDate=$CurrentYear."-".$CurrentMonth."-".$CurrentDay;
	$CurrentTime=$CurrentHour.":".$CurrentMinute.":".$CurrentSecond;
 
//if a problem has been solved, registered date & time
if ($Pb=="Yes")
{
	$Pb_solving_D=$CurrentDate;
	$Pb_solving_T=$CurrentTime;
}
else
{
	$Pb_solving_D="0000-00-00";
	$Pb_solving_T="00:00:00";
}
 
//if the complaint is closed, register date & time
if ($Status=="Closed")
{
	$Closure_date=$CurrentDate;
	$Closure_time=$CurrentTime;
}
else
{
	$Closure_date="0000-00-00";
	$Closure_time="00:00:00";
}
 
//if the status is changed, register the last status change date
$request1="SELECT Status FROM complaint";
$result1=mysql_query($request1);
$find1=mysql_fetch_row($result1);
 
if ($find1[0]==$Status)
{
	$Last_status_change_date="0000-00-00";
}
else
{
	$Last_status_change_date=$CurrentDate;
}
 
//To grant rights
$profile = $_SESSION['Profile'];
if ($profile=="TSI" && ( $Los=="RM"))
{
	exit("You are not authorised to create complaints with a Other or RM LOS because you have a TSI profile");
}
 
//Verification of the capture of all the fields
if ($Complaint_year=="" || $NbIncident=="" ||$Complainant_name=="" || $Description=="" || $Los=="" || $Natco=="")
{
	echo"<font color=darkblue>You did not inform all the fields</font color>";
}
else
{
	$User = $_SESSION['Name'];
	//Resquest of insertion of new features of complaint
	$request2="UPDATE complaint
	SET Description='$Description',
	Incident_Request_number='$NbIncident',
	Natco='$Natco',
	LOS='$Los',
	Status='$Status',
	Last_status_change_date='$Last_status_change_date',
	Last_change_date='$CurrentDate',
	Last_change_time='$CurrentTime',
	Last_change_by='$User',
	Complainant_name='$Complainant_name',
	Complainant_problem_solving_date='$Pb_solving_D',
	Complainant_problem_solving_time='$Pb_solving_T',
	Resolution_comments='$R_comments',
	Problem_type='$Problem_type',
	Corrective_actions_planned='$CA_P',
	Corrective_actions_done='$CA_D',
	Closure_date='$Closure_date',
	Closure_time='$Closure_time'
	WHERE Complaint_number LIKE '$Complaint_number'
	AND Complaint_year LIKE '$Complaint_year'";
	$result2=mysql_query($request2);
 
	include"Search.php";
 
}
?>
Lolie11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 19h37   #4
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
Ainsi ça ne marchera jamais : vous envoyez la plus grande partie du contenu du document (code HTML) avant l'inclusion du fichier TreatModify.php qui comporte l'appel à session_start.

La solution serait, peut être, de déplacer ce session_start tout en haut du script qui l'appelle ...
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 08h58   #5
Nouveau Membre du Club
 
Inscription : mai 2007
Messages : 177
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 177
Points : 33
Points : 33
ok enfait mon session_start se fait au tout début, à l'authentification. Mais le problème c'est qu'il faut que je récupère les $_SESSION['Name'] et $_SESSION['Profile'] dans mon treatModify.php. Il faut donc que je fasse passer ces variables dans tous mes documents où y a t il un autre moyen de les récupérer ?
Lolie11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 09h59   #6
Nouveau Membre du Club
 
Inscription : mai 2007
Messages : 177
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 177
Points : 33
Points : 33
J'ai regardé et apparemment avec mon utilisation puisque j'utilise un session_start au début je devrais pouvoir accès aux variables globales $_SESSION partout, mais évidemment ça ne fonctionne pas. Il me dit qu'il ne connait pas les variable $_SESSION.
J'utilise EasyPhp 1.8
PHP 4.3.10
sous Internet Explorer 6.0 svp aidez moi !!
Lolie11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 10h51   #7
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
Si vous faites l'appel à session_start dans un script qui en inclue un ou plusieurs autres, les scripts inclus auront également accès à la session.

Commencez par chercher dans le script qui fait les affectations aux variables de session ($_SESSION['X'] = quelque chose;) puisque apparemment elles ne sont pas faites dans ceux que vous montrez. Tester éventuellement la bonne transmission de ces variables de session en ajoutant un simple print_r($_SESSION) à la fin et au début (après session_start quand même) de vos scripts (vous pouvez exclure ceux qui ne sont pas appelés explicitement - ie par inclusion).

Un conseil : testez que vos variables de session existent avant de les utiliser (via la fonction isset).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 12h08   #8
Nouveau Membre du Club
 
Inscription : mai 2007
Messages : 177
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 177
Points : 33
Points : 33
Voilà mon enchainement de script :
TreatIdentification.php-> BannerPage.php-> Search.html -> Results.php -> Results.html -> Result.php -> Modify.php -> Modification.php -> TreatModify.php

J'ai trouvé un gros problème.
Dans mon Result.php si j'insère un print_r($_SESSION) il me met l'erreur :
Notice: Undefined variable: _SESSION in c:\home\easyphp1-8\www\result.php on line 64

Mais si je mets en en-tête <? session_start() ?> alors il fonctionne
Mais dans Search.html m'écrit :
Notice: A session had already been started - ignoring session_start() in c:\home\easyphp1-8\www\Result.php on line 2
Array ( [Name] => Bardaji [Profile] => Airbus )

Donc dans que je fasse un truc où l'autre j'ai toujours une erreur ...

Ensuite j'arrive jusqu'au TreatModify.php il y a l'erreur undifined variable $_SESSION et si je lui inclus un session_start il trouve les variable mais m'écrit avant :
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\home\easyphp1-8\www\modification.php:2) in c:\home\easyphp1-8\www\TreatModify.php on line 2

Je ne vois pas trop comment arranger ça ...

Ah oui TreatModify inclut Search.php puis qui inclut lui même Search.html
sans session_start() ils ne reconnaissent pas non plus les variables
sinon avec le session_start() ça m'affiche toutes les variables sans warning
Lolie11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 13h17   #9
Nouveau Membre du Club
 
Inscription : mai 2007
Messages : 177
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 177
Points : 33
Points : 33
Où peut on vérifier que la variable register_globals est à On ?? Je travaille avec Easy php 1.8 et PHP 4.3.10 ça ne peut pas venir de ça ?
Lolie11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 13h35   #10
Nouveau Membre du Club
 
Inscription : mai 2007
Messages : 177
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 177
Points : 33
Points : 33
Est ce qu'il doit y avoir un seul session_start() dans tous les scripts ?
Lolie11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 14h17   #11
Nouveau Membre du Club
 
Inscription : mai 2007
Messages : 177
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 177
Points : 33
Points : 33
Est ce que ça ne poserait pas problème quand je recharge ma page Result.php par hasard.

J'ai fait l'arborescence de mes enchainements de script.
Quand je suis dans ma recherche et que je soumets (donc c'est un formulaire) à la page d'après je n'ai plus mes variables de session.
Pour palier à ce problème si je mets un session_start au début de Results.php il retrouve les mêmes variables de session. Seulement je ne pense pas que ça soit très correct de mettre plusieurs session_start(); si ??

Une fois ce session_start() mis en place. Je suis donc sur une page de recherche et pour chaque résultat il y a deux petits boutons soit pour modifier soit pour supprimer. Quand je clique sur l'un d'eux Result.php qui est rechargé pour analyser le clic de l'utilisateur présente a nouveau des problèmes tout comme Modify.php et Delete.php

Si à ce moment là je mets un session_start() au début de Result.php ça refonctionne mais cependant sur ma page de résultat donc juste après mon form qui inclut Results.php qui inclut lui-même Results.html et qui lui-même inclut Result.php :
Notice: A session had already been started - ignoring session_start() in c:\home\easyphp1-8\www\Result.php on line 2

Et pour finir quand je suis sur ma page de modification ( si on choisit de cliquer sur le bouton adapté pour la page de résultat de recherche) et que je clique sur Ok grâce au form ça va dans TreatModify.php qui à nouveau me dit qu'il ne reconnait pas les variables $_SESSION. Ce .php inclut Search.php qui du coup ne les reconnait pas non plus.

En gros ya trois endroits où ces variables ne veulent pas passer !
Lolie11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 15h42   #12
Nouveau Membre du Club
 
Inscription : mai 2007
Messages : 177
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 177
Points : 33
Points : 33
C'est bon j'ai trouvé réponse à mon problème seul un tout petit subsiste donc je résouds ce problème et si j'y arrive, je RESOLUerais ce post
Lolie11 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 07h55.


 
 
 
 
Partenaires

Hébergement Web