Création de 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 : Création de fichier

Re: Création de fichier

par Debutant » 08 avr. 2010, 17:32

Bonjour,

Merci de vos réponses, j'y suis enfin parvenu à créer convenablement mon code !
Il m'a fallu un peu de réflexion et ça a été par la suite !

Merci infiniment ! :) :D

Re: Création de fichier

par macgawel » 07 avr. 2010, 09:15

Bonjour.

Il faudrait que tu (re)lises les bases de la programmation PHP, parce que là c'est un peu n'importe quoi.
Il faudrait aussi que tu lises les réponses :
donc déjà tu dois donner tes arguments à ta fonction renommerFichier(), ensuite, évite d'appeler la fonction dans elle-même sauf dans certains cas
Au passage, sécurise toutes les variables reçues par $_POST.
Je ne connais pas ton arborescence, mais si j'envoie comme nom de fichier '../index.php' (ou le nom du script), je te laisse le soin d'imaginer le résultat :mrgreen:

Re: Création de fichier

par Débutant » 06 avr. 2010, 19:53

Merci beaucoup de votre réponse !!

J'ai mis finalement ceci : $_POST['contenu'] = nl2br(htmlspecialchars(stripcslashes($_POST['contenu'])));

En revanche, je ne parviens pas à résoudre le problème de ma fonction pour renommer mon fichier nouvellement créé.
Voici ce dont j'ai fait :

Code : Tout sélectionner

// Création du fichier $fichier = fopen("./".$nom_dossier."/".$_POST['filename'],"w+"); function renommerFichier($nom_dossier, $fichier) { $newfichier = str_replace('[éèë]', 'e', $fichier); $newfichier = str_replace('[àä]', 'a', $newfichier); $newfichier = str_replace('[ùü]', 'u', $newfichier); $newfichier = str_replace('[ ]', '-', $newfichier); renommerFichier($newfichier) { rename($nom_dossier / $fichier, $nom_dossier . $newfichier); }
J'ai beaucoup de difficulté avec les fonctions, c'est mes premières fois. :?

Je serais très reconnaissant si quelqu'un pourrait m'aider !! :D

Merci d'avance, bonne soirée !!

Re: Création de fichier

par devlop78 » 06 avr. 2010, 02:47

function renommerFichier($nom_dossier, $fichier) {
$newfichier = str_remplace('[éèë]', 'e', $fichier);
$newfichier = str_remplace('[àä]', 'a', $newfichier);
$newfichier = str_remplace('[ùü]', 'u', $newfichier);
$newfichier = str_remplace('[ ]', '-', $newfichier);

renommerFichier();
rename($nom_dossier . $fichier, $nom_dossier . $newfichier);

Là au choix, soit tu veux une boucle, soit tu veux une erreur ;)

donc déjà tu dois donner tes arguments à ta fonction renommerFichier(), ensuite, évite d'appeler la fonction dans elle-même sauf dans certains cas, ensuite str_replace n'utilise pas les expressions régulières, et enfin (mais il doit y a avoir d'autres choses) tu as oublié '/' entre $nom_dossier et $fichier (enfin je dis ça parce que la fonction fopen en rajoutait un, donc je dis ça par pure cohérence).

Re: Création de fichier

par devlop78 » 06 avr. 2010, 02:42

if (fwrite($fichier,$_POST['contenu'])) {
$fichier = stripcslashes($_POST['contenu']);

C'est sûr que si tu effectues le traitement après avoir écrit dans ton fichier, ça ne va pas fonctionner ...

$_POST['contenu'] = stripcslashes($_POST['contenu']);
if (fwrite($fichier,$_POST['contenu'])) {

ou

if (fwrite($fichier,stripcslashes($_POST['contenu'])) {

Re: Création de fichier

par devlop78 » 06 avr. 2010, 02:39

C'est n'importe quoi ce code !! str_remplace, c'est quoi ??

Et dans un textarea, effectue un htmlentities avant !!!

Et pourquoi renommer un fichier comme ça ?? Effectue ton traitement avant ...

Enfin bref ...

Création de fichier

par Debutant » 05 avr. 2010, 22:30

Bonsoir ! Récemment, j'ai créé une page PHP permettant de créer des fichiers sur le serveur FTP. Malheureusement, je n'arrive pas à effacer les antislashs avec : "stripcslashes" et à renommer le fichier créé pour éviter les erreurs comme par exemple les espace du genre : a propos.html qui peut embêter..

Voici mon code complet. J'ai mis en gras, ce que je n'arrive pas à corriger depuis de longues heures..
Merci de bien vouloir m'aider, ça me ferai très plasir !! Bonne soirée :D

<body>

<div id="container">

<form action="edit.php" method="post">
<p><label>Mot de Passe <input type="text" name="pswd" /></label></p>

<div class="function-input">
<input type="submit" value="Valider" />
</div>
</form>
<?php
}
}


$nom_dossier = "./Pages";

if (!isset($_POST['form'])) {

echo '<form action="create.php" method="POST">
<p>Nom du fichier (afficher dans le menu)</p> <input type="text" name="filename" value="exemple.html"> <br /> <br />

Contenu <br /> <textarea name="contenu" cols=70 rows=20>

<h1>Grand Titre</h1>
<h2>Titre Moyen</h2>
<h3>Petit Titre</h3>

<p>Ecrire entre ces 2 balises pour les paragraphes</p>

Pour mettre un lien, appliquer ce code ci-dessous :

<a href="site-internet.com" target="blank">Cliquer sur ce lien</a>

Pour mettre une image, appliquer ce code ci-dessous EN ENLEVANT LES ANTISLASH DU AU PHP :

<img src="site-vers-votre-image.jpg" alt="Bug"></img>


</textarea> <br /> <br />
<input type="hidden" name="form" value="1">
<input type="submit" value="Valider">';
}


else {

// Création du dossier s'il n'existe pas
if(!is_dir($nom_dossier)){

mkdir("./".$nom_dossier."/", 0777);

}


// Création du fichier
$fichier = fopen("./".$nom_dossier."/".$_POST['filename'],"w+");


function renommerFichier($nom_dossier, $fichier) {
$newfichier = str_remplace('[éèë]', 'e', $fichier);
$newfichier = str_remplace('[àä]', 'a', $newfichier);
$newfichier = str_remplace('[ùü]', 'u', $newfichier);
$newfichier = str_remplace('[ ]', '-', $newfichier);

renommerFichier();
rename($nom_dossier . $fichier, $nom_dossier . $newfichier);



// Vérification de l'écriture
if (fwrite($fichier,$_POST['contenu'])) {
$fichier = stripcslashes($_POST['contenu']);

echo"<div class=\"function-done\">";
echo "Le fichier à été créé avec succès !";
echo "</div>";

echo "<br />";
echo"<div class=\"function-return-panel\">";
echo"<a href='panel.php'>Retour au panel</a>";
echo"</div>";

} else {
// Erreur
echo "<br />";
echo "Erreur.";
}

fclose($fichier);
}
}


?>

</div>
</body>
</html>