Page 1 sur 1

Création de fichier

Posté : 05 avr. 2010, 22:30
par Debutant
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>

Re: Création de fichier

Posté : 06 avr. 2010, 02:39
par devlop78
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 ...

Re: Création de fichier

Posté : 06 avr. 2010, 02:42
par devlop78
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

Posté : 06 avr. 2010, 02:47
par devlop78
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

Posté : 06 avr. 2010, 19:53
par Débutant
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

Posté : 07 avr. 2010, 09:15
par macgawel
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

Posté : 08 avr. 2010, 17:32
par Debutant
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