txt qui va, php qui ne va pas

Répondre
croco
le 08/12/2006 à 00:56
croco
Tout d'abord bonjour, puisque je viens de m'inscrire.

Pour essayer de faire bref :
j'ai des problèmes avec des fichiers "cibles" xxx.php, alors qu'en le nommant xxx.txt le problème n'apparait pas.
Exemple :
Dans un fichier index.php, accompagné de fichiers css, plusieurs éléments sont appelés, tels que :

<?php
$url=$_SERVER["HTTP_HOST"];
$chemin_racine="http://".$url."";
?>

(ça c'est pour que vous sachiez ce que représente $chemin_racine)

<?php include $chemin_racine."/site/sommaire.php"; php ?>


Le problème apparait si dans le code passé par "include" j'ai besoin de récupérer une variable $_SESSION['blabla"], car la session (ouverte, bien sûr) se perd en route : vérification faite, la variable est vide.

Autre exemple, dans un élément de page chargé dans les mêmes conditions servant à fermer une session, la fonction session_destroy(); renvoie un message indiquant que je cherche à fermer un session qui n'existe pas.

Or, si je renomme ces fichiers en .txt (sommaire.php pour le premier exemple), tout rentre dans l'ordre, sans rien changer au contenu.
COmme il s'agit d'include - c'est-à-dire sauf erreur rien d'autre qu'une sorte de copier/coller automatique, je ne comprends pas et ne parviens pas à trouver la solution.

Si je " m'amuse " à faire depuis ma page d'index un include sur une partie nommée en .txt et une autre en .php, les deux affichant par exemple le pseudo de la session ouverte, la partie txt affiche le pseudo, la partie php reste muette.

Et, ça me gène de laisser des fichiers .txt dont le contenu est édité si on met leur chemin exact en url.

J'ai l'impression de tourner autour d'un truc évident, mais je ne trouve pas.

Merci d'avance si quelqu'un peut m'aider.
Astyax69
le 08/12/2006 à 06:59
Astyax69
Salut,
est-ce que sur ta page sommaire.php tu as mis session_start() au début ? Si c'est pas le cas, rajoute-le et vois si ça marche
LA GLOBULE
le 08/12/2006 à 07:22
LA GLOBULE
Pour faire des include de fichiers PHP, n'utilise pas le chemin à partir du chemin "web" (http://), mais utilise le chemin à partir du système de fichier du serveur.

Exemple, si tu as à la racine de ton site :
index.php
dossier_blublu/toto.php

Si tu es dans index.php, tu peux faire (lien relatif) :
include ('dossier_blublu/toto.php');

Ou bien (lien absolu) :
include('/home/toto/blu/a/dossier_blublu/toto.php');

Et pour connaitre le chemin /home/toto/blu/a/ (ben oui, j'ai mis une connerie la, mais c'etait pour l'exemple), tu peux faire un echo $_SERVER['DOCUMENT_ROOT'] dans ton index.php (pour récupérer la valeur du chemin sur le server de l'index de ton site).
Et une fois que tu connais ce chemin absolu, ben colle le dans une variable, et fais tous tes include en absolu :

include ($chemin_absolu.'/dossier_blublu/toto.php');
LupusMic
le 08/12/2006 à 10:12
LupusMic
Je rajouterais en complément à La Globule, qu'il est à proscrire l'inclusion de fichiers Web directement sans rien vérifier (sinon, attention au phishning ;) ), et qu'il vaut mieux utiliser des noms de chemin absolus, même si ce n'est pas forcément très souple comme solution.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LA GLOBULE
le 08/12/2006 à 10:28
LA GLOBULE
Je rajouterais en complément à La Globule, qu'il est à proscrire l'inclusion de fichiers Web directement sans rien vérifier (sinon, attention au phishning ;) )


Completement :)
croco
le 08/12/2006 à 10:46
croco
Merci pour les conseils, je vais vérifier.

Mais, avez-vous l'explication sur le fait que ce qui bloque en .php passe en .txt, dès lors que l'on utilise une adresse en url plutôt qu'en local ? (par curiosité)

Pour session_start, oui, j'ai essayé avec et sans, ça ne change rien (au demeurant, s'agissant d'un include, l'important n'est-il pas que le session-start soit dans le fichier qui appelle l'include ?)
croco
le 08/12/2006 à 11:18
croco
Vérification faite, ça ne résoud pas mon problème.

Je vais tout de même passer de $_SERVER["HTTP_HOST"] à $_SERVER['DOCUMENT_ROOT'] parce que c'est plus propre, mais si je remplace les .txt par .php, j'ai toujours ma $_SESSION['machin'] qui s'évapore !
LA GLOBULE
le 08/12/2006 à 12:24
LA GLOBULE
Si elle s'evapore, c'est que tu oublies quelque part un session_start ou bien que tu as un session_destroy ou un unset($_SESSION) ou un truc qui la tue quoi.
croco
le 08/12/2006 à 13:11
croco
ben non, si c'était le cas que le fichier s'appelle toto.txt ou toto.php ça ne changerait rien.
croco
le 08/12/2006 à 13:30
croco
Peut-être faut-il poser mon problème autrement :

y a-t-il dans PHP, une fiddérence de traitement selon qu'un fichier a l'extension php ou l'extension txt, pour un contenu strictement identique ?
Répondre
LoadingChargement en cours