begin process at 2012 02 11 15:31:06
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > INTERPRÉTER CODE PHP DANS FICHIER CONTENANT HTML ET PHP EN TRAITANT LE CODE

INTERPRÉTER CODE PHP DANS FICHIER CONTENANT HTML ET PHP EN TRAITANT LE CODE


 Information sur la source

Note :
3,86 / 10 - par 7 personnes
3,86 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Niveau :Débutant Date de création :26/06/2004 Date de mise à jour :26/06/2004 06:53:19 Vu :7 629

Auteur : mathieumg

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note


 Description

Je cherchais comment exécuter un fichier .php contenant du html et du php

include();

Peut faire tout cela mais lorsque vient le temps de modifier seulement le code HTML contenu dans le fichier (exemple transformer des chaînes en d'autres) il faut avoir recours à

fopen(); , fread(); et echo();

pour afficher le code, mais là le code PHP dans le fichier à "afficher après traitement" n'est plus interprété.

Voilà ce que ma source fait :

-Elle ouvre le fichier à traiter
-Fait le traitement quelquonque (Par exemple mettre du bbcode...)
-Met le résultat dans un fichier temporaire avec la syntaxe : temp-[IP du visiteur]-[timestamp].php (de sorte qu'il soit unique)
-Inclu le fichier créé
-Supprime le fichier créé

Je ne sais pas s'il y a une façon plus simple de le faire mais celle-ci marche et c'est là seule à laquelle je suis parvenue après des heures d'essai ;)

Source

  • <?
  • $fichier="patate.php"; //patate.php est le fichier qui contient à la fois du code HTML et PHP
  • //Adresse temporaire ou sera stocké le fichier, ici vous devez avoir un réperoitre temps/ avec un CHMOD permettant l'écriture
  • $adressetemp="temps/temp-".$REMOTE_ADDR."-".time().".php"; //Done un résultat du style temp-69.70.201.53-1088224785.php
  • //Ouvre le fichier à inclure
  • $ouverture = fopen($fichier,"r+");
  • //Obtient la grosseur du fichier ouvert
  • $grosseur=filesize($fichier);
  • //Lit le fichier ouvert à l'aide de la grosseur et stocke la source dans la variable $code
  • $code = fread($ouverture,$grosseur);
  • //Fermer le fichier patate.php
  • fclose($ouverture);
  • //Créer le fichier temporaire
  • $nouveau=fopen($adressetemp,"w");
  • //Effectuer les traitement sur la source de la page ouverte ICI (But de la source)
  • $code=bbcode($code); //Exemple ici on fait passer la source de la page par la fonction bbcode();
  • //Écrire le nouveau code dans le fichier temporaire
  • fwrite($nouveau,$code);
  • //Fermer le fichier temporaire
  • fclose($nouveau);
  • //Inclure le fichier temporaire pour son exécution
  • include($adressetemp);
  • //Effacer le fichier temporaire
  • unlink($adressetemp);
  • ?>
<?
$fichier="patate.php"; //patate.php est le fichier qui contient à la fois du code HTML et PHP
//Adresse temporaire ou sera stocké le fichier, ici vous devez avoir un réperoitre temps/ avec un CHMOD permettant l'écriture
$adressetemp="temps/temp-".$REMOTE_ADDR."-".time().".php"; //Done un résultat du style temp-69.70.201.53-1088224785.php
//Ouvre le fichier à inclure
$ouverture = fopen($fichier,"r+");
//Obtient la grosseur du fichier ouvert
$grosseur=filesize($fichier);
//Lit le fichier ouvert à l'aide de la grosseur et stocke la source dans la variable $code
$code = fread($ouverture,$grosseur);
//Fermer le fichier patate.php
fclose($ouverture);
//Créer le fichier temporaire
$nouveau=fopen($adressetemp,"w");
//Effectuer les traitement sur la source de la page ouverte ICI (But de la source)
$code=bbcode($code); //Exemple ici on fait passer la source de la page par la fonction bbcode();
//Écrire le nouveau code dans le fichier temporaire
fwrite($nouveau,$code);
//Fermer le fichier temporaire
fclose($nouveau);
//Inclure le fichier temporaire pour son exécution
include($adressetemp);
//Effacer le fichier temporaire
unlink($adressetemp);
?>

 Conclusion

Merci de me dire si il y a des simplifications possibles ou des bugs ou quoi que se soit ; )

Je suis pas un grand programmeur PHP mais je me débrouille


 Sources de la même categorie

UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
FONCTION RECURSIVE DE DOSSIERS par tefa24600
Source avec Zip CONVERSION DES UNITÉS INFORMATIQUE (O, KIO, MIO, GIO, TIO...... par genetApt151
TROUVER LES DOUBLONS DANS UNE LISTE DE FICHIERS par soobook

Commentaires et avis

Commentaire de jonguignolo le 26/06/2004 08:31:50

Yop, heu désolé je comprend pas trop le but de ce qure tu as fait pourquoi tu ne parse pas ton fichier php en plusieur certe tu aura besoin de parser(couper) ton fichier en plusieur parti et de faire des echo mais ton script html sera toujours interpreter...
tu vois ce que je veu dire?
arff je sais pas si je suis trés clair ...
++
(c'est pas pour te casser c'est juste pour essayer de te simplifier la vie)

Commentaire de mathieumg le 26/06/2004 08:34:48

J'ai essayé avant mais j'ai pas réussi (Comme je dis dans la source)

T'aurais pas une idée(apres avoir traité le contenu du fichier, le bbcode exemple...) comment afficher la source avec les bouts seulements php traités ?

Non je le prend pas mal, tous les commentaires sont constructifs :)

Mat

Commentaire de jonguignolo le 26/06/2004 08:51:42

dsl je comprends pas ce terme de bbcode...
:(
PhPeteur

Commentaire de mathieumg le 26/06/2004 08:54:25

Ben j'exécute n'importe quelle fonction qui modifie le code de la page exemple remplacer "allo" par "aurevoir"

$code=str_replace("allo","aurevoir",$code);

Mat

Commentaire de jonguignolo le 26/06/2004 10:44:16

ok ok ok,
envoie moi un mail avec un exemple de ce que tu veu remplacer sa me parait bizzard ce que tu dit par rapport au html qui n'est pas interprété, je veu bien t'aider enfin essayer lol

PhPeteur

Commentaire de mathieumg le 26/06/2004 15:42:10

C'est quoi ton mail ? (Je sais il y a la messagerie internet mais c'est pas ce qu'il y a de mieux :S)

Mat

Commentaire de derfum le 26/06/2004 16:49:28

Bonjour. Si ta fonction bbcode() est bien définie, il me semble que
&lt;?php
ob_start("bbcode");
include 'fichier.php';
ob_end_flush();
?&gt;
aura le même effet que ta source (à vérifier, j'ai peut-être manqué une subtilité)

FReD

Commentaire de mathieumg le 26/06/2004 17:28:36

J'ai été voir ce que ob_start et ob_end_flush font et si je comprend bien ça effecture la fonction bbcode sur le fichier fichier.php et ensuite ça interprète le code php dedans, le tout est stocké dans le buffer et affiché avec endflush ?

Mat

Commentaire de jonguignolo le 26/06/2004 19:08:21

oui apprement tu dis vrai c'est ça si j'ai compris...

PhPeteur

Commentaire de jonguignolo le 26/06/2004 19:14:35

jonguignolo@hotmail.com
(je trouve plus comment envoyé un mail mdr mon cerveau chauf vite en ce moment lol)

PhPeteur

Commentaire de derfum le 27/06/2004 11:57:01

Bonjour

Une toute petite précision technique :
ob_start("bbcode");
&gt;&gt; Commence la bufferisation (rien ne sera affiché) en précisant que le contenu devra être envoyé en paramètre à la fonction bbcode

include 'fichier.php';
&gt;&gt; Inclus le fichier normalement, le php est interprété, les eventuels echo, print ou codes html sont envoyés au buffer.

ob_end_flush();
&gt;&gt; Termine la bufferisation et affiche le résulat (préalablement envoyé à la fonction donnée)

Je mets 7/10 malgré tout parce que même si ce code est équivalent à un code de 3 lignes, il prouve les possibilités de PHP (et de mathieumg !) de resoudre tout les problèmes que l'on rencontre.

FReD

Commentaire de mathieumg le 28/06/2004 01:18:11

D'accord merci beaucoup à tous :)

J'avais vu cela ici : http://www.phpcs.com/code.aspx?ID=20185 mais ça n'avait pas fonctionné ;)

Une dernière question juste pour mon info personnelle, admettons que j'aurais voulu appliquer plusieurs fonction au code, est-ce que j'aurais du faire une fonction dans laquelle j'apelle mes fonctions les unes dans les autres ou je peux faire ob_start("fonction1,fonction2"); ?

Merci

Mathieu

Commentaire de derfum le 29/06/2004 15:01:12

A priori ob_start ne prend qu'une fonction en argument, et le contenu du buffer sera passé comme argument de ladite fonction. Donc il faut faire une fonction générale qui contient les appels à toutes les autres, je pense.

FReD

Commentaire de mathieumg le 29/06/2004 15:30:57

Merci :)

Mat

Commentaire de samirog le 01/07/2004 09:29:30

c'est pas mal, j'aime bien j'vais y mettre 8


Sam

Commentaire de mathieumg le 01/07/2004 09:30:48

Merci !

En passant salut Samirog =) Sa fait un bout ;)

Toujours vivant ? :P

Mat

Commentaire de samirog le 01/07/2004 09:41:32

oui, on pourrait se recontacter par email, ok?

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales