J'ai ecris une petite page php afin d'uploader des fichiers vers mon site de blague (il fonctionne plutot bien). Afin de l'améliorer j'aimerais ajouter deux autres fonctions au script.
1 - j'ai une variable $rep qui indique le répertoire ou l'on va "deposer" le fichier. J'aimerais ajouter un test ou le script va créer le répertoire si celui n'existe pas.
2 - j'aimerais renommer le fichier tout en gardant l'extension du fichier. Par exemple si on upload le fichier "il etait une fois.pps", le fichier sera automatiquement renommer en "numero.pps". Le "numero" correspondra a la valeur de l'enregistrment de la colonne NUMERO_BLAGUE que l'on insere juste apres.
Voici mon script :
<?php
echo" v1.0<br>";
$titre=$_POST['titre'];
if ($_POST['titre']){
$note=$_POST['titre'];
echo "titre = $titre<br>";
}else{
echo "La variable titre n'a pas été saisie<BR>";
}
if ($_POST['nature']){
$nature=$_POST['nature'];
echo "Nature = $nature<br>";
}else{
echo "La variable Nature n'a pas été saisie<BR>";
}
if ($_POST['note']){
$note=$_POST['note'];
echo "note = $note<br>";
}else{
echo "La variable note n'a pas été saisie<BR>";
}
if ($_FILES['sourcefile']['name']){
$sourcefile=$_FILES['sourcefile']['name'];
$sourcefile_tmp=$_FILES['sourcefile']['tmp_name'];
echo "sourcefile = $sourcefile<br>";
echo "sourcefile_tmp = $sourcefile_tmp<br>";
}else{
echo "La variable sourcefile n'a pas été saisie<BR>";
}
$ftp_server="monsiteamoi";
$ftp_user_name="mon_user";
$ftp_user_pass="mot_de_passe";
$mysql_nom_de_la_base="mon_site";
$mysql_user="mon_user";
$mysql_paswd="mot_de_passe";
if ($sourcefile == ""){
echo "Pas de fichier";
die;
}
$conn_id = ftp_connect("$ftp_server");
$login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass");
// verification de la connexion
if ((!$conn_id) || (!$login_result)) {
echo "La connexion FTP a echoue!";
echo "Tentative de connexion à $ftp_server avec $user";
die;
} else {
echo "Connecte à $ftp_server<br>";
}
//calcul du nom du répertoire en fonction de la date du jour
$rep=date("ym");
//calcul de la date
$jour = date("Y-m-d");
// telechargement d'un fichier
<---- J'aimerais ajouter ici le test pour la création du répertoire et renommer le fichier
$destination_file="/srv/www/htdocs/blague/$rep/$sourcefile";
if (ftp_put($conn_id, "$destination_file", "$sourcefile_tmp", FTP_BINARY))
{
echo "Telechargement de $sourcefile en $destination_file<br>\n";
echo "Tentative de mise à jour de la base<br>\n";
// connection à la base
$link = mysql_connect("localhost", "$mysql_user", "$mysql_paswd",false) or die ("<b>Impossible de se connecter a la base</b><br/>\n");
mysql_select_db ("$mysql_nom_de_la_base",$link) or die ("<b>Impossible d'accèder à la base de données\n");
$requete="INSERT INTO BLAGUE.BLAGUE ( NUMERO_BLAGUE , TITRE_BLAGUE ,DATE_BLAGUE , FICHIER_BLAGUE ,TYPE_BLAGUE , NOTE_BLAGUE ,MAIL) VALUES ( NULL ,'$titre','$jour','$rep/$sourcefile' ,'$nature','$note','N') ;";
$result = mysql_query ("$requete",$link) or die ("<b>La requète $requete pour ".$link." a échoué</b><br/>\n");
echo "<a href=\"index.html\">retour au menu</a><br>";
}else {
echo "La copie du fichier $sourcefile n'a pas réussi...\n";
}
// fermeture de la connexion FTP.
ftp_quit($conn_id);
?>
A noter : la colonne NUMERO_BLAGUE est auto-incrémenté.Je ne sais pas comment on peut faire cela.
Pourriez vous m'aider ?
Par avance merci.
Sébastien