J'aimerais sécuriser mon espace admin

Messages postés
56
Date d'inscription
mercredi 30 mai 2018
Statut
Membre
Dernière intervention
15 novembre 2019
-
Bonjour, j'aimerais savoir comment je puis-je faire pour sécuriser mon espace admin en PHP j'ai essayé quelque chose mais cela ne marche pas je vous donne mon code PHP merci d'avance pour toute aide ! Ah oui j'ai ajouter une colonne dans ma base de donnée nommé admin !

<?php
session_start();
include "connexion.php";
$connexion = connexionBd();

if (isset($_SESSION['admin']) != 1) {
    echo '<script>alert("Vous n avez pas les privilèges nécessaires pour accéder à cette page");</script>';
    header("Location: ../index.php");
    exit();
} else {
    if (isset($_POST['admin'])) {
        $designation = htmlspecialchars($_POST['designation']);
        $description = htmlspecialchars($_POST['description']);
        $categorie = htmlspecialchars($_POST['categorie']);
        $image = htmlspecialchars('images/magasin/' . $_FILES['image']['name']);
        $prix = htmlspecialchars($_POST['prix']);
        $TVA = htmlspecialchars($_POST['TVA']);
        if (!empty($_POST['designation']) and ! empty($_POST['description']) and ! empty($_POST['categorie']) and ! empty($_POST['prix']) and ! empty($_POST['TVA'])) {
            $insert = $connexion->prepare("INSERT INTO article(id_categorie, designation, prix, tva, description, img_article) VALUES(?, ?, ?, ?, ?, ?)");
            $insert->execute(array($categorie, $designation, $prix, $TVA, $description, $image));
            $mesage = "L'article a bien été envoyé !";
        }


EDIT : Ajout du langage dans les balises de code pour avoir la coloration syntaxique !
Afficher la suite 

1 réponse

Messages postés
26804
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 novembre 2019
1888
0
Merci
Bonjour,

Comme déjà dit dans ta précédente question :


Il y a plusieurs soucis dans ton code.
- Déjà.. la fonction htmlspecialchar ne s'utiliser QUE pour l'affichage et en aucun cas avant d'insérer les données en BDD.

- Il faut activer l'affichage des erreurs PHP, activer les erreurs PDO et placer chaque requête dans un bloc try/catch

Je t'invite à lire ET A APPLIQUE le contenu de ces LIENS :

http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code



Et concernant ton code...
if (isset($_SESSION['admin']) != 1) {

Le !=1 s'applique au ISSET ... pas au contenu de la variable de SESSION.

Si tu veux vérifier que la variable existe et n'est pas égale à "1"
le mieux serait :
//on récupère PROPREMENT la variable AVANT de l'utiliser (voir les liens que je t'ai donné )
$admin = !empty($_SESSION['admin']) ? $_SESSION['admin'] : NULL;

if($admin != 1 ) {
  //.. le reste de ton code



Modaak
Messages postés
56
Date d'inscription
mercredi 30 mai 2018
Statut
Membre
Dernière intervention
15 novembre 2019
-
ok merci de ton aide !
Modaak
Messages postés
56
Date d'inscription
mercredi 30 mai 2018
Statut
Membre
Dernière intervention
15 novembre 2019
-
j'ai deja afficher les erreurs php dans un fichier connexion.php
jordane45
Messages postés
26804
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 novembre 2019
1888 > Modaak
Messages postés
56
Date d'inscription
mercredi 30 mai 2018
Statut
Membre
Dernière intervention
15 novembre 2019
-
Oui.. et bien...
Il reste l'activation des erreurs PDO
L'utilisation des TRY/CATCH
La récupération PROPRE des variables AVANT de les utiliser
La fonction htmlspecialchars qui n'a rien à faire ici dans ton code
...
bref.. quelques petites choses à corriger donc...
Commenter la réponse de jordane45