Modifications non effectuées

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Modifications non effectuées

par zeus » 04 mars 2009, 15:10

Il faut stocker en session les identifiants des données demandées si c'est réellement vital.
Sinon, il ne faut pas non plus tourner à la parano.

Si c'est dans une application interne, si tu as un accident, c'est que quelqu'un fait le con, et tu pourras le fouetter pour l'éternité :langue: :axe:

Sinon, le sujet de la sécurisation d'une application est très vaste et uasiment infini.

Concernant ton apprentissage, je pense qu'il y a certains points que tu dois travailler avant :
  • découpage PHP/HTML
  • gestion des erreurs dans le code
  • présentation des erreurs

par yaug » 04 mars 2009, 15:00

il faut du coup faire des vérifications sur les données postées.

Tu vérifies que la personne a bien les droits sur l'objet demandé (ce qui impliquer que tu stocks qui a droit a quoi en base de données), tu vérifies la validité de chaque donnée que tu reçois.
C'est long et fastidieux, mais pour avoir une application sécurisée, c'est indispensable.

par Arkonara » 04 mars 2009, 14:30

Bien comment protéger ma page pour ne pas que tu puisse faire sa?

par zeus » 04 mars 2009, 12:35

Juste une précision, ce n'est pas parce que le champs est disabled ou hidden qu'il est impossible de le modifier.

Imagine que j'enregistre ta page sur mon disque et que je modifie le code source HTML et que je le soumette, je te donne un autre id sans que tu le vois ;)

par Arkonara » 04 mars 2009, 12:19

Merci a vous aussi

par yaug » 04 mars 2009, 12:16

attention aux erreurs bêtes.
Tu as laissé le champ en disabled :wink:
Du coup il n'est pas envoyé dans le $_POST


Edit:
Bon.. voila.
Pense à marquer le topic comme résolu aussi.

bonne continuation

par Arkonara » 04 mars 2009, 12:14

c'est bon jviens de reussir en le mettant en type hidden et en enlevant le disabled
<td><input type="hidden" name="ldnNum" size="40" value="<?php echo $rep['num_fiche'];?>"></td>
merci les gars

par yaug » 04 mars 2009, 12:07

En hidden l'utilisateur devra aller modifier le code html hein :wink:
Car un champ hidden n'est pas visible à même ta page.

par Arkonara » 04 mars 2009, 12:05

je ne peux la mettre en type hidden car cela permettrai a l'utilisateur de changer ce champ hors ce champs ne doit absolument pas pouvoir etre changer. le seul champ qui peut etre modifier est observation. c'est pourquoi je suis obliger de laisser le disabled

par zeus » 04 mars 2009, 11:59

Je n'en mettrais pas à ma main à couper, mais est-ce qu'un champ input disabled transmet bien sa valeur ?

Visiblement, tout tes champs disabled ne sont pas transmis ...

Essaye de transformer ces champs en <input type="hidden">

par Arkonara » 04 mars 2009, 11:56

Ah oui bien vu zeus, bien expliker jviens de comprendre l'erreur :D , mon
$numfiche=$_POST['ldnNum']; 
n'arrive pas a me recuperer le contenu de ldnNum.
Donc forcement ma requete devient fausse et donc mon update ne se realise pas :? .
Bon maintenant que je viens de comprendre sa il faut que je trouve un moyen de le corriger.

Merci zeus pour l'explication

je viens de tester le $query
et vou aviez raison, ma requete est la suivante:

Code : Tout sélectionner

UPDATE incidents SET observation='Aa' WHERE num_fiche=''
donc je ne recupere pas le ldnNum, mais comment ca se fait car pourtant j'utilise bien le $_POST?

par zeus » 04 mars 2009, 11:50

Je comprend bien ton but, mais j'essaye de te faire comprendre ton erreur.

Tu nous montres le résultat de cette commande :
var_dump($_POST);
Qui donne ce résultat :

Code : Tout sélectionner

array(2) { ["ldnobserv"]=> string(2) "Aa" ["modifier"]=> string(8) "Modifier" }
Or, dans ton code, je note que tu récupère ton num_fiche de cette manière :
$numfiche=$_POST['ldnNum'];
Si tu regarde bien le résultat de ton var_dump(), qui est le contenu de la variable $_POST[], tu te rend compte qu'il n'y a pas d'indice "ldnNum".
$_POST['ldnNum'] ne contient donc rien et ta variable $numfiche ne contient donc rien non plus.

Par contre, $_POST['ldnobserv'] contient bien "Aa", donc $observ contient bien "Aa"

Ensuite, si je prend ta requete de base :
$query = "UPDATE incidents  
        SET observation='$observ' 
        WHERE num_fiche='$numfiche'";
Si je remplace les variables par les valeurs qu'elles contiennent, j'obtiens la requête suivante :
$query = "UPDATE incidents  
        SET observation='Aa' 
        WHERE num_fiche=''";
Fait un echo sur $query pour vérifier, mais je pense être dans le vrai

par Arkonara » 04 mars 2009, 11:41

merci yaug pour l'explication et comme tu le voir c'est ce que je fait (voir mon echo $numfiche)
ce echo ne s'affichant pas je constate donc que j'ai une erreur au niveau de mes conditions du if puisqu'il ne rentre pas dedans.

Zeus mon objectif ici est de changer le champs observation de ma table incidents pour la fiche indiquer, il faut donc que je recupere mon numFiche

et ma requete est doncbel et bien update incidents set observation = '$observ' Where num_fiche = '$numFiche';

par zeus » 04 mars 2009, 11:33

Dans tes données POST, il n'y a pas le numéro de la fiche.

Du coup, tu dois avoir un update qui ressemble à ça :

Code : Tout sélectionner

UPDATE incidents SET observation='Aa' WHERE num_fiche=''
Ce qui ne déclenche pas d'erreur, mais ne modifie rien en base de données.

par zeus » 04 mars 2009, 11:24

On ne conseil pas de chercher par soit même pour ne pas avoir à vous aider, mais bel et bien parce que c'est ainsi qu'on apprend. :wink:
Effectivement, je ne dispute personne, je voulais juste t'expliquer que, en plus de comprendre pourquoi CE code ne fonctionne pas, comment débugger un code, de manière plus générale, et ceci pour toi.

Sinon, effectivement, on trouve le bug, on te dit quoi changer et c'est reparti pour 1 jour ou 2 ;)
Comme l'a bien dit un sage un jour :
"Pêche moi un poisson et je n'aurais pas faim aujourd'hui,
Apprend moi à pêcher et je n'aurais plus jamais faim"