Problème avec les sessions !

Résolu
Signaler
Messages postés
47
Date d'inscription
samedi 17 décembre 2005
Statut
Membre
Dernière intervention
14 décembre 2006
-
Messages postés
47
Date d'inscription
samedi 17 décembre 2005
Statut
Membre
Dernière intervention
14 décembre 2006
-





























contenu
Aller à la page [index.php index.php].












[ Authentification ]
























Lorsqu'on appelle la page, j'ai un message :
Warning: session_start(): Cannot send session cache limiter -
headers already sent (output started at c:\program
files\easyphp1-8\www\cms\index.php:1) in c:\program files\easyphp1-8\www\cms\template\purple\body.php on line 4

Je ne vois pas d'où cela peut venir (excepté du session_start() mais je ne comprend pas pourquoi !).

Si quelqu'un pouvait m'aider.

J'en profite également pour demander si quelqu'un sait comment on définit une largeur pour le bouton submit du formulaire.

Merci d'avance.

33 réponses

Messages postés
47
Date d'inscription
samedi 17 décembre 2005
Statut
Membre
Dernière intervention
14 décembre 2006

J'AI TROUVE !!

L'erreur provient du fait que ma page est encodée en utf-8 ! Si je l'enregistre en ANSI eh bien tout passe !

Y-a-t-il une solution pour faire cohabiter l'utf-8 et le session_start() ??

Nikö
Messages postés
47
Date d'inscription
samedi 17 décembre 2005
Statut
Membre
Dernière intervention
14 décembre 2006

http://forum.alsacreations.com/topic-17-4966-1-Rsolu-Problme-avec-lencodage-UTF8.html
http://forum.alsacreations.com/topic.php?fid=17&tid=766&p=2#p7929

Le problème était bien lié à l'utf-8. Apparement, ce problème apparaît sur certains editeurs de texte.

Voila, ça en dépannera certainement d'autres !

Nikö
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut,

Headers already sent

a +
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Salut!
La fonction session_start, qui utilise les headers, est à appeler avant toute sortie au navigateur. On entend sortie au navigateur des données envoyés au navigateur, donc, notamment: code HTML, print, echo, ...

Donc, faut la mettre avant

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Héhé, je me suis fait doubler, :D

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
<?php

    ob_start();

    echo 'test';

    header('location:page.php'); //le texte "test" a d&#233;j&#224; &#233;t&#233; envoy&#233; au navigateur, il y aura donc une erreur

    ob_end_flush();

?>


Le copier coller, s&#233;mall, il n'y aura justement pas d'erreur, non? :D

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
ah merde je vais corriger lol merci, j'ai fait du copier-coller de ce que j'avais écrit plus haut effectivement ^^ mdr

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
C'est corrigé merci :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
47
Date d'inscription
samedi 17 décembre 2005
Statut
Membre
Dernière intervention
14 décembre 2006

Même en mettant :
<?php
    // on ouvre la session
    session_start() ;
    ...
?>


sur ma vraie page index.php (celle qui appelle le code ci-dessus se trouvant dans body.php), eh bien ça merdouille :


Warning: session_start(): Cannot send session cookie - headers
already sent by (output started at c:\program
files\easyphp1-8\www\cms\index.php:1) in c:\program files\easyphp1-8\www\cms\index.php on line 3



Warning: session_start(): Cannot send session cache limiter -
headers already sent (output started at c:\program
files\easyphp1-8\www\cms\index.php:1) in c:\program files\easyphp1-8\www\cms\index.php on line 3

une idée ?
Nikö
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Np! J'ai découvert un new site sympa, comme ca, :D

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Hum... Ton fichier body.php est inclu par ton fichier index.php qui contient une sortie avant l'inclusion?

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
47
Date d'inscription
samedi 17 décembre 2005
Statut
Membre
Dernière intervention
14 décembre 2006

bah en fait, mon index.php commence par
<?php
// on ouvre la session
session_start() ;
...

puis fait plusieurs require, dont mon body.php, ainsi que la déclaration doctype xhtml...

Nikö
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Bizarre!
Bon aucune sortie ne doit être faite par n'importe quel fichier appelé avant. De plus, il ne faut qu'un seul session_start ( pas un dans index et un dans body )

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
47
Date d'inscription
samedi 17 décembre 2005
Statut
Membre
Dernière intervention
14 décembre 2006

Aucune idée alors ?

Argh, je viens d'essayer sur mon serveur et ça déconne aussi !

Nikö
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Je suis certain qu'il y a un saut de ligne, ou un espace, avant ton session_start ().
Utilise un éditeur genre textpad, et affiche les caractères spéciaux.
Messages postés
47
Date d'inscription
samedi 17 décembre 2005
Statut
Membre
Dernière intervention
14 décembre 2006

<?php
    // on ouvre la session
    session_start() ;
    /* inclusion des fichiers n&#233;c&#233;ssaires */
    require('include/config.php') ;
    require('include/fonctions.php') ;
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo($langue) ; ?>" lang="<?php echo($langue) ; ?>">
    <?php
        /* inclusion du fichier contenant le tag <head></head> */
        require('include/head.php') ;
        /* inclusion du fichier model edes pages contenant toute le tag  */
        require('template/'.$template.'/body.php') ;    
    ?>
</html>


Voila à quoi ressemble mon fichier index.php.
Je ne sais pas pourquoi mais je n'ai plus qu'un seul message d'erreur désormais :


Warning: session_start(): Cannot send session cache limiter -
headers already sent (output started at c:\program
files\easyphp1-8\www\cms\index.php:1) in c:\program files\easyphp1-8\www\cms\index.php on line 3

Nikö
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Je maintiens que tu devrais afficher les caractères spéciaux invisibles dans ce fichier. Tu verrais que tu as un saut de ligne ou un espace, ou une tabulatrion, avec le session_start () quelquepart.
Messages postés
47
Date d'inscription
samedi 17 décembre 2005
Statut
Membre
Dernière intervention
14 décembre 2006

avant la balise php, je n'ai rien ! j'en suis sur parce que le < de
la balise est le premier caractere. si cest bien de ce dont tu parles.
je verifierai chez moi ce soir quand meme.



Merci

Nikö
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
J'ai pas dit avant la balise php, mais avant le session_start ().
vérifie, tu verras ;-) Affiche les caractères invisibles, il y en a 1 qui traîne.
Messages postés
47
Date d'inscription
samedi 17 décembre 2005
Statut
Membre
Dernière intervention
14 décembre 2006

Bon, bah j'ai modifié mon code !!!
Il est exactement comme suit (index.php) donc je n'ai plus de caractères entre la balise php et le session_start excepte le retour à la ligne.

Is it good ?

<?php
session_start() ;
// ouverture de la session
...


J'ai testé en local et j'ai toujours le message d'erreur...
Nikö