txt qui va, php qui ne va pas

Répondre
LupusMic
le 08/12/2006 à 16:32
LupusMic
Il y a une différence de traitement, le PHP est interprété par PHP... pas compris mon allusion ?

Bon, on va expliquer.
appelant.php
<?php
include("http://toto.com/appele.php") ;

session_get('tata') ;
?>


inclus.php
<?php
session_start()
?>


session_get('tata') ne trouvera jamais la variable de session, car la session n'a pas été chargée. Car le include inclue ce qui est issu de inclus.php déjà interprété.

Enfin bref, ta manière de faire n'est pas propre, mais scandaleuse et franchement dégueulasse ;)
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Astyax69
le 08/12/2006 à 17:37
Astyax69
Enfin bref, ta manière de faire n'est pas propre, mais scandaleuse et franchement dégueulasse


Dis donc Lupus, quand tu charges la mule, tu l'as charge pas à moitié... Excellent esprit de synthèse également... Bien drôle en tous cas :)
croco
le 08/12/2006 à 20:18
croco
Soit.
Et pour que la pédagogie soit constructive, quelle est la manière propre ?

Cela signifie-t-il qu'il n'est pas possible d'avoir dans un fichier .php inclus du code comportant des variables $_SESSION ?
Réponse interdite : "t'as qu'à mettre un session_start dans les fichiers inclus". Ca, comme je l'ai écrit, j'ai déjà essayé sans résultat.

A lire ce qu'a écrit Lupus, j'en déduis que nombre d'informations sur le PHP sont incomplètes (voire, pas propre, mais scandaleusement etc), puisque contrairement à ce que j'ai lu en divers endroits, include n'est pas qu'un copier/coller de code mis ailleurs.
LA GLOBULE
le 08/12/2006 à 20:30
LA GLOBULE
Si justement, include, c'est un copier coller de code.

Si tu as un :

toto.php
<?php
session_start();
$_SESSION['blu'] = 3;
?>


et :
index.php
<?php
include ('toto.php');
echo $_SESSION['blu'];
?>


Tu verras ton 3 qui s'affiche.
i M@N
le 08/12/2006 à 21:04
i M@N
Hello !

Le problème aussi vient du fait qu'on a pas le code.
Si Croco faisait un wall avec le code de tous les fichiers impliqués, on verrait bien mieux où se situe le problème ... là on se base sur une description d'un code, quelques extraits et beaucoup de suppositions.

@+...
One Love, One Heart, One Unity.
croco
le 08/12/2006 à 21:24
croco
Je sais, mais je voulais éviter de noyer la page sous des codes. Je vais voir si je peux donner des exemples pas trop gros.

Par rapport à ce qui était dit, est-ce que la différence entre un fichier txt inclus et un php inclus, ayant rigoureusement le même contenu, c'est que :
le xxx.txt inclus est copié/collé avant d'être interprété, alors le xxx.php inclus est interprété avant que le résultat ne soit copié/collé ?

En effet, si je fais le test avec une variable locale définie dans le fichier appelant mais pas dans le fichier appelé, en .txt c'est ok, et en .php ça ne retrouve pas la valeur de la variable.

Si c'est exact, alors une $_SESSION devrait être reconnue dès lors que session_start est présent, c'est là que ça coince.
LupusMic
le 08/12/2006 à 21:37
LupusMic
(Astyax69)
Dis donc Lupus, quand tu charges la mule, tu l'as charge pas à moitié...

Il faut rajouter des balises à ce forum : cynique, acide, humour 42ème° etc... ;)

(croco)
Et pour que la pédagogie soit constructive, quelle est la manière propre ?


Je l'ai indiqué : mettre un chemin correspondant au fichier dans le système de fichier. Est-ce que tu as compris à quoi je faisais allusion ?

Je n'ai pas expliqué parce que j'étais au boulot, et qu'il faut quand même que je bosse pour ma boîte ;)
Donc. Voici ce que tu faisais :
- chargement de appelant.php
- compilation, interprétation
- inclusion d'un fichier
- recherche, ouverture du fichier à inclure
* on change de serveur qui va interpréter appelle.php *
- lecture du contenu renvoyé par le serveur
- inclusion
- suite de l'exécution du code.


En fait, appelant.php a inclus ce que tu vois lorsque tu consulte dans ton navigateur le fichier : tu n'inclus donc rien dans notre cas.

(croco)
j'en déduis que nombre d'informations sur le PHP sont incomplètes (voire, pas propre, mais scandaleusement etc),


Et même fausses, erronées, abjectes, ignoble, mangeurs de chaire humaine, la légende du gnome man... euh, je m'emballe. J'ai travaillé chez un hosteur, support des serveurs dédiés. Tu ne peux pas imaginer le nombres de gars qui, croyant récupérter le script qu'il leur fallait, offrait en fait un relay de courriel à tout les pirates de la planète.

Donc oui, fais attention à ce que tu lis.

En ce qui concerne l'extension, elle n'a pas d'inpact dans le cas où on inclus le fichier localement. Mais lorsque tu décides de de le charger à distance à travers un serveur Web, il va d'abord être interprété si il est reconnu comme un script PHP.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
croco
le 08/12/2006 à 22:10
croco
Ok, donc ma réticence à laisser des fichiers en .txt était sur la bonne voie, puisque c'est précisément parce que les .txt sont édités in extenso via l'url que ça se passe bien dans les include. Et c'est parce que ça ne se passe pas bien avec des .php que c'est justement intéressant (l'indiscret qui cible l'url d'un fichier php de traitement ne verra rien).
Si j'ai bien compris...

Le truc, c'est de ne pas oublier que même si l'appelant et l'appelé sont sur le même serveur, une fois qu'on passe par http://... on sort pour rerentrer.
Si j'ai bien compris...

Je vais essayer de revenir à des chemins relatifs locaux autant que possible et sur les cas simples, si je m'enlise dans les pages plus complexes je mettrai le code impliqué.

SI j'ai écrit une (des ?) co******s, merci de me le dire (avec ou sans ironie).

En tous cas merci pour cet éclairage sur la différence de php entre local et disatnt.
croco
le 08/12/2006 à 22:19
croco
précision :

j'ai remplacé les :
$url=$_SERVER["HTTP_HOST"];
$chemin_racine="http://".$url."";
...
include $chemin_racine."/machin/truc/fichier.php";

par des :
$chemin_racine=$_SERVER['DOCUMENT_ROOT'];
...
include $chemin_racine."/machin/truc/fichier.php";

Mais ça ne suffit pas.

Ca passe avec
include "fichier.php"; // si l'appelant et l'appelé sont dans le même rép, bien sûr


J'oublie quelque chose ?
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours