IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Sécurité] Session_start() ne marche pas


Sujet :

Langage PHP

  1. #1
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    (\ _ /)
    (='.'=)
    (")-(")

  2. #2
    Invité
    Invité(e)
    Par défaut
    au lieu de loyvrir , essai de faire un enregistrer sous pour voir si le fichier enregistré est ok (normalement oui)

  3. #3
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    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");

    @+

  4. #4
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    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
    (\ _ /)
    (='.'=)
    (")-(")

  5. #5
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    Ceci marche chez moi ...
    <?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 ?

  6. #6
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    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
    (\ _ /)
    (='.'=)
    (")-(")

  7. #7
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    Le message d'erreur ??

  8. #8
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    Le fait d'ajouter session_start(); ne me pose pas de pb ...

  9. #9
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    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 ...
    (\ _ /)
    (='.'=)
    (")-(")

  10. #10
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    Peux tu jouer mon script pour voir ...

  11. #11
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    Citation Envoyé par eric190
    Peux tu jouer mon script pour voir ...
    Pas de soucis,

    J'ai mis ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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é.
    (\ _ /)
    (='.'=)
    (")-(")

  12. #12
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    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 ??)

  13. #13
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    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
    (\ _ /)
    (='.'=)
    (")-(")

  14. #14
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    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

    @+

  15. #15
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    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
    (\ _ /)
    (='.'=)
    (")-(")

  16. #16
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

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

    @+

  17. #17
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    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
    (\ _ /)
    (='.'=)
    (")-(")

  18. #18
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    Bon en fait, passer dans un formulaire ca marche pas

    J'ai un formulaire tout bête pourtant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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&#91;]\" value=\"".$fichierLimite."\">
    <input type=\"hidden\" name=\"listeSN&#91;]\" value=\"".$listeSN."\">
    <input type=\"hidden\" name=\"fichierResultat&#91;]\" 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
    (\ _ /)
    (='.'=)
    (")-(")

  19. #19
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    (\ _ /)
    (='.'=)
    (")-(")

  20. #20
    Membre expérimenté Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Points : 1 464
    Points
    1 464
    Par défaut
    Bon et bien en fait pas résolu

    Ca remarche de nouveau pas
    (\ _ /)
    (='.'=)
    (")-(")

Discussions similaires

  1. Réponses: 10
    Dernier message: 07/07/2008, 17h50
  2. session_start marche pas
    Par lamachine dans le forum Langage
    Réponses: 4
    Dernier message: 26/09/2006, 09h28
  3. [Sécurité] .htaccess qui marche pas sur le serveur
    Par Alain15 dans le forum Langage
    Réponses: 6
    Dernier message: 26/06/2006, 09h10
  4. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 09h28
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 13h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo