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 03/05/2006, 10h20   #1
Membre Expert
 
Avatar de nebule
 
Inscription : octobre 2004
Messages : 1 509
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : octobre 2004
Messages : 1 509
Points : 1 337
Points : 1 337
Par défaut [Sécurité] Session_start() ne marche pas

Bonjour,

Dans ma page je dois récupérer des infos en session -> donc session_start() au debut et plus loin, j'ouvre un fichire Excel créé.

Séparement tout fonctionne impec mais dés que je mets les deux ensemble Excel ne trouve plus le fichier à ouvrir

Si je mets le session_start() en commentaire, ca marche nickel.
J'ai essayé de mettre les header avant / aprés le session_start() sans résultats

Le code :

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
<?php
session_start();
$fichierResultat=$_SESSION["fichierResultat"];
$fichierLimite=$_SESSION["fichierLimite"];
$listeSN=$_SESSION["listeSN"];
      
$lieu="C:/pageExcel.xls";
define("FILENAME",$lieu);
$excel = new COM("excel.application") or die("Unable to instantiate Excel !");
$excel->sheetsinnewworkbook=1;//1 seule feuille de calcul dans le document
$excel->Workbooks->Add();//Ajout d'un classeur
$book=$excel->Workbooks(1);//$book contient le classeur actif
$sheet=$book->Worksheets(1);//$sheet contient la feuille active
$sheet->Name="Résultats des tests";//Attribution d'un nom à la feuille
      
if (file_exists(FILENAME)) {unlink(FILENAME);} //suppression de l'ancien fichier
$book->saveas(FILENAME);//Sauvegarde du fichier
unset($sheet);//Libération de $sheet
unset($book);//Libération de $book
$excel->Workbooks->Close();//Fermeture du classeur
$excel->Quit();//On quitte Excel
unset($excel);//Libération de l'instance $excel
      
// Entête pour Ouvrir avec MSExcel
//header("content-type: application/xls");
header("Content-Type: application/x-msexcel");
header("Content-Disposition: attachment; filename=pageExcel.xls");
      
flush(); // Envoie le buffer
readfile("C:/pageExcel.xls"); // Envoie le fichier
if (file_exists(FILENAME)) {unlink(FILENAME);} //suppression de l'ancien fichier
...
?>
Colorez votre code PHP sur les forums grâce à Developpez.com
Et donc, j'ai mon petit lien qui m'ouvre cette page, IE (navigateur du client, pas de critique la dessus ) me propose d'ouvrir le fichier -> ok c'est sympa et quand il m'ouvre Excel, il note que le doc est introuvable dans c:\Documents and Settings\monprofil\Local Settings\Temporary Internet Files\Content.IE5\...\pageExcel[1].xls.

Mais pourquoi il va le chercher à cet endroit là alors que je précise de le mettre dans c:/pageExcel.xsl ?
J'ai zappé un truc ou quoi ?

Merci,
Marie
__________________
(\ _ /)
(='.'=)
(")-(")
nebule est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 10h36   #2
Membre expérimenté
 
Inscription : avril 2006
Messages : 462
Détails du profil
Informations personnelles :
Âge : 33
Localisation : Canada

Informations forums :
Inscription : avril 2006
Messages : 462
Points : 556
Points : 556
Envoyer un message via MSN à rbaatouc Envoyer un message via Skype™ à rbaatouc
au lieu de loyvrir , essai de faire un enregistrer sous pour voir si le fichier enregistré est ok (normalement oui)
rbaatouc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 10h38   #3
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Le script que tu exécute tourne côté serveur, lorsque tu spécifie le chemin
$lieu="C:/pageExcel.xls";
Il s'agit du chemin locals sur ton serveur ...

Je ne pense pas (pour des raisons de sécurité) que tu puisses enregistrer sur la machine du client un fichier à un endroit précis.

Le navigateur gère lui même l'endroit où sont déposés les fichiers temporaires.

Cette ligne est-elle indispensable ??

header("Content-Disposition: attachment; filename=pageExcel.xls");

@+
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 10h43   #4
Membre Expert
 
Avatar de nebule
 
Inscription : octobre 2004
Messages : 1 509
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : octobre 2004
Messages : 1 509
Points : 1 337
Points : 1 337
Citation:
Envoyé par eric190
Le script que tu exécute tourne côté serveur, lorsque tu spécifie le chemin
$lieu="C:/pageExcel.xls";
Il s'agit du chemin locals sur ton serveur ...

Je ne pense pas (pour des raisons de sécurité) que tu puisses enregistrer sur la machine du client un fichier à un endroit précis.

Le navigateur gère lui même l'endroit où sont déposés les fichiers temporaires.

Cette ligne est-elle indispensable ??

header("Content-Disposition: attachment; filename=pageExcel.xls");

@+
Alors, si je ne mets pas la ligne header("Content-Disposition: attachment; filename=pageExcel.xls"); il m'ouvre le fichier Excel direct dans IE ce qui n'est pas du tout pratique -> pas possible d'enregistrer le fichier là où le veulent les utilisateurs et de "bidouiller" dans Excel

