diff options
Diffstat (limited to 'articles/modifarticle.php')
| -rw-r--r-- | articles/modifarticle.php | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/articles/modifarticle.php b/articles/modifarticle.php new file mode 100644 index 0000000..e8cc827 --- /dev/null +++ b/articles/modifarticle.php | |||
| @@ -0,0 +1,111 @@ | |||
| 1 | <?php | ||
| 2 | // PAGE SÉCURISÉE ! impossible de la voir si la variable $_SESSION['mdpvalide'] ne vaut pas 1 | ||
| 3 | |||
| 4 | session_start(); | ||
| 5 | if (isset ($_SESSION["mdpvalide"])) | ||
| 6 | { | ||
| 7 | if($_SESSION["mdpvalide"]) // booléen, test si ça vaut 1 | ||
| 8 | {} // dans ce cas on fait rien et on laisse php lire la suite | ||
| 9 | else | ||
| 10 | { | ||
| 11 | header('Location: ../connexion.php'); | ||
| 12 | exit (); | ||
| 13 | // exit() sert à interrompre php qui n'a alors surtout pas besoin d'aller jusqu'en bas de la page | ||
| 14 | } | ||
| 15 | } | ||
| 16 | else | ||
| 17 | { | ||
| 18 | header('Location: ../connexion.php'); | ||
| 19 | exit (); | ||
| 20 | } | ||
| 21 | |||
| 22 | |||
| 23 | // connexion à la base de données | ||
| 24 | include("../connexionbase.php"); | ||
| 25 | |||
| 26 | |||
| 27 | // récupérer les POST, compléter la base et uploader des photos | ||
| 28 | if (isset ($_FILES['photo'])) | ||
| 29 | { | ||
| 30 | if ($_FILES['photo']['error'] == 0) | ||
| 31 | { | ||
| 32 | // vérification de l'extension | ||
| 33 | $infophoto = pathinfo ($_FILES['photo']['name']); // pathinfo renvoie un tableau, qui contient notamment l'extension du fichier | ||
| 34 | $extautorisées = array ('jpg', 'jpeg', 'png', 'gif', 'JPG', 'JPEG', 'PNG', 'GIF'); | ||
| 35 | if (in_array ($infophoto['extension'], $extautorisées)) // on compare l'extension dans le tableau avec les extensions qu'on a choisi | ||
| 36 | { | ||
| 37 | // on récupère la variable $nom | ||
| 38 | $nom = basename ($_FILES['photo']['name']); | ||
| 39 | |||
| 40 | // vérification et formatage du nom du fichier | ||
| 41 | // supprimer les accents, problème: la méthode avec la fonction strstr marche mal avec l'UTF-8, | ||
| 42 | // on préfèrera celle-ci qui utilise str_replace et qui marche mieux (mais pas avec les majuscules accentuées): | ||
| 43 | $nom = str_replace( | ||
| 44 | array('à','â','ä','á','ã','å','î','ï','ì','í','ô','ö','ò','ó','õ','ø','ù','û','ü','ú','é','è','ê','ë','ç','ÿ','ñ'), | ||
| 45 | 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'), | ||
| 46 | $nom); | ||
| 47 | // minuscules | ||
| 48 | $nom = mb_strtolower($nom, 'UTF-8'); | ||
| 49 | $infophoto['extension'] = mb_strtolower($infophoto['extension'], 'UTF-8'); | ||
| 50 | // ce qui n'est pas une lettre ou un chiffre est remplacé par un tiret, y compris les espaces | ||
| 51 | $nom = preg_replace('/([^.a-z0-9]+)/i', '-', $nom); | ||
| 52 | |||
| 53 | // modification de l'image | ||
| 54 | if (move_uploaded_file ($_FILES['photo']['tmp_name'], '/var/www/lelionetlecolibri.ordipolo.fr/articles/' . $nom)) | ||
| 55 | // on doit pouvoir écrire dans le dossier d'arrivée (mettre le chemin absolu) et dans /tmp | ||
| 56 | // pour permettre à PHP l'écriture et la traversée du dossier, taper: sudo chmod 733 /var/www/dossier/qu'on/veut | ||
| 57 | { | ||
| 58 | // nom de la miniature | ||
| 59 | $mini_nom = "mini_" . $nom; | ||
| 60 | |||
| 61 | $requête = $base->prepare('UPDATE articles SET nomphoto = :photo, miniature = :mini WHERE id = :li'); | ||
| 62 | $requête->execute(array( | ||
| 63 | 'photo' => $nom, | ||
| 64 | 'mini' => $mini_nom, | ||
| 65 | 'li' => $_POST['ligne'] | ||
| 66 | )); | ||
| 67 | |||
| 68 | // création d'une miniature | ||
| 69 | include("miniatures.php"); | ||
| 70 | |||
| 71 | header('Location: ../administration.php?nouvarticle=6'); // succès, move_uploaded_file renvoie la valeur TRUE | ||
| 72 | exit (); | ||
| 73 | } | ||
| 74 | else // echec à l'enregistrement, la fonction renvoie FALSE | ||
| 75 | { | ||
| 76 | header('Location: ../administration.php?nouvarticle=4'); | ||
| 77 | exit (); | ||
| 78 | } | ||
| 79 | } | ||
| 80 | else // mauvais format | ||
| 81 | { | ||
| 82 | header('Location: ../administration.php?nouvarticle=3'); | ||
| 83 | exit (); | ||
| 84 | } | ||
| 85 | } | ||
| 86 | else | ||
| 87 | { | ||
| 88 | header('Location: ../administration.php?nouvarticle=7'); | ||
| 89 | exit (); | ||
| 90 | } | ||
| 91 | } | ||
| 92 | elseif ($_POST['titre'] != '') // il faut au moins mettre un titre | ||
| 93 | { | ||
| 94 | // modification du texte | ||
| 95 | echo $_POST['ligne']; | ||
| 96 | |||
| 97 | $requête = $base->prepare('UPDATE articles SET nomarticle = :tit, contenu = :cont WHERE id = :li'); | ||
| 98 | $requête->execute(array( | ||
| 99 | 'tit' => $_POST['titre'], | ||
| 100 | 'cont' => $_POST['article'], | ||
| 101 | 'li' => $_POST['ligne'] | ||
| 102 | )); | ||
| 103 | |||
| 104 | header('Location: ../administration.php?nouvarticle=6'); | ||
| 105 | exit (); | ||
| 106 | } | ||
| 107 | else // pas de photo ni titre | ||
| 108 | { | ||
| 109 | header('Location: ../administration.php?nouvarticle=1'); | ||
| 110 | } | ||
| 111 | ?> | ||
