OVH Cloud OVH Cloud

Session : 2 questions

9 réponses
Avatar
eric
1ère question :

Lorsque je veux exécuter la commande session_start (), les messages
d'avertissement suivant s'affichent :

Warning: session_start() [function.session-start]: Cannot send session
cookie - headers already sent by (output started at

Warning: session_start() [function.session-start]: Cannot send session
cache limiter - headers already sent (output started at

Comment puis je corriger ?


2nde question :
Comment puis je passer un tableau au travers d'une session ?

Merci
Eric

9 réponses

Avatar
Olivier Miakinen
1ère question :

Lorsque je veux exécuter la commande session_start (), les messages
d'avertissement suivant s'affichent :

Warning: session_start() [function.session-start]: Cannot send session
cookie - headers already sent by (output started at

Warning: session_start() [function.session-start]: Cannot send session
cache limiter - headers already sent (output started at

Comment puis je corriger ?


Il en va des sessions comme des cookies et de la fonction header(). Voir
ce passage de la FAQ, c'est exactement la même chose :
<http://faqfclphp.free.fr/#rub2.12>.

2nde question :
Comment puis je passer un tableau au travers d'une session ?


Tu ne voudrais pas plutôt stocker le contenu du tableau sur le serveur,
et passer dans la session un identifiant unique te permettant de le
retrouver ? Parce que bon, si tu dois renvoyer tout un gros paquet de
données à chaque fois, ça fait des requêtes très lourdes inutilement.

Avatar
eric
1ère question :

Lorsque je veux exécuter la commande session_start (), les messages
d'avertissement suivant s'affichent :

Warning: session_start() [function.session-start]: Cannot send session
cookie - headers already sent by (output started at

Warning: session_start() [function.session-start]: Cannot send session
cache limiter - headers already sent (output started at

Comment puis je corriger ?


J'ai lu la FAQ mais même avec un code comme celui-ci, je bugge !

<?php
session_start();
?>
<HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" >
<title>FICHE D'INCIDENT</title>
<meta http-equiv="content-style-type" content="text/css">
<meta http-equiv="expires" content="0">
<link rel="stylesheet" href="frame.css" type="text/css" media="all">
</head>
<body>
Bonjour
</body>
</html>

Avatar
Olivier Miakinen

[ headers already sent by (output started at ]

J'ai lu la FAQ mais même avec un code comme celui-ci, je bugge !

<?php
session_start();
?>
<HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
[...]


Il n'y a vraiment aucun caractère dans le fichier avant le tout
premier "<", ni espace, ni saut de ligne, ni caractère de contrôle ?

Tiens, une idée qui me vient : ne serait-ce pas un fichier en UTF-16 ou
UTF-8 précédé par un « byte order mark (BOM) » qui serait transmis sur
le réseau ?

Avatar
Le Souricier Gris
Tiens, une idée qui me vient : ne serait-ce pas un fichier en UTF-16 ou
UTF-8 précédé par un « byte order mark (BOM) » qui serait transmis sur
le réseau ?
En effet, je viens de regarder avec hexedit, dans l'entête du fichier

j'ai les codes Hexa suivants :

EF BB BF

Par contre connaitriez vous un moyen simple de supprimer ces 3 octets ?

Merci
Eric

Avatar
Olivier Miakinen

Tiens, une idée qui me vient : ne serait-ce pas un fichier en UTF-16 ou
UTF-8 précédé par un « byte order mark (BOM) » qui serait transmis sur
le réseau ?
En effet, je viens de regarder avec hexedit, dans l'entête du fichier

j'ai les codes Hexa suivants :

EF BB BF


Bingo !

Pourtant, c'est parfaitement stupide en UTF-8 puisque, contrairement à
UTF-16, l'ordre des octets est parfaitement déterminé.

Il semble que beaucoup d'éditeurs Windows, dont Notepad, l'ajoutent
automatiquement :
http://fr.wikipedia.org/wiki/Marque_d'ordre_des_octets

Par contre connaitriez vous un moyen simple de supprimer ces 3 octets ?


Il faudrait trouver un éditeur qui ne les mette pas. Personnellement
j'utilise vi sous cygwin, mais je ne le conseillerai pas à un windowsien
pur jus. J'espère que d'autres lecteurs auront de meilleures idées.


Avatar
Dominique Ottello
Olivier Miakinen <om+ écrivait :

Il faudrait trouver un éditeur qui ne les mette pas. Personnellement
j'utilise vi sous cygwin, mais je ne le conseillerai pas à un windowsien


UltraEdit (Pas Gratuit) permet de sauvegarder avec ou sans BOM.
--
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Technologie aéronautique : http://aviatechno.free.fr (http://ottello.net)
Concorde dans la presse de 1965 à 2003 : http://le.pointu.free.fr

Avatar
piotr

Par contre connaitriez vous un moyen simple de supprimer ces 3 octets ?


Il faudrait trouver un éditeur qui ne les mette pas. Personnellement
j'utilise vi sous cygwin, mais je ne le conseillerai pas à un windowsien
pur jus. J'espère que d'autres lecteurs auront de meilleures idées.


Quand on est contraint et forcé d'utiliser Windows dans son travail
(avec fouet et menottes, dans mon cas) il existe une version win32 de
gvim qui fonctionne très bien.

Sinon, en plus "windowsien", j'aime bien tout ce qui est basé sur
Scintilla. On peut citer entre autres :
- Scite
- Notepad++
- jEdit

Pour une liste exhaustive, voir ici :
http://scintilla.sourceforge.net/ScintillaRelated.html


Avatar
Le Souricier Gris


Par contre connaitriez vous un moyen simple de supprimer ces 3 octets ?




Pour corriger j'ai utiliser hexeditor sous linux.

Par contre j'utiliser Scite sous Linux et c'est lui qui me mettait ses
3 caractères car il faut lui spécifier Encodage : UTF8 avec cookie !
pour que ceux ci ne soient pas enregistrés.

Mais si l'on fait celà, le fichier ne sera plus ouvert en UTF8 donc il
faut insérer dans les deux premières lignes un commentaire permettant
d'indiquer à scite que le fichier est en UTF8. Pour ma part :
<?php
session_start(); # coding: utf-8

Eric



Avatar
Bonsoir ;-)
Que dire, ça devrait marcher ?! Je ne connaissais pas !! merci ;-)

SINON

J'utilise Post-It, un note pad amélioré, j'aime bien, a voir si c'est le
note pad ou si c'est windows qui passe le fichier en utf-16.

Joyeux Noel
Bernard

<?php
session_start(); # coding: utf-8

Eric