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 :

eviter la saisie get


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 37
    Par défaut eviter la saisie get
    bonjour: je voudrais éviter de voir des choses compliquées derriére mes adresses de mon site web,
    pourtant les liens ne peuvent faire que des get ?

    faut'il que je fasses toujours des saisies type form ?

    merci a vous

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    bijour,

    En réalité, ce qu'on passe en $_GET est souvent peu dramatique et contrôlé (c'est d'ailleurs souvent pour ça qu'on transmet des ID, afin de vérifier tres facilement )

    Si ce sont des variables qui restent tout le temps sur le site, peut-être faudrait-il regarder à utiliser les $_SESSION

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 37
    Par défaut
    Oui mais je n'aimes pas ce que font les get
    Et les sessions ce n'est pas possible a mon avis, car je parles de liens ou autre form donc une valeur inconnue ?

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Citation Envoyé par carla-la-belle Voir le message
    Oui mais je n'aimes pas ce que font les get
    Et les sessions ce n'est pas possible a mon avis, car je parles de liens ou autre form donc une valeur inconnue ?
    hmmm les liens de son site perso, on les connait d'une façon ou d'une autre...

    pour les formulaires, on utilise en général la méthode $_POST et non $_GET :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <?php echo $_SERVER['PHP_SELF']; ?> : renvoie vers la page courante
    method="post" envoie les données en $_POST et non en $_GET

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    Dans tous les cas, avec tout lien tu passes par GET.

    Si tu fais du PHP et que tu dois passer des paramètres par un lien, tu peux pas y échapper.
    Si tu veux te prendre le chou pour rendre tes urls plus esthétiques, tu peux te renseigner sur l'url rewriting.

  6. #6
    Inactif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 37
    Par défaut
    Non il n'y a pas que l' esthétiques, mais d'aprés ce que je lis surtout c'est moins fort en sécuritée.

  7. #7
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    ça rejoint ce que j'ai dit.... c'est à toi de faire attention à ce que tu écris...

    De toute facon, à l'heure actuelle, même les $_POST ne sont pas en sécurité si le code est mal pensé

    En général, on essaye de toujours travailler avec un ID qui est souvent la PRIMARY KEY de la table... voici un exemple de code et des liens qu'on pourrait avoir

    Code LE CODE PHP : 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
     
    <?php
    // CODE CORRECT (un parmis d'autres)
    $id_news = (int) $_GET['id'];
    if ($id_news > 0) { // si $_GET['id'] n'était pas un nombre, $id_news vaudrait 0
       $sql = "SELECT * FROM news WHERE id_news = '".$id_news."'";
       echo "Requete : ".$sql;
       // j'execute ma requete mysql_query() par exemple
    } else {
       header("Location: ".$defaultPage); // sinon je retourne à la page par défaut (index.php surement ^^)
    }
     
    // CODE PAS CORRECT
    if (isset($_GET['id']) && !empty($_GET['id'])) { // test insuffisant, voir plus bas
       $sql = "SELECT * FROM news WHERE id_news = '".$id_news."'";
       echo "Requete : ".$sql;
       // j'execute ma requete mysql_query() par exemple
    }
    ?>

    Liens envoyes :
    ?page=news&id=4
    Ex1 => REQUETE : SELECT * FROM news WHERE id_news = '4'
    Ex2 => REQUETE : SELECT * FROM news WHERE id_news = '4'
    // Quand on transmet quelque chose de correct, on a bien le même résultat, les 2 codes fonctionnent


    ?page=news&id='AND1'
    Ex1 => n'affiche rien, retoure à la page par défaut
    Ex2 => Requete : SELECT * FROM news WHERE id_news = '' AND 1 ''
    Cette dernière requete sélectionne toute la base de données et la seule façon de l'éviter est de bien coder

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    C'est vrai et faux à la fois.

    Il faut partir du principe qu'il ne faut jamais faire "confiance" à une donnée passée en GET (mais on pourrait en dire autant d'une donnée passée en POST)

    Il faut toujours vérifier que ce qu'on reçoit ressemble à ce qu'on attend et qu'il risque toujours d'y avoir une erreur. Dans tous les cas (POST ou GET) on ne prend jamais une donnée transmise par l'utilisateur à la légère. Mais c'est pas non plus la peine de raccrocher les gants non plus. Les précautions à prendre sont généralement assez simples à mettre en oeuvre

    EDIT : Téléscopage avec Darkstar... On dit à peu près la même chose sauf que j'ai la flemme de taper du code

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

Discussions similaires

  1. Eviter Double Saisie
    Par mimil49 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/07/2011, 14h10
  2. Réponses: 4
    Dernier message: 08/11/2007, 15h03
  3. eviter la saisie de doublon
    Par VIRGINIE87 dans le forum Excel
    Réponses: 7
    Dernier message: 03/08/2007, 15h13
  4. eviter espace ou niveau de saisie
    Par saidm dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 25/07/2007, 14h12
  5. Eviter les erreurs de saisie
    Par julo56 dans le forum C++
    Réponses: 5
    Dernier message: 06/06/2006, 00h04

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