J'aimerais sécuriser mon espace admin

Fermé
Utilisateur anonyme - Modifié le 10 nov. 2019 à 19:09
jordane45 Messages postés 38299 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 novembre 2024 - 10 nov. 2019 à 19:56
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 !
A voir également:

1 réponse

jordane45 Messages postés 38299 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 novembre 2024 4 704
10 nov. 2019 à 19:14
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 :

https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

https://forums.commentcamarche.net/forum/affich-37584947-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



0
Utilisateur anonyme
10 nov. 2019 à 19:29
ok merci de ton aide !
0
Utilisateur anonyme
10 nov. 2019 à 19:30
j'ai deja afficher les erreurs php dans un fichier connexion.php
0
jordane45 Messages postés 38299 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 novembre 2024 4 704 > Utilisateur anonyme
10 nov. 2019 à 19:56
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...
0