Upload de fichier grâce à un formulaire

Upload de fichier grâce à un formulaire

Il vous arrive souvent de vouloir uploader un fichier sur votre serveur grâce a un formulaire. Nous vous apportons aujourd’hui une solution simple a adapté dans vos pages. il s’agit d’un script php à placer dans le code de traitement de votre formulaire.

Ouvrez un éditeur de texte et collez le code suivant dessus. Pensez à enregistrer le fichier sous le nom suivant : uploadImage.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
function get_extension($nom) {
$nom = explode(".", $nom);
$nb = count($nom);
return strtolower($nom[$nb-1]);
}
$sortie=false;
$extensions_ok = array('jpg','jpeg','png');
$typeimages_ok = array(2,3);
$taille_ko = 3072;
$taille_max = $taille_ko*3072;
$dest_dossier = 'images/'; //nom du dossier ou vous allez stocké vos images
$dest_fichier="";

//**************************************
if(!$getimagesize = getimagesize($_FILES['photo']['tmp_name'])) {
$erreurs[] = "Le fichier n'est pas une image valide.";
}
//*******************************
else {
if( (!in_array( get_extension($_FILES['photo']['name']), $extensions_ok ))or (!in_array($getimagesize[2], $typeimages_ok )))
{
$erreurs[] = 'Veuillez sélectionner un fichier de type Jpeg ou Png !';
}
else{
//******************************
// on vérifie le poids de l'image
if( file_exists($_FILES['photo']['tmp_name']) and filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreurs[] = "Votre fichier doit faire moins de $taille_ko Ko !";
}
else{

$dest_fichier = basename($_FILES['photo']['name']);
$dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// un chtit regex pour remplacer tous ce qui n'est ni chiffre ni lettre par "_"
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
// pour ne pas écraser un fichier existant
$dossier=$dest_dossier;
while(file_exists($dossier . $dest_fichier)) {
$dest_fichier = rand().$dest_fichier;

}
//********************************
if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $dest_fichier)) {
$valid[] = "Image uploadé avec succés (<a href='".$dossier . $dest_fichier."'>Voir</a>)";
}
else {
$erreurs[] = "Impossible d'uploader le fichier.<br />Veuillez vérifier que le dossier ".$dossier ;
}
}
}
}

if(@$erreurs[0]!=""){
print("<div class="erreurFormulaire">
<div class="
erreurEntete"> un probleme est survenu lors de l'upload de l'image</div><div class="erreurMessage"> ");

for($i=0;$i<5;$i++){
if($erreurs[$i]=="")
break;
else echo "<li>".$erreurs[$i]."</li>"; $sortie=true;}
print(" </div></div>");
}
?>

Créer un deuxième fichier que vous nommerez index.php. Nous allons implémenter un exemple entier.

1- Création du formulaire

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE HTML>
<html>
<head><title> upload de fichier</title>
</head>
<body>
<form method="POST" name="formulaire" enctype="multipart/form-data">

<div><h5> Ins&eacute;rer une image </h5>

<input type="file" name="photo" id="photo" /> </div>

<div><input type="submit" class="btn" value="envoyer" /></div>
<input type="hidden" value="b" name="env"/>
</form>

</body>
</html>

Ce code permettra d’afficher un formulaire avec un champ qui permet d’uploader les fichiers à partir de notre machine.

enctype= »multipart/form-data » active la fonction d’upload du formulaire.

Après cela, il nous faudra implémenter le code de traitement des informations du formulaire. Pour cela,  nous allons ecrire ce code tout en haut de notre fichier index.php

2- traitement du formulaire

1
2
<?php
if(isset($_POST["env"])){ 

on vérifie d’abord si le formulaire à été validé grâce a bouton. ensuite on récupère les infos de l’images comme suit

1
 $logo=$_FILES['photo']['name'];

$logo récupère le nom de l’image. On vérifi si le $logo n’est pas vide. Car si c’est le cas ca veut dire qu’on a rien fait. Dans le cas contraire, il contiendra une information qui nous permettra de faire appel à notre code d’upload qui est uploadImage.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if ($logo != "") {

require "uploadImage.php";
if ( $sortie == false ) {

$logo = $dest_dossier . $dest_fichier;

}
else { $logo="notdid"; }
}
if($logo != "notdid" ) {
echo "upload reussi!!!";

}
else{
echo "Echec. On recommence!!!";
}
}

?>

3- Code complet de la page Index.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
if(isset($_POST["env"])){
$logo=$_FILES['photo']['name'];

if($logo!=""){
require "uploadImage.php";
if($sortie==false){$logo=$dest_dossier . $dest_fichier;}
else {$logo="notdid";}
}
if($logo!="notdid"){
echo "upload reussi!!!";

}
else{
echo"recommence!!!";
}
}

?>
<!DOCTYPE HTML>
<html>
<head><title> upload de fichier</title>
</head>
<body>
<form method="POST" name="formulaire" enctype="multipart/form-data">

<div><h5> Ins&eacute;rer une image </h5> <input type="file" name="photo" id="photo" /> </div>

<div><input type="submit" class="btn" value="envoyer" /></div>
<input type="hidden" value="b" name="env"/>
</form>

</body>
</html>

 

Pensez à créer un dossier « images » qui réceptionnera vos images ainsi uploader. Au final, vous devriez avoir

  1. index.php
  2. uploadImage.php
  3. un dossier images
Générer un flux RSS

Générer un flux RSS

Un flux RSS est une ressource Web dont le contenu est produit automatiquement (sauf cas exceptionnels) en fonction des mises à jour d’un site Web. Les flux RSS sont souvent utilisés par les sites d’actualité et les blogs pour présenter les titres des dernières informations consultables en ligne. (suite…)

Créer un sitemap

Créer un sitemap

Nous allons apprendre un script très simple capable de générer un sitemap dynamique (qui évolue au fil du temps suivants les changements intervenu sur le site).

taper le code suivant sur votre editeur de texte préferré :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
// On indique que c'est du xml
header("Content-type: application/xml");
//Début du fichier xml
echo "<?xml version="1.0" encoding="UTF-8"?>\n
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">\n\n";

//fonction pour récupérer le nom de domaine du site
function url_actuelle()
{
return "http://" . $_SERVER["SERVER_NAME"];
}
$url = (url_actuelle());

// on se connecte à la base de données
mysql_connect('localhost','nom d'utilisateur','mot de passe');
mysql_select_db('nom de votre base de donnée');

//On selectionne les données
$result = mysql_query("SELECT page_nom FROM pages ORDER BY page_id asc");

while($affiche = mysql_fetch_array($result))
{
$affiche['page_nom']=str_replace(" ","_",$affiche['page_nom']);
$affiche['page_nom']=str_replace("&eacute;","e",$affiche['page_nom']);
echo '<url>
<loc>'.$url.'/'.$affiche['page_nom'].'</loc>
<lastmod>2011-10-25</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>';
}
// Fermeture de la connexion à la base de données
mysql_close();
//Fin du fichier xml
echo '</urlset>';
?>{=

il faut maintenant changer certaines parties. Dans un premier temps, pensez a changer les informations de connexion vers la base de données et les champs de la table et mettez les vôtres.

1
2
3
// on se connecte à la base de données
mysql_connect('localhost','nom d'utilisateur','mot de passe');
mysql_select_db('
nom de votre base de donnée');

Ensuite, changer aussi le nom des tables et adaptée aussi a ceux qui vous correspondent.

1
2
3
4
5
6
7
8
$result = mysql_query("SELECT page_nom FROM pages ORDER BY page_id asc");

while($affiche = mysql_fetch_array($result))
{
$affiche['page_nom']=str_replace(" ","_",$affiche['page_nom']);
$affiche['page_nom']=str_replace("&eacute;","e",$affiche['page_nom']);
echo '<url>
<loc>'
.$url.'/'.$affiche['page_nom'].'</loc>

il ne reste plus qu’a enregistrer le fichier au format « sitemap.xml » et de la placer à la racine de votre site. et le tour est joué!!!