Page 1 sur 1

ouvrir une page php par fopen chez free

Posté : 05 oct. 2009, 23:14
par suprateam
Bonjour,
j'essaye dans mon fichier index.php ci-dessous d'ouvrir une nouvelle page avec le contenu de $VAR qui est initialisé à toto.php .
Mais le pb est que toto.php à des requête sql et il ne retourne rien sauf la page classique sans récupérer les retour des requêtes.

Ma page etant chez free si je mets un x au lieu du r au fopen je parts en erreur.

Une astuce me serait d'une grande aide !!!


...
<div id="contener">
<?
if ($VAR=="") {
$filename = "data/accueil.php";
} else {
$filename = "data/$VAR";
}
$handle = fopen ($filename, "r");
$contents = fread ($handle, filesize ($filename));
print $contents;
fclose ($handle);
?>
</div>
...



Merci

Re: ouvrir une page php par fopen chez free

Posté : 05 oct. 2009, 23:37
par thehawk
Tu as deux soucis avec ton code

Déja le flag d'ouverture est faux , je te conseil de relire :
mode Description
'r' Ouvre en lecture seule, et place le pointeur de fichier au début du fichier.
'r+' Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier.
'w' Ouvre en écriture seule ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
'w+' Ouvre en lecture et écriture ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
'a' Ouvre en écriture seule ; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.
'a+' Ouvre en lecture et écriture ; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.
'x' Crée et ouvre le fichier en lecture seule ; place le pointeur de fichier au début du fichier. Si le fichier existe déjà, fopen() va échouer, en retournant FALSE et en générant une erreur de niveau E_WARNING. Si le fichier n'existe pas, fopen() tente de le créer. Ce mode est l'équivalent des options O_EXCL|O_CREAT pour l'appel système open(2) sous-jacent. Cette option est supportée à partir de PHP 4.3.2 et fonctionne uniquement avec des fichiers locaux.
'x+' Crée et ouvre le fichier en lecture et écriture ; place le pointeur de fichier au début du fichier. Si le fichier existe déjà, fopen() va échouer, en retournant FALSE et en générant une erreur de niveau E_WARNING. Si le fichier n'existe pas, fopen() tente de le créer. Ce mode est l'équivalent des options O_EXCL|O_CREAT pour l'appel système open(2) sous-jacent. Cette option est supportée à partir de PHP 4.3.2, et fonctionne uniquement avec des fichiers locaux.
Ensuite le print() est un alias de echo() et donc n'imprime pas dans le fichier si c'est ce que tu pensé il te faut utiliser ces fonctions :
http://fr.php.net/manual/fr/ref.filesystem.php

Dans ton cas cela reviendrait pour une écriture SIMPLE de fichier a utiliser une combinaison de fopen , fputs et fclose

Bye Hawk

Re: ouvrir une page php par fopen chez free

Posté : 06 oct. 2009, 08:00
par stopher
Salut ,

Sinon , as tu essayé file_get_contents() que je trouve personnellement plus souple et pratique ,
tout du moins pour ce que tu souhaites faire .

Good luck ,
Ch.

Edit :

J'ai un doute aprés relecture de ton post , tu souhaites afficher les données de toto.php ou les "executer" ?

Si tu souhaites simplement les executer , utilises un simple require ou include

Re: ouvrir une page php par fopen chez free

Posté : 06 oct. 2009, 08:43
par suprateam
Merci mais les simples fopen fclose ne donnent rien ...

>>J'ai un doute aprés relecture de ton post , tu souhaites afficher les données de toto.php ou les "executer" ?
Je souhaite executer pour recuperer l'affichage de ma page php comme si je l'affiché directement en http

>>Si tu souhaites simplement les executer , utilises un simple require ou include
Comprends pas

Re: ouvrir une page php par fopen chez free

Posté : 06 oct. 2009, 08:45
par thehawk
A oui en effet j'étais completement à coté de la plaque ... je sais pas ce que j'ai cru lire :roll:


Donc oui , la méthode de stopher est la bonne.

file_get_contents => Récupere le contenu de ton fichier local , ou la code source html d'un fichier distant.
require ou include => Inclut (on peut avoir en tête que PHP va executer le code jusqu'a l'include(ou require) , executer l'include , et execute le reste du fichier) un fichier


Bye Hawk

Re: ouvrir une page php par fopen chez free

Posté : 06 oct. 2009, 08:50
par stopher
Ok , tu souhaites donc exécuter le code dans toto.php , et récupérer le résultat pour l'afficher ou bon te semble .

Dans ce cas deux façon possibles me viennent à l'esprit :

Ajax et fsockopen

Ajax pour exécuter en arriére plan ta page , et afficher le résultat dans un div .

fsockopen , qui fait tout simplement une requête http et te retourne le resultat .

Car fread() file_get_content ect .. récupèrent le contenu du toto.php ( le code ) mais ne l'interprète pas.

D'ailleurs dans la doc ils donnent de bon exemples :
// Pour PHP 5 et suivant
$handle = fopen("http://www.example.com/", "rb");
$contents = stream_get_contents($handle);
fclose($handle);
Ch.

Re: ouvrir une page php par fopen chez free

Posté : 06 oct. 2009, 09:17
par suprateam
Ce code direct dans mon test de VAR devrait marcher pour toi ?

$handle = fopen($filename, "rb");
$contents = stream_get_contents($handle);
fclose($handle);


J'ai essayé avec un petit javascript pour l'ouverture et exécution de mon toto.php mais ce n'est pas trés beau ;o( mais ça fonctionne

Merci beaucoup, j'essaye ce soir ....

Re: ouvrir une page php par fopen chez free

Posté : 06 oct. 2009, 18:08
par suprateam
Non j'ai l'erreur suivante :
Fatal error: Call to undefined function: stream_get_contents( ....

!!!

Re: ouvrir une page php par fopen chez free

Posté : 07 oct. 2009, 08:41
par FuZZyLine
Salut,

Je ne peux répondre, directement, au problème décrit mais je peux te dire, en tout cas,
que Free désactive certaines fonctions php. Dans le cas qui t'occupe, je ne peux te l'assurer mais...
Attention à ne pas trop chercher pour rien ;)

@+ bon code et désolé de ma "non" réponse ;)