IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Correspondance id membre et id œuvre [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Par défaut Correspondance id membre et id œuvre
    Bonjour à tous et à toutes,

    Je suis actuellement sur la création d'un espace de modification d'œuvres pour les membres qui en publier, et modifier les informations en cas d'erreur ou de changement, etc...

    En travaillant sur ce système, je me suis rendu compte que n'importe quel utilisateur peut changer le numéro d'id de l'œuvre sur une oeuvre qui ne lui appartient pas.

    J'aurais voulu savoir quel moyen y a t'il pour sécurisé cet url pour faire en sorte que si l'id de la session membre ne correspond pas à l'id de la session membre qui a poster l'oeuvre "x" n'est pas accès.

    Merci pour votre attention et votre aide.

  2. #2
    Membre expérimenté
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Par défaut
    Bonsoir,

    Cela dépend comment tu as organisé tes pages et ton code.

    Tu as fait une seule page pour la visualisation et la modification ?

    Comment le membre accède à la partie modification ?

    Natso

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    Bonjour,
    Dans ton cas, normalement on a 2 tables liées
    membres (id_membre)
    oeuvres(id_ouvre,id_membre)

    donc au chargement de la page, en récupérant l'id de l'oeuvre
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select id_membre as suis_auteur from oeuvres where id=(int)$_GET['id']
    puis on teste si l'oeuvre peut-être modifiée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     if (($_SESSION['id_membre'] != $row['suis_auteur'])  && ( $_SESSION['droits']!='admim'))
      throw('vous n''avez pas les droits pour modifier cette page');

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    qui dit "membre" dit connexion via login/pwd.
    A la connexion, on enregistre l'id_membre dans $_SESSION['id_membre'].

    Dans le formulaire de modification, on peut éventuellement aussi transmettre l'id_membre via un champ caché (hidden), puis au traitement, le comparer à $_SESSION['id_membre'].

    N.B. Mettre le formulaire en method="post" évite de montrer l'id dans l'URL.
    Dans 99% des cas (les utilisateurs "normaux"), cela suffit à éviter les tentations...

    Pour la modif. en BdD :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = "UPDATE ... WHERE id_oeuvre = '".$id_oeuvre."' AND id_membre = '".$_SESSION['id_membre']."'";

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Par défaut
    Bonjour à vous et merci à tous pour aide ,

    J'ai donc une seule page se nommant : publication, dans laquelle j'y ai rajouté un switch avec case : publier, selection, et modifier,

    la case sélection, va permettre au membre "x" de sélectionner une de ses œuvres, pour arriver dans le formulaire de modification.

    Si j'ai bien compris vos explication, je dois donc ajouté la requête dans case : modifier,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    case "selection":
     
    	 $artiste_id = $_SESSION['membre_id'];
    	 echo '<h3 class="textesimple">'."Séléctionnez une oeuvres".'</h3>';
    $reponse=$bdd->prepare('SELECT oeuvre_id, artiste_id, titre_oeuvre, description_oeuvre, image_oeuvre, oeuvre_categorie, oeuvre_style, date_crea FROM oeuvre_artiste WHERE artiste_id= :artiste_id');
    $reponse->bindValue(':artiste_id', $artiste_id, PDO::PARAM_INT);
    $reponse->execute();
     while ($data=$reponse->fetch()) { 
     
     echo '<div id="ficheartistegal"><a href="./publication.php?s='.stripslashes(htmlspecialchars($data['oeuvre_id'])).'&amp;action=modifier"><figure><img src="./images/oeuvres/'.$data['image_oeuvre'].'" class="imgavatargal" alt="oeuvres artiste" /><figcaption><p class="boutonlien">'.htmlspecialchars($data['titre_oeuvre']).'</p></figcaption></figure></a></div>';
     }
     $reponse->closeCursor();
     
    	 break;
    et donc pour case modifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    case "modifier":
    	 if ($oeuvre_id=0) {
    		 echo ''."Vous devez sélectionner une de vos oeuvres pour accéder à sa modification.".'';
    	 }
    
    $oeuvre_id = isset($_GET['s'])?(int) $_GET['s']:'';
    
    (ici la requête SELECT id_membre AS suis_auteur FROM oeuvres WHERE id=(int)$_GET['id'] etc.. )
    $query = $bdd->prepare('SELECT oeuvre_id, artiste_id, titre_oeuvre, description_oeuvre, image_oeuvre, oeuvre_categorie, oeuvre_style, date_crea FROM oeuvre_artiste WHERE oeuvre_id=:oeuvre_id');
    $query->bindValue(':oeuvre_id', $oeuvre_id, PDO::PARAM_INT);
            $query->execute();
            $data = $query->fetch();
    		?>
    		<form id="oeuvre_id" method="post" action="publication.php?action=modifier" enctype="multipart/form-data">';
    		
    		<p class="textesimple"><label for="imageoeuvre">Changer l'image : </label><input type="file" name="imageoeuvre" id="imageoeuvre"/>
    (max : 10 Mo)<br /><br /><label><input type="checkbox" name="delete" value="Delete"/>Supprimer l'image</label> actuel : <img src="./images/oeuvres/<?php echo $data['image_oeuvre'] ?>" class="imageoeuvre" alt="image"/></p>
    		
    		<p class="textesimple"><label for="titreoeuvre">Titre de l'oeuvre : </label><input type="text" name="titreoeuvre" id="titreoeuvre" value="<?php echo $data['titre_oeuvre'] ?>" /></p>
    		
    		<p class="textesimple"><label for="titreoeuvre">Description : </label><input type="text" name="descriptionoeuvre" id="descriptionoeuvre" value="<?php echo $data['description_oeuvre']?>"/></p>
    		
    		<div id="encpubldiv"><label for="categorie"><p class="textesimplesans">Catégorie : </label>
           <select name="oeuvre_categorie" id="categorie" value="<?php echo $data['oeuvre_categorie'] ?>">
    	      
    	 	   <option value="autre" <?php if("autre"==$data['oeuvre_categorie']){?> selected <?php } ?>>Autre...</option>
               <option value="bandedessine" <?php if("bandedessine"==$data['oeuvre_categorie']){?> selected <?php } ?>>Bande dessinée</option>
               <option value="peinture" <?php if("peinture"==$data['oeuvre_categorie']){?> selected <?php } ?>>Peinture</option>
               <option value="croquis" <?php if("croquis"==$data['oeuvre_categorie']){?> selected <?php } ?>>Croquis</option>
               <option value="dessin" <?php if("dessin"==$data['oeuvre_categorie']){?> selected <?php } ?>>Dessin</option>
    		   <option value="graphe" <?php if("graphe"==$data['oeuvre_categorie']){?> selected <?php } ?>>Graphe</option>
               
           </select></p></div>
    	   
    	   <div id="encpubldiv"><label for="style"><p class="textesimplesans">Style : </label>
           <select name="oeuvre_style" id="style" value="<?php echo $data['oeuvre_style'] ?>">
    		   <option value="autre" <?php if("autre"==$data['oeuvre_style']){?> selected <?php } ?>>Autre...</option>
               <option value="abstrait" <?php if("abstrait"==$data['oeuvre_style']){?> selected <?php } ?>>Abstrait</option>
    		   <option value="arturbain" <?php if("arturbain"==$data['oeuvre_style']){?> selected <?php } ?>>Art urbain</option>
    		   <option value="baroc" <?php if("baroc"==$data['oeuvre_style']){?> selected <?php } ?>>Baroc</option>
    		   <option value="cubisme" <?php if("cubisme"==$data['oeuvre_style']){?> selected <?php } ?>>Cubisme</option>
    		   <option value="dadaisme" <?php if("dadaisme"==$data['oeuvre_style']){?> selected <?php } ?>>Dadaisme</option>
    		   <option value="expressionnisme" <?php if("expressionnisme"==$data['oeuvre_style']){?> selected <?php } ?>>Expressionnisme</option>
    		   <option value="fauvisme" <?php if("fauvisme"==$data['oeuvre_style']){?> selected <?php } ?>>Fauvisme</option>
    		   <option value="futurisme" <?php if("futurisme"==$data['oeuvre_style']){?> selected <?php } ?>>Futurisme</option>
    		   <option value="gothisme" <?php if("gothique"==$data['oeuvre_style']){?> selected <?php } ?>>Gothisme</option>
    		   <option value="hyperrealisme" <?php if("hyperrealisme"==$data['oeuvre_style']){?> selected <?php } ?>>Hyperrealisme</option>
    		   <option value="impressionnisme" <?php if("impressionnisme"==$data['oeuvre_style']){?> selected <?php } ?>>Impressionnisme</option>
    		   <option value="rococo" <?php if("rococo"==$data['oeuvre_style']){?> selected <?php } ?>>Rococo</option>
    		   <option value="romantisme" <?php if("romantisme"==$data['oeuvre_style']){?> selected <?php } ?>>Romantisme</option>
    		   <option value="lettrisme" <?php if("lettrisme"==$data['oeuvre_style']){?> selected <?php } ?>>Lettrisme</option>
    		   <option value="modernisme" <?php if("modernisme"==$data['oeuvre_style']){?> selected <?php } ?>>Modernisme</option>
    		   <option value="naturalisme" <?php if("naturalisme"==$data['oeuvre_style']){?> selected <?php } ?>>Naturalisme</option>
    		   <option value="neoclassicisme" <?php if("neoclassicisme"==$data['oeuvre_style']){?> selected <?php } ?>>Néoclassicisme</option>
    		   <option value="neogothique" <?php if("neogothique"==$data['oeuvre_style']){?> selected <?php } ?>>Néogothique</option>
               <option value="pointillisme" <?php if("pointillisme"==$data['oeuvre_style']){?> selected <?php } ?>>Pointillisme</option>
    		   <option value="popart" <?php if("popart"==$data['oeuvre_style']){?> selected <?php } ?>>Popart</option>
    		   <option value="photorealisme" <?php if("photorealisme"==$data['oeuvre_style']){?> selected <?php } ?>>Photoréalisme</option>
    		   <option value="postimpressionnisme" <?php if("postimpressionnisme"==$data['oeuvre_style']){?> selected <?php } ?>>Postimpressionnisme</option>
    		   <option value="punk" <?php if("punk"==$data['oeuvre_style']){?> selected <?php } ?>>Punk</option>
    		   <option value="surrealisme" <?php if("surrealisme"==$data['oeuvre_style']){?> selected <?php } ?>>Surréalisme</option>
    		   <option value="symbolisme" <?php if("symbolisme"==$data['oeuvre_style']){?> selected <?php } ?>>Symbolisme</option>
           </select></p></div>
    	   
    	    <p class="textesimple"><label for="datecreaoeuvre">Date de  création : </label><input type="text" name="datecreaoeuvre" id="descriptionoeuvre" value="<?php echo $data['date_crea'] ?>"/></p>
    		
    		<p class="classinscr"><input type="submit" value="Modifier une publication" />
            <input type="hidden" id="sent" name="sent" value="1" />
            </p></form>
    
            <?php
    		
    		$query->CloseCursor();
    	 
    	  break;
    Merci encore pour vos conseils et votre temps.
    Sincèrement.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Puisque tu es en GET (donc id modifiable facilement dans l'URL), tu peux même (et SURTOUT !) déjà tester ici :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $query = $bdd->prepare('SELECT oeuvre_id, artiste_id, titre_oeuvre, description_oeuvre, image_oeuvre, oeuvre_categorie, oeuvre_style, date_crea FROM oeuvre_artiste WHERE oeuvre_id=:oeuvre_id AND artiste_id=:artiste_id ');
    $query->bindValue(':oeuvre_id', $oeuvre_id, PDO::PARAM_INT);
    $query->bindValue(':artiste_id', $artiste_id, PDO::PARAM_INT);
    si 1 réponse, c'est OK.
    Sinon, c'est que l'id a été modifié dans l'URL !
    Dernière modification par Invité ; 03/12/2013 à 18h01.

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Par défaut
    Merci Jreaux ,

    effectivement avec cette solution lorsque j'essaye de modifier l'id de l'oeuvre par un autre id d'oeuvre qui n'appartient pas au membre, une page blanche de formulaire apparaît, et aucune information n'est donc modifiable =).

    Merci encore pour votre aide à tous,
    Sincèrement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Modif d'une publication d'un membre x d'une de ses œuvres n° x
    Par reverb94 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 29/11/2013, 14h28
  2. commentaire correspond au nom du membre
    Par a_karim_fr dans le forum z/OS
    Réponses: 2
    Dernier message: 01/09/2009, 19h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo