CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PHP] Suppression ou modification d'un sujet créé

JoIie
JoIie
Niveau 10
11 mars 2015 à 19:28:01

Bonsoir,

Je vais essayer d'être le plus explicite possible :

https://image.noelshack.com/fichiers/2015/11/1426097228-capture1.png

Le formulaire ci-dessus permet de créer en quelques sorte un "sujet". Ce sujet sera créé par l'utilisateur "Mitsukk" (comme on peut le voir en haut dans l'image).

Une fois le sujet créer, il apparait dans une nouvelle page, celle-ci :

https://image.noelshack.com/fichiers/2015/11/1426097230-capture2.png

Maintenant, j'aimerais pouvoir faire en sorte que le créateur de ce sujet (ici, Mitsukk donc) puisse modifier ou supprimer son sujet, comme là par exemple :

https://image.noelshack.com/fichiers/2015/11/1426098030-capture2.png

J'ai réussi à créer une page de modification des informations personnels des différents utilisateurs inscrits dans mon site mais je n'ai pas d'idée à comment associé un "sujet" à un "utilisateur" pour qu'il puisse le supprimer ou le modifier (évidemment il ne pourra pas modifier les sujets créés par d'autres utilisateurs).

Merci de votre aide

Capote
Capote
Niveau 20
11 mars 2015 à 21:01:34

Je ne suis encore que débutant en php mais je dirai qu'un simple test If suffit :-(

Si l'utilisateur connecté = l'utilsateur Mitsukk alors j'affiche le code de modification de ton sujet

Bon après niveau sécurité et tout jsais pas trop ce que ca donne mais ta déjà une piste :hap:

JoIie
JoIie
Niveau 10
11 mars 2015 à 23:22:55

Mais il peut y avoir plusieurs type de compte qui peuvent créer ses "sujet", si j'utilise ta méthode, seul "Mitsukk" pourra modifier ou supprimer toutes les courses non ?

deepblue
deepblue
Niveau 16
11 mars 2015 à 23:37:07

Tes utilisateurs sont disposés dans une table de ta base de données avec très certainement un ID.
Idem pour tes sujets, ils sont diposés dans une table avec eux aussi un ID.

Tu travailles avec une base de données relationnelle, donc tu te doutes bien que tu peux créer des relations entre les données. Ajoutes un champ "user_id" dans ta table de sujet, dans lequel tu placeras, pour chaque sujet, l'ID de l'utilisateur qui l'a créé.

Tu auras donc relié les sujets à leur auteur respectif et tu pourras savoir si la personne connectée est l'auteur ou pas du sujet que tu affiches.

JoIie
JoIie
Niveau 10
11 mars 2015 à 23:47:37

Effectivement, j'ai bien deux tables.

Une table "inscription" pour inscrire un utilisateur :

https://image.noelshack.com/fichiers/2015/11/1426113554-capture.png

Une table "organiser" pour l’insertion des "sujet" (ce sont des courses à pied) :

https://image.noelshack.com/fichiers/2015/11/1426113557-capture2.png

En gros dans ma table "organiser" (celle qui me permet le stocker les "sujet" don) je rajoute un champ "user_id" ? Si oui comment je rempli ce champ ? Lors de la création du sujet ?

tzrgus2
tzrgus2
Niveau 12
12 mars 2015 à 00:11:20

Lorsqu 'un formulaire est soumis, l'utilisateur est authentifier.
Tu as donc lancer une session_start en connexion dans lequel tu stock par exemple $_SESSION['id'];.
Lors de l'envoi de ton formulaire de création de sujet tu récupère la session_id et tu l'enregistre dans le id_user de ta bdd de sujet.
Ainsi il sera plus aisé de récupérer cette id lors pour permettre le changement ou la suppression du sujet.

Valaire
Valaire
Niveau 5
12 mars 2015 à 01:17:19

Après au niveau du sql on tape au niveau de l'update set et du delete from pour les deux opérations réalisables sur ton site

GirlsDeMo
GirlsDeMo
Niveau 38
12 mars 2015 à 10:46:12

Dans ta table "organiser" tu créer une colonne "user_id", je suppose que pour te connecter tu utilises les sessions. Dans cette session tu stock l'id de l'utilisateur qui se trouve dans la table "inscription". Pour le reste je vais partir sur l'idée que tu n'utilises pas d'ajax, pas de framework.

  • Pour la création d'un sujet dans ta requete sql tu remplis la colonne user_id via l'id qui se trouve dans la session.
  • Pour l'affichage je suppose que tu fais une boucle avec le resultat de ta requete sql en plus de ca tu rajoute à chaque ligne comme pour "detail" un lien "supprimer" ce lien tu lui donnes une route de type sujet/delete?id=*ici t'insère l'id du sujet via ta boucle et ta requete sql* (n'oublie pas de déclarer la route sujet/delete dans ton routeur). Toujours dans ta boucle tu rajoutes une condition d'affichage de ce lien que si le user_id du sujet est équivalent à celui de ta session, ca donnerait grosso-merdo un truc comme ça:
 if($sujet_id == $_SESSION["id"]){
 '<a href="sujet/delete?id="'.$sujet_id.'">Supprimer</a>'
}
  • Pour la suppression dans le fichier qui les actions de la route sujet/delete tu fais une verification pour savoir si l'utilisateur est connecté et si sa session_id n'est pas vide, auquel cas tu lui renvois sur une autre page. Deuxième vérification tu vérifies si le user_id associé au sujet est le même que celui de la session, pour cela tu récupère l'id dans l'url grâce à un $_GET["id"] et tu fais un SELECT avec comme condition dans le where user_id = $_SESSION['id'] AND id=$_GET["id"] . Si la requête ne retourne rien encore une fois on le dirige vers une autre page sinon tu fais ton DELETE normalement avec ton id dans l'url.

