summaryrefslogtreecommitdiff
path: root/articles/modifarticle.php
blob: e8cc82781bf23cd5f55790828027ad69495bf848 (plain)
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
// PAGE SÉCURISÉE ! impossible de la voir si la variable $_SESSION['mdpvalide'] ne vaut pas 1

session_start();
if (isset ($_SESSION["mdpvalide"]))
{
    if($_SESSION["mdpvalide"]) // booléen, test si ça vaut 1
    {} // dans ce cas on fait rien et on laisse php lire la suite
    else
    {
        header('Location: ../connexion.php');
        exit ();
        // exit() sert à interrompre php qui n'a alors surtout pas besoin d'aller jusqu'en bas de la page
    }
}
else
{
    header('Location: ../connexion.php');
    exit ();
}


// connexion à la base de données
include("../connexionbase.php");


// récupérer les POST, compléter la base et uploader des photos
if (isset ($_FILES['photo']))
{
	if ($_FILES['photo']['error'] == 0)
	{
		// vérification de l'extension
		$infophoto = pathinfo ($_FILES['photo']['name']); // pathinfo renvoie un tableau, qui contient notamment l'extension du fichier
		$extautorisées = array ('jpg', 'jpeg', 'png', 'gif', 'JPG', 'JPEG', 'PNG', 'GIF');
		if (in_array ($infophoto['extension'], $extautorisées)) // on compare l'extension dans le tableau avec les extensions qu'on a choisi
		{
			// on récupère la variable $nom
			$nom = basename ($_FILES['photo']['name']);
			
			// vérification et formatage du nom du fichier
			// supprimer les accents, problème: la méthode avec la fonction strstr marche mal avec l'UTF-8,
			// on préfèrera celle-ci qui utilise str_replace et qui marche mieux (mais pas avec les majuscules accentuées):
			$nom = str_replace(
				array('à','â','ä','á','ã','å','î','ï','ì','í','ô','ö','ò','ó','õ','ø','ù','û','ü','ú','é','è','ê','ë','ç','ÿ','ñ'),
				array('a','a','a','a','a','a','i','i','i','i','o','o','o','o','o','o','u','u','u','u','e','e','e','e','c','y','n'),
				$nom);
			// minuscules
			$nom = mb_strtolower($nom, 'UTF-8');    
			$infophoto['extension'] = mb_strtolower($infophoto['extension'], 'UTF-8');
			// ce qui n'est pas une lettre ou un chiffre est remplacé par un tiret, y compris les espaces
			$nom = preg_replace('/([^.a-z0-9]+)/i', '-', $nom);
			
			// modification de l'image
			if (move_uploaded_file ($_FILES['photo']['tmp_name'], '/var/www/lelionetlecolibri.ordipolo.fr/articles/' . $nom))
			// on doit pouvoir écrire dans le dossier d'arrivée (mettre le chemin absolu) et dans /tmp
			// pour permettre à PHP l'écriture et la traversée du dossier, taper: sudo chmod 733 /var/www/dossier/qu'on/veut
			{
				// nom de la miniature
				$mini_nom = "mini_" . $nom;
				
				$requête = $base->prepare('UPDATE articles SET nomphoto = :photo, miniature = :mini WHERE id = :li');
				$requête->execute(array(
					'photo' => $nom,
					'mini' => $mini_nom,
					'li' => $_POST['ligne']
					));
				
				// création d'une miniature
				include("miniatures.php");
				
				header('Location: ../administration.php?nouvarticle=6'); // succès, move_uploaded_file renvoie la valeur TRUE
				exit ();
			}
			else // echec à l'enregistrement, la fonction renvoie FALSE
			{
				header('Location: ../administration.php?nouvarticle=4');
				exit ();
			}
		}
		else // mauvais format
		{
			header('Location: ../administration.php?nouvarticle=3');
			exit ();
		}
	}
	else
	{
		header('Location: ../administration.php?nouvarticle=7');
		exit ();
	}
}
elseif ($_POST['titre'] != '') // il faut au moins mettre un titre
{
	// modification du texte
	echo $_POST['ligne'];
	
	$requête = $base->prepare('UPDATE articles SET nomarticle = :tit,  contenu = :cont WHERE id = :li');
	$requête->execute(array(
		'tit' => $_POST['titre'],
		'cont' => $_POST['article'],
		'li' => $_POST['ligne']
		));
	
	header('Location: ../administration.php?nouvarticle=6');
	exit ();
}
else // pas de photo ni titre
{
    header('Location: ../administration.php?nouvarticle=1');
}
?>