Aprés, quand je mets $lieu="./pageExcel.xls"; la fenetre IE réfléchie pendant je sais pas combien de temps et n'arrive jamais à rien m'ouvrir

Pfff je suis un peu paumée avec ce fichier Excel... j'avais déjà posté un message pour ne pas avoir à enregistrer le fichier mais juste l'ouvrir http://www.developpez.net/forums/sho...d.php?t=139626 mais personne n'a répondu alors j'ai contourné le problème en ouvrant le fichier, le mettant sur le C:/ et le supprimant juste aprés.

Une autre idée

Merci
__________________
(\ _ /)
(='.'=)
(")-(")
nebule est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 10h56   #5
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Ceci marche chez moi ...
Citation:
<?php
$sFileName
= "c:\\Classeur1.xls";

header("Content-Disposition: attachment; filename=pageExcel.xls");

print
readFileContent($sFileName);

function
readFileContent($sFileToRead)
{
$handle = fopen($sFileToRead,'r');

$content = fread($handle, filesize($sFileToRead));

fclose($handle);

return
$content;
}
?>
Colorez votre code PHP sur les forums grâce à Developpez.com

Il me renvoitun fichier pageExcel.xls ... c'est ce que tu voulais faire non ?
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 11h00   #6
Membre Expert
 
Avatar de nebule
 
Inscription : octobre 2004
Messages : 1 509
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : octobre 2004
Messages : 1 509
Points : 1 337
Points : 1 337
Citation:
Envoyé par eric190
Ceci marche chez moi ...
Il me renvoitun fichier pageExcel.xls ... c'est ce que tu voulais faire non ?
hum chez moi aussi mais si tu rajoutes session_start(); au début ... ca marche plus
__________________
(\ _ /)
(='.'=)
(")-(")
nebule est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 11h10   #7
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Le message d'erreur ??
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 11h11   #8
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Le fait d'ajouter session_start(); ne me pose pas de pb ...
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 11h11   #9
Membre Expert
 
Avatar de nebule
 
Inscription : octobre 2004
Messages : 1 509
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : octobre 2004
Messages : 1 509
Points : 1 337
Points : 1 337
Citation:
Envoyé par eric190
Le message d'erreur ??
toujours la meme chose, il m'ouvre Excel et m'indique qu'il ne trouve pas le fichier dans c:/document and settings ...
__________________
(\ _ /)
(='.'=)
(")-(")
nebule est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 11h16   #10
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Peux tu jouer mon script pour voir ...
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 11h27   #11
Membre Expert
 
Avatar de nebule
 
Inscription : octobre 2004
Messages : 1 509
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : octobre 2004
Messages : 1 509
Points : 1 337
Points : 1 337
Citation:
Envoyé par eric190
Peux tu jouer mon script pour voir ...
Pas de soucis,

J'ai mis ton code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
session_start(); 
$sFileName = "c:\\Classeur1.xls";

header("Content-Disposition: attachment; filename=pageExcel.xls");


print readFileContent($sFileName);

function readFileContent($sFileToRead)
{
$handle = fopen($sFileToRead,'r');
$content = fread($handle, filesize($sFileToRead));
fclose($handle);
return $content;
}
?>
(juste ajout du session_start() en haut) et message d'erreur similaire au mieux :
'c:\Documents and Settings\monprofil\Local Settings\Temporary Internet Files\Content.IE5\...\pageExcel[1].xls' introuvable. Vérifiez l'orthographe du nom du classeur et la validité de l'emplacement.

Si vous essayez d'ouvrir le fichier à partir de la liste des fichiers les plus récents, assurez-vous que le fichier n'a pas été renommé, déplacé ou supprimé.
__________________
(\ _ /)
(='.'=)
(")-(")
nebule est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 12h42   #12
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
L'origine du problème semble davantage localisée sur le navigateur que sur le script en lui-même ...

J'ai joué le même script avec FIREFOX et no problémo, peux tu en faire de même (c'est peut être un pb interne d'IE ??)
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 13h30   #13
Membre Expert
 
Avatar de nebule
 
Inscription : octobre 2004
Messages : 1 509
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : octobre 2004
Messages : 1 509
Points : 1 337
Points : 1 337
Citation:
Envoyé par eric190
L'origine du problème semble davantage localisée sur le navigateur que sur le script en lui-même ...

J'ai joué le même script avec FIREFOX et no problémo, peux tu en faire de même (c'est peut être un pb interne d'IE ??)
A tout à fait ... avec Firefox c'est nickel mais bon, le client veut IE alors le client aura IE
Je suis en train de bidouiller pour passer les données via un formulaire caché plutot que pas session ... pas tip top mais bon, pour 1 page, ca devrait le faire

