Empecher interpretation code php par le navigateur

Petit nouveau ! | 3 Messages

18 nov. 2008, 17:07

Bonjour,
j'aurais besoin de votre aide. Je m'explique, sur une page php j'ai un editeur WYSIWYG en javascript qui peut ouvrir des fichiers sur le serveur de type html, css, php, xml... le probleme que je rencontre est que lorsque j'ouvre un fichier Php (test.php) le navigateur interprete le code en affichant le résultat,par exemple :

<?php echo"salut"; ?>

dans mon editeur j'obtiens uniquement salut

du coup pour un editeur qui doit permettre de modifier ses fichiers sources, c'est un peu un probleme.

Quelqu'un connait il une fonction ou une astuce afin d'empecher le navigateut d'interpreter mon code ??

Merci beaucoup

:D

Eléphant du PHP | 353 Messages

18 nov. 2008, 17:10

hum.
Bossant actuellement sur un éditeur / manipulateur de fichier.. je vois mal comment tu peux arriver à une telle solution.

Comment récupère tu le contenu de ton fichier au juste?

Petit nouveau ! | 3 Messages

18 nov. 2008, 17:14

avec du AJAX

Eléphant du PHP | 353 Messages

18 nov. 2008, 17:21

hum.
ton ajax fait quoi, il appele directement le fichier ?
Ou il appele un fichier exemple.php qui lui fera un file_get_content ?

En fait.
Si tu tape directement sur tonfichier.php celui ci sera interprété par le serveur (et non pas le navigateur du client).

Pour ne pas avoir d'interpretation fait toi un script php qui pourrait fonctionner comme ceci :
<?php
$file = $_POST['file'];

if(empty($file) || !is_file($file)) die("");

$content = file_get_content($file);
die($content);

?>
Ceci n'est qu'un exemple.
Mais ce qui est sur c'est que tu ne peux pas appeler directement le fichier sinon il sera interprété par le serveur.

ViPHP
ViPHP | 4674 Messages

18 nov. 2008, 20:34

Hey :),

Ce n'est pas le navigateur qui interprète le code, mais le serveur. Attention, c'est une énorme différence !

La solution de yaug me paraît correct, mais j'utiliserais echo à la place de die(), c'est plus correct (ça t'éviteras des comportements bizarres si tu as des includes ;-)).

Sinon, je récupérerais le contenu du fichier (via file_get_contents() par exemple), et j'afficherais via echo, mais en utilisant la fonction hmlspecialchars() ou htmlentities() par exemple, histoire d'être sûr.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Invité
Invité n'ayant pas de compte PHPfrance

18 nov. 2008, 23:30

merci beaucoup pour les explications, j'avais compris que c'était le serveur qui interpreté du coup votre script marcherait bien si j'utilisait du php pour recuperer mon contenu mais en faite j'utilise du javascript du coup je peut pas l'utiliser, ou alors il faudrait que j'utilise XmlHTTPRequest pour envoyer des parametres à ce meme script à partir de ma page mais aprés parcontre je sais pas si je peut les récuperer dans cette meme page.

Je pense pas.

Donc je crois que c'est inutilisable dans mon cas, il faut que je voye si avec la méthode setRequestHeader je peut forcer l'entete du fichier et le traiter comme du simple texte ou alors je vais etre obligé de 'tricher' en faisant une copie temporaire du fichier en .txt :?

merci

Eléphant du PHP | 353 Messages

18 nov. 2008, 23:46

Hum.
J'ai du mal à comprendre.
Qu'est ce qui t'empéches au juste de pouvoir charger le fichier xxx.xx via un script php que tu appeles en ajax?

ViPHP
ViPHP | 4039 Messages

19 nov. 2008, 00:28

Je pense pas.
Moi je pense, après avoir tout bien lu, et malgré l'heure tardive, que la seule solution est celle d'HyWaN et de Yaug.

Est-ce que tu connais un moyen de voir le code-source d'un site en php, avec ton navigateur ? Non. Tu ne peux pas, tu ne vois que le HTML généré, tout simplement parce que c'est tout ce que t'envoie le serveur. Rien d'autre.

Or donc, si tu veux avoir accès aux données de ces fichiers, une seule et unique solution, avoir un script côté serveur qui lui à les accès aux sources des fichiers, pour après te les transmettre, de la manière que tu veux.

Rien qu'avec javascript, c'est risiblement impossible, puisqu'il ne peut rien faire du côté serveur..

C'est un peu comme vouloir modifier un document original par l'intermédiaire d'un fax. Tu n'en recevras que des copies. Et sans la collaboration de quelqu'un d'autre à l'autre bout du fil, c'est tout logiquement impossible.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
ViPHP | 5924 Messages

19 nov. 2008, 02:29

C'est un peu comme vouloir modifier un document original par l'intermédiaire d'un fax. Tu n'en recevras que des copies. Et sans la collaboration de quelqu'un d'autre à l'autre bout du fil, c'est tout logiquement impossible.
Ah bon, le papier ne passe pas par le fil pour arriver jusqu'à nous ? :mrgreen:

Petit nouveau ! | 3 Messages

19 nov. 2008, 15:04

je comprend bien vos solutions et elles sont facilement implémentables dans pleins d'autres cas mais dans ma situation vu que j'utilise un editeut all-javascript ca devient trés lourd de mettre en place ceci uniquement pour mes fichiers .php, du coup je dois d'abord identifier l'extension du fichier et dans le cas où ca serait du php il faudrait que je récupere le contenu du fichier avant de l'envvoyer au serveur et en faire une copie en .txt
Et donc quand je voudrais réouvrir ce meme fichier qui se trouvera alors sur le serveur il faudra ouvrir ma version en .txt en non plus la version .php

je sais pas si je me suis bien fait comprende mais en gros je possede deux méthodes Ouvrir dans mon projet, une qui permet d'ouvrir un fichier en local et de l'importer vers le serveur et une autre qui permet d'ouvrir un fichier qui est déja sur le serveur.

Merci :D

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 nov. 2008, 15:06

pourquoi tout séparer et détecter l'extension ?

Un ressource php qui fait un
echo file_get_contents( 'lenomdufichier.ext' );
te retournera le contenu du fichier, quelque soir son extension, donc sans interprétation ...
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

19 nov. 2008, 17:07

merci à tous mais ce que j'avais en tete est tout bonneement impossible du au caractere client du javascript, je vais en faite passer par un bouton de upload de fichier et utiliser du php comme vous m'avez dit.

ViPHP
ViPHP | 4674 Messages

19 nov. 2008, 19:08

Est-ce que tu peux expliquer exactement ce que tu veux :) ?
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 991 Messages

19 nov. 2008, 20:03

Je serais d'avis d'utiliser : http://fr.php.net/manual/fr/function.highlight-file.php

Ou alors j'ai rien compris =)
DevOps, Symfony4, Hoa

ViPHP
ViPHP | 5924 Messages

20 nov. 2008, 00:15

Je serais d'avis d'utiliser : http://fr.php.net/manual/fr/function.highlight-file.php

Ou alors j'ai rien compris =)
En effet, tu n'as rien compris :)