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

  FORUM HardWare.fr
  Programmation
  PHP

  problème assez pointu entre writeexcel et session_start()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème assez pointu entre writeexcel et session_start()

n°1718489
poyolele
Posté le 16-04-2008 à 12:59:46  profilanswer
 

Bonjour tous le monde,
Voici mon problème :
J'utilise une bibliothèque nommée WriteExcel qui permet de générer avec php des fichiers Excel. Mon code marche bien et en localhost je crée mes fichiers que ce soit sous ie ou firefox. Mais dès que je passe tout ça sur un serveur, un problème apparait : l'export se fait sans problème sous firefox mais ça fait popo sous ie : génération d'un message d'erreur : 'internet explorer n'a pas pu ouvrir ce site...'
j'ai donc chercher d'où pouvait venir l'erreur et j'ai fini pas trouver avec certitude que ça vient de la ligne de code : session_star(); que je place en début de fichier. Cette ligne me sert à récupérer mes variables donc je ne peux m'en passer. Quelqu'un aurait-il un idée de pourquoi ie lors de la génération du fichier excel ne tolère pas session_start();?
Merci d'avance!

mood
Publicité
Posté le 16-04-2008 à 12:59:46  profilanswer
 

n°1718519
poyolele
Posté le 16-04-2008 à 13:14:46  profilanswer
 

personne n'a d'idée ?

n°1718602
poyolele
Posté le 16-04-2008 à 14:31:37  profilanswer
 

youhou...

n°1718611
Melendril
Posté le 16-04-2008 à 14:42:07  profilanswer
 

Salut,
 
Déjà, tu es sur un forum, donc ne t'attends pas avoir une réponse dans l'heure ou dans la journée, 24 me semble un bon délai avant de relancer :).
 
Ensuite il nous faudrait quelques détails supplémentaires que le simple message 'internet explorer n'a pas pu ouvrir ce site...' :
- Utilise des débugs pour savoir ou cela plante exactement.
- Si tu as accès aux logs du serveur, cela peut aider aussi.
- Voir le code aussi, même si on a pas besoin de toute la page.
 
De plus, je rappelle que PHP est un language serveur, donc si cela marche sur Firefox et non sur IE, je ne pense pas que cela vienne de là...


Message édité par Melendril le 16-04-2008 à 14:42:40
n°1718615
skeye
Posté le 16-04-2008 à 14:50:32  profilanswer
 

poyolele a écrit :

Bonjour tous le monde,
Voici mon problème :
J'utilise une bibliothèque nommée WriteExcel qui permet de générer avec php des fichiers Excel. Mon code marche bien et en localhost je crée mes fichiers que ce soit sous ie ou firefox. Mais dès que je passe tout ça sur un serveur, un problème apparait : l'export se fait sans problème sous firefox mais ça fait popo sous ie : génération d'un message d'erreur : 'internet explorer n'a pas pu ouvrir ce site...'
j'ai donc chercher d'où pouvait venir l'erreur et j'ai fini pas trouver avec certitude que ça vient de la ligne de code : session_star(); que je place en début de fichier. Cette ligne me sert à récupérer mes variables donc je ne peux m'en passer. Quelqu'un aurait-il un idée de pourquoi ie lors de la génération du fichier excel ne tolère pas session_start();?
Merci d'avance!


cf réponse de melendril, ça n'a pas de sens, ce que tu racontes. Donne des détails.


---------------
Can't buy what I want because it's free -
n°1718658
shurik'n
Posté le 16-04-2008 à 16:49:52  profilanswer
 

Tes cookies sur IE ne sont pas desactivés par hasard ?

n°1718700
skeye
Posté le 16-04-2008 à 17:26:43  profilanswer
 


 
bah ça a rien à voir avec le session_start() [:dawa]


---------------
Can't buy what I want because it's free -
n°1718721
masterpsx
Aigloun foutougrafe
Posté le 16-04-2008 à 17:56:51  profilanswer
 

Je connais pas WriteExcel mais si elle génére un fichier, elle utilise surement les fonctions de bufferisations php (ob_start() & co), il me semble que IE et FF ne réagisse pas toujours de la même façon avec ca et j'ai déja eu des soucis avec cette fonctionalité sur certain hébergeur.
 
Un exemple tout bête je l'avais utiliser pour le zlib et histoire de faire ca bien, je termine avec ob_end_clean(); mais cétait sans compter les hebergeurs qui inclus leur banniére de pub via le serveur. Le résultat cétait une belle page blanche purement et simplement sans aucun message d'erreur...
 
Bref, cétait juste pour la possible explication, pour la solution si tu est sur que ca viens de session_start(), tu peut surement t'en passer. tu n'as qu'a créer une page php indépendante du reste de ton script juste pour générer ton fichier.
 


Message édité par masterpsx le 16-04-2008 à 17:57:39
n°1718774
poyolele
Posté le 16-04-2008 à 19:28:11  profilanswer
 

voici la code, simplifier au max pour limiter les possibilités d'ereur :
 
<?php
 
error_reporting(E_ALL ^ E_NOTICE);
session_start();
set_time_limit(10);
 
require_once "writeexcel/class.writeexcel_workbook.inc.php";
require_once "writeexcel/class.writeexcel_worksheet.inc.php";
 
$fname = tempnam("/tmp", "demo.xls" );
$workbook =& new writeexcel_workbook($fname);
$worksheet =& $workbook->addworksheet('Demo');
 
 
 
 
$workbook->close();
 
header("Content-Type: application/vnd.ms-excel; name=\"example-demo.xls\"" );
header("Content-Disposition: inline; filename=\"example-demo.xls\"" );
$fh=fopen($fname, "r" );
fpassthru($fh);
unlink($fname);
 
?>
 
 
voila...
Comme je vous l'expliquait, lorsque j'enlève le "session_start" au début, l'export se passe bien, mais dès qu'il y est et bien voici le message :
"Microsoft office escel ne peut acceder au fichier "https://88.168......../excel.php".  
 
Ce que est étrange c'est que tout fonctionne en localhost par contre...

n°1718793
masterpsx
Aigloun foutougrafe
Posté le 16-04-2008 à 20:21:00  profilanswer
 

A quoi il te sert le session_start() dans cette page ?
A mon avis il ne fait pas bon menage avec les header(), si il est vraiment indispensable, met session_write_close(); juste avant.

mood
Publicité
Posté le 16-04-2008 à 20:21:00  profilanswer
 

n°1718803
art_dupond
je suis neuneu... oui oui !!
Posté le 16-04-2008 à 20:36:47  profilanswer
 

yop,
 
tu pourrais préciser les problèmes qu'il pourrait y avoir entre session_start() et les header() ? :)


---------------
oui oui
n°1718821
masterpsx
Aigloun foutougrafe
Posté le 16-04-2008 à 21:17:34  profilanswer
 

Les 2 doivent être envoyé avant tout autre contenue, essayes un setcookie avec un session_start, tu auras probablement un problème du même genre.

n°1718865
poyolele
Posté le 16-04-2008 à 23:42:36  profilanswer
 

pour info, le session_start() me sert à récupérer des variables assez complexes venant d'autres pages...

n°1718870
masterpsx
Aigloun foutougrafe
Posté le 17-04-2008 à 00:01:09  profilanswer
 

poyolele a écrit :

pour info, le session_start() me sert à récupérer des variables assez complexes venant d'autres pages...


Dans ton code y a aucune variable de session mais c'est peut être une version allégé, essaye session_write_close() alors, sinon il faudra que tu crée une page php spécifique sans rien d'autres et juste pour générer tes fichiers.

n°1718877
skeye
Posté le 17-04-2008 à 00:29:02  profilanswer
 

masterpsx a écrit :

A quoi il te sert le session_start() dans cette page ?
A mon avis il ne fait pas bon menage avec les header(), si il est vraiment indispensable, met session_write_close(); juste avant.


n'importe-quoi.
il faut juste que session_start() soit appelé avant tout envoi de header, et là c'est le cas dans son exemple.


---------------
Can't buy what I want because it's free -
n°1718884
poyolele
Posté le 17-04-2008 à 01:08:04  profilanswer
 

