Page 1 sur 1

Récupération code source

Posté : 10 mai 2006, 16:13
par Monsieur prog
Bonjour à tous
J'explique mon problème: je génère une page à partir de mon code. Le truc, c'est que je veux garder la page générée et la sauvegarder. J'ai pensé au fgets() mais hum... J'ai du mal à le tourner correctement.
Enfin c'est assez tordu comme problème. Pour y aller plus simplement: J'entre des paramètres, puis mon code php génère une page. Ce que je veux c'est garder une copie de cette page en dur sur mon serveur.
J'ai dans l'idée de prendre la source de la page créée et de créer une nouvelle page en dur sur le serveur ou je copierai la source sur fichier généré. Mais c'est pour récupérer la source du fichier que je bloque pas mal. P'têt Curl mais la encore....
Une idée?
Merci

Posté : 10 mai 2006, 16:26
par Ryle
Hello,

Pour aller lire le source généré, tu dois pouvoir le faire avec readfile() / fopen() en ouvrant l'url de la page générée. Ensuite il devrait normalement te suffir d'enregistrer le contenu dans un fichier avec fwrite() :)

Posté : 10 mai 2006, 16:27
par zeus
Tu peut utiliser la gestion des fluxs :-k

Au moment de la génération de la page, tu capture le flux, tu l'enregistres dans un fichier et basta ;)
<?php
  ob_start();
?>
<html>
  ...
</html>
<?php
  $page = ob_get_content();

  //Choisir l'une des 2 fonctions selon ce que tu veux faire
  ob_end_flush(); //Pour afficher le flux
  ob_end_clean(); //Pour nettoyer le flux

  //ouvre le fichier
  $fp = fopen('fichier.htm', w);
  //ecrit le contenu du flux dans la page
  fputs($fp, $page);
  //Ferme la page
  fclose($fp);
?>

Posté : 10 mai 2006, 16:42
par Ryle
On peut faire ça ?? :shock:

directment à la suite du code ?? sans avoir à se galerer pour tout coller dans des variables et balancer dans un fichier avant de l'afficher ?!!

Cooooll :)

par contre je comprend pas bien l'intérêt dans un premier temps, puis la différence entre ob_end_flush() et ob_end_clean() ?

Posté : 10 mai 2006, 16:54
par zeus
l'intéret ?
  • capture du flux :arrow: pas besoin de générer puis de capturer
  • acces fichier :arrow: plus qu'un accès pour enregistrer le fichier sans avoir à acceder au source généré
  • rapidité :arrow: la capture du source et son eventuel affichage sont simultanés
sinon, ob_end_flush() termine la capture du flux et envoi le contenu actuel au navigateur pour un affichage et ob_end_clean() vide le flux (pas d'affichage) et termine la capture du flux

Posté : 10 mai 2006, 17:37
par Ryle
C'était sur l'intérêt des fonctions ob_end_flush() et ob_end_clean() que je me posais des questions, mais j'ai compris maintenant qu'il fallait refermer le flux (j'avais pas vu le ob_start)

Et donc en gros une fois ma page générée flush le ferme et l'affiche avant de l'enregistrer dans le fichier, et clean le ferme sans l'afficher avant l'enregstrement, c'est bien ça ? :)

Posté : 10 mai 2006, 17:42
par zeus
avec ob_get_content(), tu récupéres le contenu du flux dans une variable PHP, ce qui te permettra de l'enregistrer dans un fichier, comme dans mon exemple.

Ensuite, pour ne pas encombrer les flux, il faut les vider. Pour ca, soit tu le vide en l'affichant (ob_end_flush()), soit tu le vides juste (ob_end_clean())

Bien entedu, utiliser les 2, comme dans mon exemple n'a aucun interet puisqu'ils ont une utilité similaire mais je voulais les placer ;)

Il est possible de faire beaucoup de chose avec les flux :
http://fr3.php.net/manual/fr/ref.outcontrol.php

Posté : 10 mai 2006, 18:04
par Ryle
oki doki !

je sais pas du tout si ça répond à la question de Monsieur prog, mais à moi ça va m'servir ! ;)

Merci m'sieur :)