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 :

Protéger une page avec "insert into"


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Points : 56
    Points
    56
    Par défaut Protéger une page avec "insert into"
    Bonjour,

    Je débute en PHP et j'ai une question :

    Je souhaiterais protéger ma page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    admin/add_link_mysql.php
    qui est exécutée lorsque l'on valide un formulaire dans ma page
    Le problème est que si l'on se rend directement sur la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    admin/add_link_mysql.php
    sans passer par le formulaire, Cela insert des données vides dans la base de données mysql
    Je souhaiterais donc protéger cette page des accès direct.
    Comment cela est possible ?

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut
    Il doit exister pas mal de méthodes, en voici une simple :

    Dans la page qui génère le formulaire (admin/add_link.php) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define('_PARENT_PAGE', true);
    et dans ta page admin/add_link_mysql.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( !defined('_PARENT_PAGE')) die( 'hack attempt!');
    => tu définis une constante dans ton fichier 1, tu vérifie qu'elle existe dans ton fichier 2
    Zend PHP Certified Engineer, Certifié Symfony2
    blog : blog.lepine.pro
    Secrétaire de l'AFUP (Association des Utilisateurs de PHP)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Points : 56
    Points
    56
    Par défaut
    Merci pour ton aide, par contre je n'arrive pas à le faire fonctionner

    j'ai inclus les codes fournis au top de chacune des pages, mais ça me met toujours hack attempt !

    Merci !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2005
    Messages : 58
    Points : 74
    Points
    74
    Par défaut
    Bonsoir,

    Dans "admin/add_link_mysql.php", tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(!empty($_POST)){
       // Ton insertion
    } else {
      // rediriger vers admin/add_link.php
    }

  5. #5
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Boub.J Voir le message
    Je débute en PHP et j'ai une question :

    Je souhaiterais protéger ma page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    admin/add_link_mysql.php
    qui est exécutée lorsque l'on valide un formulaire dans ma page
    Il faut protéger les pages d'administration en ne laissant y accéder que les utilisateurs authentifiés.
    Cf. les sessions http://fr.php.net/session
    Ou une authentification HTTP http://fr.php.net/http-auth

    Le problème est que si l'on se rend directement sur la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    admin/add_link_mysql.php
    sans passer par le formulaire, Cela insert des données vides dans la base de données mysql
    Le pb sera le même avec les utilisateurs authentifiés.
    Il faut systématiquement valider les données utilisateurs présentes, ou censées l'être, avant d'effectuer une requête SQL.

    Ex pour un <form> de 2 champs "nom" et "prénom" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Si un form a été soumis et champs attendus renseignés
    if ( isset($_POST['nom'], $_POST['prénom']) ) {
        Validation de $_POST['nom']
        Validation de $_POST['prénom']
        if ( pas d'erreur ) {
            Requête SQL
        } else {
            Affichage message d'erreur
            Ou redirection vers page d'erreur
        }
    }
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par real34 Voir le message
    Bonsoir,

    Dans "admin/add_link_mysql.php", tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(!empty($_POST)){
       // Ton insertion
    } else {
      // rediriger vers admin/add_link.php
    }
    Yes, ça marche, merci

    > Séb.
    > Halleck

    Merci pour ces infos

    @ ++

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/10/2006, 14h28
  2. Réponses: 1
    Dernier message: 18/05/2006, 17h57
  3. Réponses: 13
    Dernier message: 16/04/2004, 12h00
  4. Récupérer le code HTML d'une page avec Delphi 7
    Par PsyKroPack dans le forum Web & réseau
    Réponses: 5
    Dernier message: 06/02/2003, 21h56

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