En effet je n'ai pas mis de variables ici dans mon code "exemple" mais dans la vraie page je les utilise bien...

n°1718886
poyolele
Posté le 17-04-2008 à 01:08:47  profilanswer
 

sinon j'ai essayé le session_write_close(); à la place du session_start(); mais du coup j'ai perdu mes variables...

n°1718903
skeye
Posté le 17-04-2008 à 07:17:07  profilanswer
 

poyolele a écrit :

En effet je n'ai pas mis de variables ici dans mon code "exemple" mais dans la vraie page je les utilise bien...


 
Donne le code qui manque...
 

poyolele a écrit :

sinon j'ai essayé le session_write_close(); à la place du session_start(); mais du coup j'ai perdu mes variables...


 
ça n'a pas de sens de faire ça.


---------------
Can't buy what I want because it's free -
n°1718964
poyolele
Posté le 17-04-2008 à 09:44:15  profilanswer
 

concernant le code qui manque il n'est pas nécessaire pour info c'est juste une variable se session : un tableau multidimensionnel, le genre de truc que je peux pas faire passer par l'url quoi...

n°1719027
masterpsx
Aigloun foutougrafe
Posté le 17-04-2008 à 11:20:56  profilanswer
 

skeye a écrit :


n'importe-quoi.
il faut juste que session_start() soit appelé avant tout envoi de header, et là c'est le cas dans son exemple.


header() lui aussi ne doit avoir aucun envoie au navigateur avant, hors si les session utilises les cookies c'est forcement le cas, un exemple ou la persone a un problème similaire sur php.net : http://fr2.php.net/manual/fr/funct [...] .php#80882
 
Pour poyolele, il ne faut pas remplacer session_start() par session_write_close() mais le rajouter après l'utilisation de tes variables de session et juste avant que tu n'utilises header() apparement.

Code :
  1. session_start();
  2. Ton code qui concerne les sessions
  3. session_write_close();
  4. writeexcel

n°1719083
poyolele
Posté le 17-04-2008 à 11:57:21  profilanswer
 

Le problème est que le code qui concerne les variables de session doit se trouver après les headers, puis que j'affiche leur contenu avec les commande offerte par la bibliothèe writeexcel.  
Encore plus bizarre, tout fonctionne à merveille en localhost...

n°1719111
masterpsx
Aigloun foutougrafe
Posté le 17-04-2008 à 12:04:20  profilanswer
 

Alors fait 2 pages séparées, une toute simple sans session qui génére le fichier et l'autre qui contient le code dont tu as besoin.

n°1719276
poyolele
Posté le 17-04-2008 à 16:09:15  profilanswer
 

je ne peux pas...je t'explique : la page en question est un fichier php. Une fois interprété il génère un fichier excel qui s'ouvre logiquement dans le navigateur, mais le contenu de ce fichier excel est fournit par les variable de sessions...il faut que je puisse avoir accès à ces variables pour remplir mon fichier...

n°1719285
masterpsx
Aigloun foutougrafe
Posté le 17-04-2008 à 16:25:56  profilanswer
 

Et alors, je vois pas le problème, la génération du fichier se fait toujours en dernier a moins que ta class soit une exeption, tu crée le contenue de ta page exel à l'aide de tes variables puis tu l'envois a un fichier php indépendant qui ne fait que générer le fichier exel dans une nouvelle page. Au pire tu utilise la 1er page juste pour recupérer tes variables de sessions et les renvoyer par une autre méthode a l'autre page qui fera tous le reste.
 
C'est soit ca, soit tu devras surement passer tes variables autrement que par $_SESSION, a toi de voir :)


Message édité par masterpsx le 17-04-2008 à 16:45:13
mood
Publicité
Posté le   profilanswer
 


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

  problème assez pointu entre writeexcel et session_start()

 

Sujets relatifs
probleme ecoute radioProbleme avec format Date
[SWING] Probleme de rafraichissement avec paintComponent()[variables de session] sans www. = différent !
problème formule excel : valeur d'une cellule précise dans zone nommee[PHP] Probleme mise en place de session
probleme flash/htmlProbleme Requete Access
Plus de sujets relatifs à : problème assez pointu entre writeexcel et session_start()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR