Un espace perso pratique sans utiliser ftp
2 petits scripts que j’ai faits tout à l’heure en me faisant chier à l’école, qui permettent respectivement d’uploader des fichiers dans un répertoire web et de mettre à jour une liste mémo (sans passer par une base de données).
Dans un répertoire ouvert depuis le web, donc sans fichier index.*, et éventuellement protégé par une authentification .htaccess + .htpasswd (mieux), mettez les scripts suivants :
Upload.php :
On veut pouvoir uploader des fichiers tranquillement dans le même répertoire que le script. Lorsque l’upload réussit, le script vous invite à retourner à la racine.
<a href=”./” mce_href=”./”>Revenir</a><br /><br />
<?php
isset($_FILES['fichier'])
&& !ereg(”^(.*php[0-9]?|\..*)$”, $_FILES['fichier']['name'])
&& !$_FILES['fichier']['error']
&&
move_uploaded_file($_FILES['fichier']['tmp_name'], ‘./’.$_FILES['fichier']['name'])
&& printf(’Fichier publié dans la <a href=”./” mce_href=”./”>racine</a><br />’);?>
<form action=”" method=”POST” enctype=”multipart/form-data”>
<input type=”file” name=”fichier” />
<input type=”submit” />
Oui, j’aime beaucoup le chaînage de fonctions bien crado façon bash script. C’est du codé en 5 minutes les doigts de pied dans l’oreille, hein ~~
- En principe vous n’avez pas à vous farcir la vérification des droits d’écriture, mais si vous avez des problèmes d’upload, essayez de changer les droits du répertoire en 777
- Vous aurez noté la petite protection contre l’upload de scripts php avec ereg : c’est minimal, pensez quand même à protéger le répertoire avec une authentification .htaccess + .htpasswd
- Important à savoir : un fichier uploadé avec le même nom qu’un fichier déjà présent dans le répertoire écrasera l’ancien
Memowrite.php :
Ici, on met à jour un petit fichier texte en ajoutant une nouvelle ligne au début de ce dernier. Pour ce genre de petit mémo, nul besoin d’une base de données sql.
<a href=”./” mce_href=”./”>Revenir</a><br /><br />
<?php
$content = “”;
if( isset($HTTP_POST_VARS['texte'])
&& !empty($HTTP_POST_VARS['texte'])
&& ($handle = fopen(”memo.txt”, ‘r+’)) )
{
$content = filesize(”memo.txt”) ? fread($handle,filesize(”memo.txt”)) : “”;
rewind($handle);
fwrite($handle, $HTTP_POST_VARS['texte'].”\n”.$content);
fclose($handle) && printf(’Texte ajouté<br />’);
}?>
<form action=”" method=”POST”>
<input type=”text” size=”50″ name=”texte” />
<input type=”submit” />
</form><?php
if(filesize(”memo.txt”) + strlen($HTTP_POST_VARS['texte']) && $handle = fopen(”memo.txt”,’r'))
{
$content = fread($handle,strlen($HTTP_POST_VARS['texte']) + filesize(”memo.txt”));
echo nl2br(htmlentities($content));
fclose($handle);
}?>
- Pour qu’il fonctionne, n’oubliez pas d’uploader un fichier memo.txt dans le même répertoire, par exemple en utilisant Upload.php
- Pour effacer son contenu, uploadez un nouveau memo.txt vide
- Les attaques de type XSS (cross-site scripting) ne marcheront pas puisqu’on a utilisé htmlentities()


