Problème avec la fonction fopen()

Fermé
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 - 9 juin 2009 à 17:41
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 - 12 juin 2009 à 19:30
Bonjour,
J'ai un problème avec la fonction fopen().
Voici ce que je fais :
<?php
$login = $_SESSION['log'];
$nom = $_SESSION['nom'];
$prenom = $_SESSION['prenom'];

$destinationficher = "C:/Documents and Settings/cocha0081/Mes documents/test/essais.html";

$fp = fopen($destinationfichier, 'xb');
$handle = @fopen ( $destinationfichier, 'w' );

$contenu = "<html>
                   <head>
                   <title>Fiche perso de machin</title>
                   </head>
                   <body>
                   <b>Pseudo :</b> ".$pseudo."
                   
                  </body>
                  </html>";

if ( is_writable ( $destinationfichier ) and $handle != FALSE ) {
fwrite ( $handle, $contenu );
fclose ( $handle );
}
else {
echo 'Fichier non disponible en écriture';
}
?>

Mais immanquablement, ça me sort une erreur (fichier non disponible en écriture). Où me suis-je trompé ?

Par avance merci !

34 réponses

Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
10 juin 2009 à 16:32
Ah là je dis merci beaucoup, ça marche !
Bon, j'ai bien sûr d'autres questions. Exemple. Je veux que le contenu de cette page soir rentré par l'utilisateur par le biais d'un formulaire ou autre. Comment fais-je ? Place-je les données tapées dans une variable de la session ? J'ai peur qu'au bout d'un moment ça fasse lourd... Et aussi, comment fais-je pour que cedit texte soit éditable, par le biais du même formulaire, mais avec le texte déjà tapé dedans ? (fonction édition, quoi...)

J'espère avoir été assez clair dans mes explications...

Merci !
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
10 juin 2009 à 16:37
Tu créer un formulaire qui transmettra les données par POST ou GET ainsi un tableau $_POST ou $_GET sera créer. Pour l'édition, tu ouvres le fichier et tu place le contenu dans un textarea. Voilà un autre tuto.
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
10 juin 2009 à 16:58
J'ai encore un problème, mais avec fileZilla : je n'arrive pas à appliquer la récursivité des droits de lecture et d'écriture à mon dossier pages_users. Je m'explique. Je veux que els pages créées par les utilisateurs aillent dans le dossier pages_users, elle se créent dedans, tout va bien, mais quand je défini les droits d'accès de "pages_users" et que j'active l'option de récursivité, cette dernière ne reste pas activée et donc je n'ai pas les droits de lecture sur les fichiers qui se trouvent dans le dossier. Comment faire ?
Merci !
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
10 juin 2009 à 17:05
Sur Olympe-Network, on ne peut pas changer les droits. Dés que tu mets un fichier sur le FTP, les droits en écriture et de lectures sont mis automatiquement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
10 juin 2009 à 17:11
Ah, donc j'ai un gros soucis, nom ? Parce que je créé des fichiers, ok, mais si je ne peux pas les lire... Comment faire ?
Les créer dans le même dossier que les autres ?
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
10 juin 2009 à 17:29
Tu peux les lire.
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
10 juin 2009 à 17:44
Alors j'ai fait un chmod juste après la création du fichier, ça marche tout bien ! Je m'attèle au remplissage, avec vos conseils !

Encore merci !
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
10 juin 2009 à 17:58
Alors, tant que j'y suis à poser des questions, voila, ma page se crée, pas de prob, le formulaire me fait ce que je veux, pas de soucis, mais j'ai encore un truc qui me chagrine. Par ce que la page qui est générée ne contient pas que le texte de la personne. Elle contient en fait
$nombio = $_POST['nom_bio'];
$prenombio = $_POST['prenom_bio'];
$bio = $_POST['bio'];
$contenu = "<html>
	<body>
        <b>biographie de $prenombio $nombio<br>
        </b>
        <br>
        <div align=center>$bio</div>
        </body>
        </html>
";

où les variables prenombio, nombio et bio sont celles que je récupère de mon formulaire. Comment faire pour que ma fonction éditer n'édite que la variable bio ?

Merci !
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
10 juin 2009 à 17:59
On ne sait pas étant donné que ta variable $bio n'existe pas. Il n'y a qu'un variable qui contient tout le fichier (<html>, head, ...). Tu peux toujours utiliser des regex pour ça (regarde sur le site que je t'ai donné).
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
10 juin 2009 à 18:09
Ah non pas les regex, j'en ai déjà par dessus la tête avec le bash,csh et compagnie... Mais bon, quand il faut il faut ! Donc je recherche dans mon fichier ce qui est en <body> et </body>, et là je chope mon texte ?
Merci pour ces aides précieuses !
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
10 juin 2009 à 18:46
Oui tu "chopes" tout le contenu mais pas précisément $bio. Si tu veux avoir $bio, recherche le contenu entre <div align=center> et </div> et ensuite tu fais un rechercher/remplacer.
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
10 juin 2009 à 23:32
Désolé, je vais encore être pénible, mais si sur le fond ya pas de problème, sur la forme...Je ne sais pas comment construire mon expression régulière... C'est ce fait que ce soit sur plusieurs lignes qui me chagrine, je crois... Pouvez vous m'aider ? Merci !
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
11 juin 2009 à 00:23
J'ai essayé quelque chose du genre
$log = $_SESSION['login'];
$src = file_get_contents("pages_users/$log.html");
   
preg_match_all( "/<!--Debut-->(.*)<!--Fin-->/U", $src, $match );
if ( count( $match[1] ) >= $x ) {
  echo 'Balise trouvée: '.$match[1][$x-1];
}
else {
  echo 'Balise non trouvée.';
}
echo $match;


Sachant que dans le code que je génère automatiquement à la création de la page de l'utilisateur, <!--Debut--> marque le debut de ce que je dois capturer.
Mais $match me renvoie la valeur Array... Je ne suis pas sûr d'être dans le vrai... Bon, je crois que je verrai ça demain !
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
12 juin 2009 à 19:30
Je me permet de demander encore une fois un sympathique coup de main pour cette question !

Merci !
0