En tout cas, il en ressort que header + session = marche pas sous IE
__________________
(\ _ /)
(='.'=)
(")-(")
nebule est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 13h57   #14
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Désolé mais chez moi le même script passe sans pb sous Internet Explorer ... je parlais de TON IE dont l'installation est peut être douteuse (pardon ), as tu moyen d'essayer ça sur IE mais sur un autre poste ?

Autre piste, tu peux aussi regarder du côté des paramètres de sécurité ... on ne sait jamais

Je n'ai rien contre IE .... j'ai aussi ce type de contrainte sur le navigateur

@+
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 14h02   #15
Membre Expert
 
Avatar de nebule
 
Inscription : octobre 2004
Messages : 1 509
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : octobre 2004
Messages : 1 509
Points : 1 337
Points : 1 337
Citation:
Envoyé par eric190
Désolé mais chez moi le même script passe sans pb sous Internet Explorer ... je parlais de TON IE dont l'installation est peut être douteuse (pardon ), as tu moyen d'essayer ça sur IE mais sur un autre poste ?

Autre piste, tu peux aussi regarder du côté des paramètres de sécurité ... on ne sait jamais

Je n'ai rien contre IE .... j'ai aussi ce type de contrainte sur le navigateur

@+
A ok bah oui sous mon IE ca marche pas
J'ai testé sur un autre poste et même soucis ... Peut-être une config php...

Edit : j'ai la version 6.0.2900 mise à jour apparement + Windows XP pro SP2. Le tout installé par notre administrateur ... donc même instal pour tous les PCs normalement
__________________
(\ _ /)
(='.'=)
(")-(")
nebule est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 14h06   #16
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Pour ma part j'ai IE V6.0.2800... désolé mais je n'ai plus d'idée là !!!

@+
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 14h50   #17
Membre Expert
 
Avatar de nebule
 
Inscription : octobre 2004
Messages : 1 509
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : octobre 2004
Messages : 1 509
Points : 1 337
Points : 1 337
Citation:
Envoyé par eric190
Pour ma part j'ai IE V6.0.2800... désolé mais je n'ai plus d'idée là !!!

@+
Merci quand même, ca sera pas faute d'avoir cherché

bon à la place, j'ai fait un formulaire caché dans ma page précédente, et envoyé ce formulaire en POST quand l'utilisateur clique sur le lien... Comme ça plus besoin de session. Enfin c'est pas top
__________________
(\ _ /)
(='.'=)
(")-(")
nebule est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 15h31   #18
Membre Expert
 
Avatar de nebule
 
Inscription : octobre 2004
Messages : 1 509
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : octobre 2004
Messages : 1 509
Points : 1 337
Points : 1 337
Bon en fait, passer dans un formulaire ca marche pas

J'ai un formulaire tout bête pourtant :

Code :
1
2
3
4
5
6
7
8
<?php
echo "
<form action=\"/Seico/Browser/pageExcel.php\" name=\"formulaireDonnees\" method=\"POST\" target=\"_blank\">
<input type=\"hidden\" name=\"fichierLimite[]\" value=\"".$fichierLimite."\">
<input type=\"hidden\" name=\"listeSN[]\" value=\"".$listeSN."\">
<input type=\"hidden\" name=\"fichierResultat[]\" value=\"".$fichierResultat."\">
</form>";
?>
et dans ces variables j'ai des tableaux avec pleins de données(1 fichier texte de 5000 caractéres environs par entrée du tableau).

Et j'arrive vraiment pas à les récupérer correctement de l'autre côté!

Une idée ?

ps: j'ai testé sur plusieurs autres postes et ca marche toujours pas sur IE
__________________
(\ _ /)
(='.'=)
(")-(")
nebule est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 15h55   #19
Membre Expert
 
Avatar de nebule
 
Inscription : octobre 2004
Messages : 1 509
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : octobre 2004
Messages : 1 509
Points : 1 337
Points : 1 337
Heu donc, les formulaires avec POST, serialise et autre ca marchait pas au vu de mon énorme tableau à passer.

J'ai donc rebidoullier avec les sessions et en mettant ça :

Ca marche !!!

Code :
1
2
3
4
5
6
7
8
<?php session_start(); 
header("Content-Type: application/x-msexcel");
header("Content-Disposition: attachment; filename=pageExcel.xls"); 
$fichierResultat=$_SESSION["fichierResultat"];
$fichierLimite=$_SESSION["fichierLimite"];
$listeSN=$_SESSION["listeSN"];
session_write_close();
....
Donc aucun espace superflux ni rien! Me demandez pas comment mais ca marche ! Foutu IE
__________________
(\ _ /)
(='.'=)
(")-(")
nebule est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2006, 16h47   #20
Membre Expert
 
Avatar de nebule
 
Inscription : octobre 2004
Messages : 1 509
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : octobre 2004
Messages : 1 509
Points : 1 337
Points : 1 337
Bon et bien en fait pas résolu

Ca remarche de nouveau pas
__________________
(\ _ /)
(='.'=)
(")-(")
nebule est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h12.


 
 
 
 
Partenaires

Hébergement Web