Ecrire dans un fichier

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ecrire dans un fichier

par djtec » 22 juin 2008, 15:29

Ok ok merci pour tout c'est renseignement

par Cyrano » 22 juin 2008, 14:29

Aucune importance. Tant que tu n'as que du PHP, la balise de fermeture reste facultative. Donc tes fichiers inclus qui ne contiennent que du PHP n'ont pas obligatoirement besoin de cette fermeture.

On va illustrer avec un exemple assez basique : tu as un fichier inclus avec la fermeture suivie d'un espace mais pas encore de HTML. Un peu plus loin dans ton code, tu utilises header() : tu es certain d'avoir une erreur fatale à cause de l'espace qui suit la fin de ton fichier inclus : cet espace étant en dehors du PHP n'est pas interprété et donc est envoyé au navigateur. Le header() qui arrive derrière déclenche une erreur parce que l'espace a implicitement déjà envoyé les entêtes.

par djtec » 22 juin 2008, 14:24

Juste une question Cyrano

si dans mon 1er fichier je fais:
<?php

// la je place mon code php
dans le 2eme
<?php

include(''); // j'inclue le fichier 1

// La mon autre code
?>
Puis dans le 3eme
<?php

include(''); // j'inclue le fihcier 2

// mon autre code

include(''); // j'inclue le fichier 4

?>
Le fichier 4
<?php

// mon code php

?>

Si je réalise des pages comme ceci celà ne risque pas de bugger alors???

en sachant que le fichier 1 il n'y a pas la balise de fin ?>

par katagoto » 22 juin 2008, 14:23

Bon,

Pourquoi passez vous par la solution de facilité ? Au lieu de résoudre le problème vous cherchez un moyen détourné d'y arriver, être codeur c'est pas se déffiller, c'est résoudre les problèmes*

* être codeur c'est surtout arriver à résoudre une "problématique" (demande du client), mais ce n'est pas en évitant les problème qu'on avance le plus...

Sur ce je considère le débat clos...

PS : il y a toujours plusieurs manières de résoudre une problématique, donc en quelques sortes on donne sont avis sur comment la résoudre...

PPS : La concaténation c'est la juxtaposition de deux entités à l'aide d'un . en PHP

par Cyrano » 22 juin 2008, 13:49

Je ne fais pas que donner mon avis...
Trop souvent si et pour ne rien te cacher, ton avis n'intéresse que toi : quelqu'un pose une question technique et attend une réponse technique, ton avis, il s'en cogne;
je me renseigne
Alors pose des questions, n'affirme pas sans savoir
j'essaye de faire avancer le sujet en parallèle...
Pour faire évoluer un sujet, avance des arguments techniques, pas des opinions. Et encore une fois, la plupart du temps, les sujets sont des questions, pas des débats lancés, donc il n'y a rien à faire avancer, il y a un développeur dans la panade qui demande un coup de pouce.

On est pas sur 20mn.fr, les messages creux n'ont pâs leur place ici et ne sont pas les bienvenus : si tu n'as rien à dire d'utile, abstiens-toi, lis et apprends.

par katagoto » 22 juin 2008, 12:48

Je ne fais pas que donner mon avis, je me renseigne, j'essaye de faire avancer le sujet en parallèle...

par djtec » 22 juin 2008, 11:47

Ok ben merci Cyrano pour les précision je ne le savais pas alors grâce à ça mon problème est réglé je vais écrire tout mes codes à la fin de mon fichier.

Merci à tous.

++

par katagoto » 22 juin 2008, 11:46

[HS] Mais alors doit-on ouvrir la balise si on sait qu'elle n'est pas fermé ?[/HS]

par Cyrano » 22 juin 2008, 11:39

Facultatif, je suis pas sûr...
katagoto, ne te sens pas systématiquement obligé de donner ce qui est ici une opinion. Naholyr indique une règle propre au PHP, pas une idée farfelue lancée au hasard.

La fermeture "?>" n'est obligatoire que si le code PHP doit être suivi d'un code autre comme du HTML par exemple.

Pour ta culture, fais un parcours des classes du Zend Framework, tu verras qu'aucune classe n'a cette fermeture et le ZF n'en fonctionne pas moins bien. Et la raison est assez simple, c'est pour éviter le risque d'envoyer un espace vers le navigateur quand ce n'est pas le moment. Donc non seulement c'est facultatif mais c'est une précaution parfois indispensable.

par katagoto » 22 juin 2008, 11:34

Facultatif, je suis pas sûr...

Si non tu as essayé avec fil_get_content et file_put_content ???

par djtec » 22 juin 2008, 11:22

Je pensant que si on fesait <?php on était obligé de fermer cette balise avec ?>.

Car ce fichier que je cherche à faire sera inclue dans toutes mes pages et je pensai que sans le ?> cela provoquerait des erreurs

par naholyr » 22 juin 2008, 11:03

Note : dans les scripts PHP, le "?>" final est totalement facultatif.
Donc il est possible que le problème que tu te poses n'existe pas en réalité ;)

par djtec » 22 juin 2008, 10:30

Non désolé c'est toujours pareil.

Et c'est quoi la concaténation???

par katagoto » 22 juin 2008, 10:26

Essay ça
$text = str_replace('?>', $modif."\n\n?>", $contenu_du_fichier); 
Pourquoi tout le monde est alergique à la concaténation...

J'aurais fait ça avec file_get_content() et file_put_content() personnellement, mais ça revient au même...

par djtec » 22 juin 2008, 10:02

J'ai éssayé ceci
<?php

$f = "fichier.php";

// Lit le contenu du fichier
$fp = fopen ($f, "r");   
$contenu_du_fichier = fgets ($fp, 255);  
fclose ($fp);

// Le texte à insérer
$modif = "include('');";

// Modif du texte
$text = str_replace('?>', '$modif\n\n?>', $contenu_du_fichier);

// Réécriture du fichier
$handle = fopen($f,"w+");

if (is_writable($f)) 
{
    if (fwrite($handle, $text) === FALSE) 
	{
      	echo 'Impossible d\'écrire dans le fichier';
    }
   
    echo 'Ecriture terminé';
   
    fclose($handle);
                   
}
else 
{
	echo 'Impossible d\'écrire dans le fichier';
} 
	
?> 
Mais la ca m'éfface tout car mon fichier ne contient que <?php une fois la réécriture faites.