Lien depuis la suite microsoft office vers php et session

Le
Teufel
Bonjour à tous,

Alors voila, j'ai trouvé un truc assez étrange. J'ai un script (on va
le nommer script.php) qui demarre une session, enregistre des données
dans cette session puis fait un header("Location: script2.php?".$sess);
$sess est préalablement initialisé comme cela : $sess = SID;
Dans le script script2.php j'affiche simplement les données de ma
session que j'ai enregisté dans le script1.php
Bon là y a rien de compliqué.
J'appelle directement depuis mon navigateur la page script.php, je me
retrouve tout naturrellement sur la page script2.php avec mes données
de session.

Je fais une page HTML toute êete avec un lien qui pointe vers
script.php, si je clique sur ce lien tout ce passe bien.
Là ou ca ce complique, je crée un document WORD qui contient tout
simplement un texte avec un lien qui pointe sur script.php. Alors
attention, si clique depuis mon fichier word sur ce lien et bien la
session est perdu (WORD m'ouvre bien dans mon navigateur la page
http://localhost/script.php). C'est à dire que lorsque je me retrouve
sur la page script2.php, je n'ai pas mes données de session ni même
dans la barre de navigation le PHPSESSID34. Pourtant si j'appelle ma
page en tapant l'url directement dans mon navigateur ca marche bien. Et
cela le fait qu'avec word, Excel et Powerpoint, depuis d'autres
logiciel ou on peut faire des liens ça marche bien.

Mais le pire c'est que si je fait un echo "session : ".$sess; et que je
commente la ligne header("Location: script2.php?".$sess); ben la
variable $sess contient bien l'identifiant de ma session si j'apelle ma
page depuis Word.

Alors ma question est comment ça ce fait que jsi e clique sur un lien
depuis la suite Microsoft Office la constante SID est indéfini quand je
fait une redirection par entête HTTP et que si je l'affiche ca
fonctionne.

Je precise que j'ai testé avec IE et Firefox comme navigateur par
défaut et c'est pareil.
Au lien de passer par la constante SID j'ai fait un
$sess=session_name()."=".session_id(); et là ca marche à tout les
coups.
Les versions de PHP utilisés sont la 4.3.10 et 4.3.4.

J'ai essayer des trucs torudu genre faire un echo "session : ".$sess;
toute juste apres l'appel de la fonction header() mais marche pas non
plus.

Bon alors à votre avis, c'est les programmeurs de PHP qui n'aiment
Microsoft Office ? :-) cependant ca marche quand même avec outlook.

En esperant avoir été assez claires dans mes explications.

A+
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
Teufel
Le #726378
Teufel avait prétendu :
[pleins de choses]

Je deviens fou !!!

Il y a vraiment une relation de cause à effet entre Microsoft Office et
la fontion header() de PHP.
Prenez un exemple de script trés simple :
<?php
session_start();
$sess = SID;
$fp = fopen("session.txt", "w");
fwrite($fp, $sess, strlen($sess));
fclose($fp);
header("Loction: vers_une_autre_page.html"); // ou .php ou n'importe
quoi
?>

Quand vous executer ce script en tapant directement l'url dans le nav
le fichier contient bien l'identifiant de session, par contre depuis un
simple lien dans un document Word, le fichier comme par magie ne
contient rien. Si vous supprimer la ligne ou il y a le header() dans
tous les cas ca marche.

Que la config session.use_trans_id est à On ou Off et que le navigateur
accepte ou pas les cookies, c'est pareil. La constante SID doit
toujours être défini (Il n'y a que dans le cas ou le navigateur envoie
le cookie adequat que le SID n'est pas défini et comme c'est le premier
appel de script, voir :
Et que le serveur soit sous Linux ou windows (toujours intallé en tant
que module Apache).
Pour ce test là je suis sous windows avec une version 4.3.8 de PHP et
une version 5.0.2 et il y a toujours le même problème.

Attention à bien vider le cache du navigateur et effacer le cookie
PHPSESSID entre les test depuis Office et le navigateur seul si vous
avez testé l'exemple de mon précédent post.

C'est quand même vraiment trés étrange, a mon avis Word (ou powerpoint
ou excel) doit faire un truc trés étrange à un moment donné pour que
cela ne marche pas.
Parceque cela marche tres bien quand j'ouvre le ficheir word avec
OpenOffice !!

Bref j'aimerais quand même bien comprendre le pourquoi du comment, je
vais analyser un peu les trames IP qui circule entre Word (??, il doit
bien faire quelque chose, autre que de lancer le navigateur par defaut
de windows en chargeant l'url), le navigateur et le serveur apache.

Allez A+

--
Teufel
Poster une réponse
Anonyme