Voilà j'espère t'avoir aider après je ne sais pas comment tu codes, si tu utilises un framework, si tu code en mvc... à toi d'adapter le code.

JoIie
JoIie
Niveau 10
13 mars 2015 à 08:13:16

Merci pour ces explications, j'y travail et je fournis mes résultats si je coince encore ...

JoIie
JoIie
Niveau 10
13 mars 2015 à 08:31:16

C'est mon premier site WEB, je le réalise pour un projet d'étude (2ème année de BTS IRIS).

Je code avec du HTML, CSS, PHP, JavaScript et j'utilise SQL pour la base de donnée.

Pour rédiger mon code j'utilise seulement Sublime Text.

JoIie
JoIie
Niveau 10
13 mars 2015 à 10:40:52

Je bloque à la première étape.

J'ai bien créé une colonne "organisateur" dans ma table "organiser" qui comprendra le pseudo du créateur du "sujet".

L’insertion d'un "sujet" dans ma table se fait donc à l'aide de ce formulaire :

https://image.noelshack.com/fichiers/2015/11/1426097228-capture1.png

Mon code qui me permet d’inscrire les données écrites dans ce formulaire est celui-ci :

https://wall.deblan.org/x1d68/php/1/

J'utilise donc seulement des $_POST.

Pour remplir mon champ "organisateur" de ma table "organiser", comment je récupère le pseudo de l'organisateur ?

EDIT : Autant pour moi j'ai réussi :

$organisateur = ($_SESSION['pseudo']);

Message édité le 13 mars 2015 à 10:45:18 par JoIie
JoIie
JoIie
Niveau 10
15 mars 2015 à 18:24:11

Merci pour votre aide, ça donne cela :

https://image.noelshack.com/fichiers/2015/11/1426439771-tableau-courses.png

On peut voir que l'organisateur connecté ne peut ni modifier ou supprimer les "sujets" d'autres organisateur.

J'arrive à supprimer un sujet à l'aide de ce code :

https://wall.deblan.org/x1d6b/php/1/

Le truc est que je n'arrive pas à insérer un message de confirmation de suppression, le bouton de suppression est un href, pas un submit :

echo '<a href="supprimer.php?id_course='.$id_course.'">Supprimer</a>';

Comment l'insérer dans une condition ?

Je ne sais pas si je suis claire dans ma demande ...

Tanil
Tanil
Niveau 46
18 mars 2015 à 09:23:45

Là c'est du côté du javascript qu'il faut voir. Le plus simple consiste à avoir un lien du genre :

echo '<a href="supprimer.php?id_course='.$id_course.' onclick="return confirm('Êtes-vous sûr de vouloir supprimer ?')">Supprimer</a>';

Là une popup s'ouvre et te demande une confirmation.

Et ton code de suppression est mauvais et non sécurisé. Tu assignes un get peut-être inexistant à une variable. Et il faut que tu mettes ton code dans un if qui vérifie si tu es bien le créateur du sujet, comme ça :

if(isset($_GET['id_course']))
{
---$id_course = $_GET['id_course'];
---$infos_sujet = "SELECT * FROM 'organiser' WHERE id_course = $id_course";
---$sujet = // Traitement fetch et tout ça

---if($sujet['id_user'] == $_SESSION['id_user'])
---{
------$sql = "DELETE FROM `bdd`.`organiser` WHERE id_course = $id_course";
------$prepa = mysqli_prepare($connexion, $sql); //Prépare la requète.
------$prepa->execute(); //Execute la requête.
---}
---else
---{
------echo "Vous n'êtes pas le créateur du sujet, allez vous faire foutre, espèce de petit hacker de 10 piges.";
---}
}
else
{
---echo "Il n'y a rien à supprimer.";
}

(désolé pour l'indentation foireuse, c'est jvc... - édit : j'ai remplacé les espaces par des tirets...)

Je renommerais aussi les tables. "Organiser" alors que tu y enregistres des sujets, ce n'est pas logique. Pareil pour "inscription" qui devrait devenir "utilisateur", "user", "membre", un truc du style. D'ailleurs les verbes à l'infinitif sont utilisés généralement pour établir des liens entre des tables tandis que celles-ci sont appelés par des mots.

Message édité le 18 mars 2015 à 09:28:00 par Tanil
deepblue
deepblue
Niveau 16
18 mars 2015 à 11:39:24

https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware