8722 sujets

Développement web côté serveur, CMS

Bonjour à tous et à toutes,

Je suis actuellement sur la création d'un système de modification d’œuvres pour que le membres "x" puisse modifier des informations erroné ou autres de ce qu'il a précédemment publié.

J'aimerais rajouter quelques phrases de code permettant une meilleur sécurité.

par exemple, j'ai pu observer, lorsque je suis connecté sur une session "y" et que je souhaite modifier une de mes œuvres, il y a juste a modifier le numéro de l'id dans l'url est cela veux dire que n'importe quel membre peut modifier n'importe quel oeuvre, même une qui ne lui appartient pas.

J'aurais donc voulu savoir si il existe une condition du genre :

Si, L'id du membre ne correspond pas à la publication de l'id de l'oeuvre, alors l'accès à la page est impossible ( par exemple dans mes tables "artiste_oeuvre" l'id du membre va être "12", et les oeuvres qu'il va publier seront des id auto incrément qui comptabilise toutes les oeuvres de tout les artistes. y a t'il moyen de demander a php : toutes les oeuvres éditer par le l'id membre numéro 12 sont autorisé a être modifier, mais si le membre "12" essaye de modifier l'id oeuvre, qui ne sera donc pas la sienne, l'accès a la page de modification sera refusé ).

J’espère que mes explication sont compréhensible xD,

Merci pour votre attention et votre aide Smiley smile .
Modérateur
Reverb a écrit :
Si, L'id du membre ne correspond pas à la publication de l'id de l'oeuvre, alors l'accès à la page est impossible ( par exemple dans mes tables "artiste_oeuvre" l'id du membre va être "12", et les oeuvres qu'il va publier seront des id auto incrément qui comptabilise toutes les oeuvres de tout les artistes. y a t'il moyen de demander a php : toutes les oeuvres éditer par le l'id membre numéro 12 sont autorisé a être modifier, mais si le membre "12" essaye de modifier l'id oeuvre, qui ne sera donc pas la sienne, l'accès a la page de modification sera refusé ).

Bonjour, évidemment cela est possible. C'est même nécessaire pour les raisons de sécurité évoquées.
Par contre sans une idée de ta structure ou de ton fonctionnement difficile de t'aider…
Salut à toi Kustolovic et merci pour ton attention =),

Voici la structure de mon code :

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']:'';
$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: [langue]ARAM_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 pour ton aide Smiley smile ,
Sincèrement.
Salut à tous,

j'ai réussi à avancer dans mon système :

$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: [langue]ARAM_INT);
$query->bindValue(':artiste_id', $artiste_id, PDO: [langue]ARAM_INT);


Grâce à ça, lorsqu'un membre cherche à modifier l'id d'oeuvre dans l'url avec de mauvaise attention pour modifier l'oeuvre d'une autre personne, une page avec le formulaire vide, s'affiche.

Maintenant j'aurais voulu savoir comment insérer une condition, pour interdire définitivement l'accès à ceux formulaire, si l'id oeuvre n'appartient pas à l'id artiste ^^.

Merci pour votre attention et votre aide.