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

Langage PHP Discussion :

traitement auto de $_POST


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 64
    Par défaut traitement auto de $_POST
    Bonjour,

    juste pour une petite question :
    à l'heure actuelle, pour préparer le traitement des formulaires, je procede toujours comme ceci :
    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
     
    if(isset($_POST['envoie']))
    {
    $jour=mysql_real_escape_string($_POST['jour']);
    $mois=mysql_real_escape_string($_POST['mois']);
    $annee=mysql_real_escape_string($_POST['mois']);
    $nom=mysql_real_escape_string($_POST['nom']);
    $prenom=mysql_real_escape_string($_POST['prenom']);
    $motif=mysql_real_escape_string($_POST['motif']);
    $arrivee_hh=mysql_real_escape_string($_POST['arrivee_hh']);
    $arrivee_mm=mysql_real_escape_string($_POST['arrivee_mm']);
    $depart_hh=mysql_real_escape_string($_POST['depart_hh']);
    $depart_mm=mysql_real_escape_string($_POST['depart_mm']);
    $medecin=mysql_real_escape_string($_POST['medecin']);
    $destination=mysql_real_escape_string($_POST['destination']);
    .......
    }
    Je voudrais savoir si il n'y a pas possibilité de creer une fonction qui lise le tableau $_POST, affecte tous les contenus des champs dans une variable portant le même nom que le champ et applique un mysql_real_escape_string.

    merci d'avance de vos idées.

  2. #2
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut


    Si j'ai bien compris ton problème, tu as la fonction extract qui fait ça mis à part qu'elle ne fait pas le mysql_real_escape_string.

    Mais il est largement déconseillé de l'utiliser sur des données inconnues pour des raisons évidentes de sécurité.

    Le mieux à faire est encore ta propre fonction

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 64
    Par défaut
    Merci de cette réponse.

    Pour extract pourquoi ne pas l'utiliser pour des soucis de sécurité ?
    Sachant qu'après je n'utilise que des variables attendues et après avoir revérifier si elles correspondent à ce que j'attend ?
    (genre si on m'ajoute un $_POST['jetehack'] je ne l'utiliserai pas car il n'est pas attendu, et que je vérifie si j'attend un int que cela soit bien un int....

    Sinon pour faire une fonction moi même c'est en effet ce que je pensais faire avant que vous me fassiez découvrir extract, si extract est trop dangereux à utiliser, comment puis je extraire automatiquement (en parcourant le tableau $_POST) le nom des variables afin d'extraire les nom des champs.

    merci d'avance de vos lumières.

  4. #4
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    ça peut devenir dangereux car tu ne connais pas les données que l'utilisateur va transmettre en utilisant $_POST (possibilité d'exécution de code malveillant par exemple).

  5. #5
    Membre éclairé Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Par défaut
    tu peux aussi faire quelque chose dans ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    foreach ($_POST as $k=>$v)
       $_POST[$k] = mysql_real_escape_string($v);
    et ensuite tu peux insérer directement les valeurs $_POST["..."] dans ta base

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 64
    Par défaut
    merci pour ce petit foreach et cet info sur extract.

    Par contre pour le foreach, cette fonction, si je ne m'abuse me fait juste un mysql_real_escape_string sur chaque $_POST mais je m'affecte pas un $_POST['voiture'] dans une variable $voiture.

    Or afin d'éclaircir mon code et peut être un peut par fainéantise, je souhaiterai affecter tout les $_POST à des variables portant le nom du $_POST et c'est un peut la dessus que je bloque.

    Sauf avec extract qui peut le faire mais parait dangereux.

  7. #7
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    Tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    foreach ($_POST as $k=>$v)
       $$k = mysql_real_escape_string($v);
    Du coup si tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST = array(['voiture']=>'renault', ['moto']=>'honda');
    L'éxecution du code te donneras
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $voiture = 'renault';
    $moto = 'honda';
    Mais je te l'annonce c'est VRAIMENT dégueulasse.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 54
    Par défaut
    Un mix de mdr_cedric et de ce que tu faisais au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(isset($_POST['envoie']))
    {
     
    foreach ($_POST as $k=>$v)
       $_POST[$k] = mysql_real_escape_string($v);
     
    $jour=$_POST['jour'];
    }
    mais c'est vrai dans ce cas autant utiliser directement $_POST['jour'] dans ta requête

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 64
    Par défaut
    Merci à tous pour vos réponses.

    Bon finalement je suis resté dans le classique.

    Je vais tacher de voir quand j'aurais plus de temps comment je peut créer des fonction de traitement de mes $_POST en fonction du nom du champ.

    J'étudie même la possibilité de me mettre à symphony ou zend mais bon j'ai un peut de mal à conceptualiser la POO donc ça risque de me prendre un peu de temps (que je n'ai pas hélas).

  10. #10
    Membre très actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 149
    Par défaut
    Et avec un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $_POST['exemple'];
    array_walk($_POST, mysql_real_escape_string);
    extract($_POST, EXTR_OVERWRITE);
    echo $exemple;
    A la place de mysql_real_escape_string, tu peu donc mettre une fonction faite de tes mimines, ce que je te conseil aussi.

    Et le mec qui s'amuse a t'envoyer $_POST['jetehack'], bin il ira pas bien loin parceque tu utilise jamais cette variable.

Discussions similaires

  1. [WS 2008] batch, traitement manuel vs auto
    Par olivanto dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 20/12/2013, 09h19
  2. Pb d'auto-incrément sur une table v7
    Par Nivux dans le forum Paradox
    Réponses: 9
    Dernier message: 26/12/2002, 13h05
  3. Matrice de filtrage ?
    Par gimlithedwarf dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 24/08/2002, 10h44
  4. Un Sender peut-il s'auto-détruire lors d'un onClick?
    Par Flo. dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/07/2002, 11h31
  5. Réponses: 8
    Dernier message: 17/05/2002, 10h08

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