Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1780 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème de variable de session

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de variable de session

n°1999947
Elooodie
(_+33|<
Posté le 08-06-2010 à 16:01:06  profilanswer
 

Bonjour à tous,
 
Me voila enfin au bout du site internet que j'avais a réalisé. J'ai testé tout mon site en local il fonctionne parfaitement, seulement voila quand je met le site en ligne chez mon hébergeur (Arsys) et que je me rend sur la page d'accueil j'ai de message qui s'affiche:
 
 
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/vhost/arborescences.net/home/html/index.php:4) in /var/www/vhost/arborescences.net/home/html/wp-content/themes/greenie-10/header.php on line 2
 
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/vhost/arborescences.net/home/html/index.php:4) in /var/www/vhost/arborescences.net/home/html/wp-content/themes/greenie-10/header.php on line 2
 
Et ensuite mon site s'affiche mais mal, le CSS est mal pris en compte, etc.
Je ne sais absolument pas de quoi ça vient, je précise que j'utilise wordpress si ça a une importance quelconque...  :??:  
Si quelqu'un pouvait m'aider à comprendre le problème et me donner des pistes pour le résoudre  :ange:  
 
Merci d'avance :)

mood
Publicité
Posté le 08-06-2010 à 16:01:06  profilanswer
 

n°1999966
NewsletTux
<Insérez ici votre vie />
Posté le 08-06-2010 à 16:39:47  profilanswer
 

il doit y avoir un texte (ou un retour à la ligne) avant le session_start();


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1999973
Elooodie
(_+33|<
Posté le 08-06-2010 à 17:00:10  profilanswer
 

Visiblement non, en fait j'ai deux fichiers: un qui contient toute l'entete avec l'ouverture de session, et un qui contient la page web elle même et qui appelle le header.  
Voici le début du fichier header :
<?php
 session_start();
[...]
Et le début du fichier page:
<?php get_header(); ?>
[...]
 
Est ce que ça peut venir d'une incompréhension entre les deux pages à ce niveau... ou pas du tout?

n°1999974
deuspi
Posté le 08-06-2010 à 17:03:31  profilanswer
 

Salut,
Comme le dit ton message d'erreur :
- "headers already sent" (les headers ont déjà été transmis)  
- puis "output started at /var/www/vhost/arborescences.net/home/html/index.php:4" (la sortie a commencé dans index.php ligne 4)
 
Donc regarde ce qu'il y a dans ton index.php à la ligne 4, il doit y avoir soit un echo, soit du texte, ou un retour à la ligne en dehors de balises <?php ?>, qui du coup interdit l'utilisation du session_start() (qui exige que les headers n'aient pas déjà été transmis)
 
Bon courage

n°2000000
clements42
Posté le 08-06-2010 à 17:54:01  profilanswer
 

même une tabulation (indentation) peut générer ce genre d'erreur

n°2000015
stef_dober​mann
Personne n'est parfait ...
Posté le 08-06-2010 à 19:14:03  profilanswer
 

s'il y a un include, et que dans ton include il y a envoi de données l'erreur se produit aussi.
cela pose problème si l'envoi est fait dans une fonction ou classe


---------------
Tout à commencé par un rêve...
n°2000099
Elooodie
(_+33|&lt;
Posté le 09-06-2010 à 10:11:32  profilanswer
 

J'ai regardé vos solutions, j'ai fait quelques modification en effet j'avais des tabulations, j'ai supprimé tout ça et j'ai toujours des erreurs:
 
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/vhost/arborescences.net/home/html/index.php:4) in /var/www/vhost/arborescences.net/home/html/wp-content/themes/greenie-10/header.php on line 1
 
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/vhost/arborescences.net/home/html/index.php:4) in /var/www/vhost/arborescences.net/home/html/wp-content/themes/greenie-10/header.php on line 1
 
La ligne 4 de mon index correspond à du js:
document.valeur.submit();
 
Une idée? ca me bloque tout cette histoire, en plus la valeur n'est pas transmise aux autres pages. Est ce que ca peut venir du serveur d'hébergement qui bloquerais la création de cookies ou un truc du genre?

n°2000100
deuspi
Posté le 09-06-2010 à 10:15:30  profilanswer
 

Elooodie a écrit :

J'ai regardé vos solutions, j'ai fait quelques modification en effet j'avais des tabulations, j'ai supprimé tout ça et j'ai toujours des erreurs:
 
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/vhost/arborescences.net/home/html/index.php:4) in /var/www/vhost/arborescences.net/home/html/wp-content/themes/greenie-10/header.php on line 1
 
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/vhost/arborescences.net/home/html/index.php:4) in /var/www/vhost/arborescences.net/home/html/wp-content/themes/greenie-10/header.php on line 1
 
La ligne 4 de mon index correspond à du js:
document.valeur.submit();
 
Une idée? ca me bloque tout cette histoire, en plus la valeur n'est pas transmise aux autres pages. Est ce que ca peut venir du serveur d'hébergement qui bloquerais la création de cookies ou un truc du genre?


Salut,
Comment ça du JS ?
Tu n'as pas le droit de transmettre du JS ou du HTML avant de faire un session_start. Le problème vient de là.
Montre nous le début du fichier index.php ce sera plus simple...
 
Bon courage

n°2000111
Elooodie
(_+33|&lt;
Posté le 09-06-2010 à 10:24:43  profilanswer
 

Merci, en effet je viens de me rendre compte de ma boulette  :sweat:  
J'ai donc fait démarrer le session dans l'index:
 
<?php session_start(); ?>
<script type="text/javascript">
function myLoad() {
document.getElementById('resolution').value=screen.width;
document.valeur.submit(); }
</script>
 
et le début de mon header:
<?php
if(isset($_POST['resolution']) && !isset($_SESSION['resolution'])) {
$_SESSION['resolution'] = $_POST['resolution'];
}
?>
 
Alors là, le problème change, le message d'erreur s'affiche brievement sur l'index (brievement car la page recharge seule), mon site s'affiche presque correctement, mais quand je passe aux pages suivantes problème, j'ai l'impression qu'il n'y plus rien dans le $_SESSION['resolution']! :??:  
Je précise que ce header est chargé sur toutes les pages sauf l'index.

n°2000145
deuspi
Posté le 09-06-2010 à 11:06:56  profilanswer
 

Elooodie a écrit :

[...]
Alors là, le problème change, le message d'erreur s'affiche brievement sur l'index (brievement car la page recharge seule), mon site s'affiche presque correctement, mais quand je passe aux pages suivantes problème, j'ai l'impression qu'il n'y plus rien dans le $_SESSION['resolution']! :??:  
Je précise que ce header est chargé sur toutes les pages sauf l'index.


Houla c'est un peu confus tout ça :hebe:
 
"Le message d'erreur s'affiche brièvement sur l'index" => quel message d'erreur ? C'est peut-être lié à tes problèmes... Mets en commentaire ton document.valeur.submit() pour avoir le temps de noter le message.
 
"quand je passe aux pages suivantes il n'y a plus rien dans $_SESSION['resolution']" => est-ce que tu as refait un session_start ? Tant que session_start n'est pas fait, tu ne peux accéder au contenu du tableau $_SESSION

mood
Publicité
Posté le 09-06-2010 à 11:06:56  profilanswer
 

n°2000149
Elooodie
(_+33|&lt;
Posté le 09-06-2010 à 11:22:22  profilanswer
 

Alors, le message d'erreur sur l'index c'est le warning, les mêmes que j'ai cité plus haut, ils ont juste changé de pages, en fait ils se trouvent toujours sur la page où il y a le session_start().
Ensuite, non je n'avais pas refait session_start, je viens d'essayer et le problème est toujours le même et il me rajoute les warnings au dessus.
Je sais pas si je suis très claire je suis assez despespérée là lol

n°2000158
deuspi
Posté le 09-06-2010 à 11:45:06  profilanswer
 

Elooodie a écrit :

Alors, le message d'erreur sur l'index c'est le warning, les mêmes que j'ai cité plus haut, ils ont juste changé de pages, en fait ils se trouvent toujours sur la page où il y a le session_start().
Ensuite, non je n'avais pas refait session_start, je viens d'essayer et le problème est toujours le même et il me rajoute les warnings au dessus.
Je sais pas si je suis très claire je suis assez despespérée là lol


Bon on la refait moins stressé :)
 
1. Tu as ton fichier index dont le seul but apparemment est de récupérer la résolution de l'écran pour la transmettre en POST à la page suivante (j'imagine...). Donc déjà là tu n'as pas besoin de faire de session_start, puisque sur cette petite page d'index, tu n'accèderas pas à la session.
 
2. Ensuite tu arrives dans une 2e page, on va dire "page" (j'imagine... tu m'en as pas dit assez pour ça ;)). Je suppose que "page" commence par faire un include de "header". Avant de faire quoi que ce soit d'autre, pas de retour chariot, ni de tabulation.
 
3. Après donc on arrive dans le fichier "header" qui doit commencer par le session_start() avant de faire quoi que ce soit d'autre. Alors seulement tu peux te mettre à écrire et lire dans la session.
 
Est-ce que tu suis bien ce cheminement ? N'hésite pas à poster davantage de code (et d'utiliser les balises [code=php][/code])

n°2000164
Elooodie
(_+33|&lt;
Posté le 09-06-2010 à 11:56:11  profilanswer
 

Tout d'abord merci de prendre de ton temps pour m'aider :)
 
Pour le 1. c'est bon j'ai supprimé le session_start()
Pour le 2. en effet dans ma page (une page classique avec du texte et photos qui présente une entreprise) je fais :

Code :
  1. <?php get_header(); ?>


C'est la toute première ligne, pas de retour chariot, espace, ni rien avant.
3. Le header commence bien par session_start :

Code :
  1. <?php session_start();
  2. if(isset($_POST['resolution']) && !isset($_SESSION['resolution'])) {
  3. $_SESSION['resolution'] = $_POST['resolution'];
  4. }
  5. ?>
  6.  
  7. <!DOCTYPE html PUBLIC[...]


J'ai regardé pas mal de posts d'utilisateurs qui avaient ce soucis et ils ont réussi à regler en supprimant les espaces etc. Moi ce n'est pas le cas. J'ai entendu parler des BOM, mais je ne vois pas à quoi ca correspond :/

n°2000168
deuspi
Posté le 09-06-2010 à 12:02:06  profilanswer
 

Elooodie a écrit :

Pour le 2. en effet dans ma page (une page classique avec du texte et photos qui présente une entreprise) je fais :

Code :
  1. <?php get_header(); ?>


C'est la toute première ligne, pas de retour chariot, espace, ni rien avant.


Y a un truc que je comprends pas dans ta page :
- tu appelles get_header() : c'est quoi cette fonction ? Elle est où ?
- tu fais pas include "header.php", comment le code peut faire pour arriver dans ton fichier header ?

n°2000173
Elooodie
(_+33|&lt;
Posté le 09-06-2010 à 12:07:00  profilanswer
 

Alors get_header est une fonction prédéfinie dans wordpress qui me permet d'appeler le contenu du fichier header.php
Je n'ai jamais utilisé include ( je débute tu l'auras surement compris ^^ ), est ce que l'utiliser à la place du get_header pourrait résoudre le problème?
A savoir que visiblement le header est bien pris en compte puisque ma feuille de style fonctionne.

n°2000198
deuspi
Posté le 09-06-2010 à 13:15:42  profilanswer
 

Elooodie a écrit :

Alors get_header est une fonction prédéfinie dans wordpress qui me permet d'appeler le contenu du fichier header.php
Je n'ai jamais utilisé include ( je débute tu l'auras surement compris ^^ ), est ce que l'utiliser à la place du get_header pourrait résoudre le problème?
A savoir que visiblement le header est bien pris en compte puisque ma feuille de style fonctionne.


Je connais pas wordpress. Après recherche effectivement la fonction get_header() devrait faire ce que tu attends d'elle. Donc oublie l'histoire d'include..
Il doit y avoir un autre problème quelque part mais j'avoue que c'est pas facile de t'aider car tu donnes pas beaucoup d'infos ;)
 
Bon, histoire d'y voir un peu plus clair, on en est où là ? Décris exactement le comportement et le message d'erreur que tu vois.
Au pire, colle le code complet de tes fichiers pour que je puisse comprendre ce que t'essaies de faire.

n°2000292
Elooodie
(_+33|&lt;
Posté le 09-06-2010 à 16:42:50  profilanswer
 

Merci pour toute ton aide, mais là j'arrivais pas à m'en sortir alors aux grands maux les grands remèdes.  :jap:  
 
En fait il s'agissait d'un script qui se lançait dans l'index pour détecter la résolution d'écran du visiteur et qui envoyait la valeur par formulaire à la page suivante qui en fait se trouve être la première page du site vu que le visiteur ne voit pas la première.
On m'avait demandé d'adapter la résolution du site en fonction de la résolution = à 800*600 ou supérieur, je n'avais pas réussi en CSS donc je m'étais lancé dans un truc un peu fouilli et compliqué.
 
Ne m'en sortant pas, j'ai viré tout ça, la résolution d'écran sera la même pour tous, après tout, quasiment personne n'utilise le 800*600 je vais pas passer des heures à me tuer à la tache pour ca :D

n°2000322
deuspi
Posté le 09-06-2010 à 18:36:29  profilanswer
 

Elooodie a écrit :

Merci pour toute ton aide, mais là j'arrivais pas à m'en sortir alors aux grands maux les grands remèdes.  :jap:  
 
En fait il s'agissait d'un script qui se lançait dans l'index pour détecter la résolution d'écran du visiteur et qui envoyait la valeur par formulaire à la page suivante qui en fait se trouve être la première page du site vu que le visiteur ne voit pas la première.
On m'avait demandé d'adapter la résolution du site en fonction de la résolution = à 800*600 ou supérieur, je n'avais pas réussi en CSS donc je m'étais lancé dans un truc un peu fouilli et compliqué.
 
Ne m'en sortant pas, j'ai viré tout ça, la résolution d'écran sera la même pour tous, après tout, quasiment personne n'utilise le 800*600 je vais pas passer des heures à me tuer à la tache pour ca :D


OK, c'est vrai que tu m'avais l'air partie dans une usine à gaz, comme on dit.. Tant mieux que tu puisses t'abstenir sur ce coup-là parce que c'était quand même pas super élégant de balancer la résolution au serveur via du javascript (bien que fonctionnel)
 
Bon courage pour la suite en tout cas !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème de variable de session

 

Sujets relatifs
Probléme avec Joomla , adminProblème avec une variable $_SESSION
problème avec une variable de sessionproblème de boucle/session : envoi de doublons en nombre variable ?!
Probleme variable de session et requete sqlProblème de récupération de variable de session.
probleme avec une variable de session[ASP.NET] Problème pour accéder à une variable Session
probleme avec variable de session (sou oracle)[PHP] Probleme pour supprimer une variable de session
Plus de sujets relatifs à : Problème de variable de session


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR