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

PHP & Base de données Discussion :

se protéger contre les injections sql


Sujet :

PHP & Base de données

  1. #21
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    La requete dans phpmyadmin ca donnerait ça :
    La valeur est encadrée d'apostrophes comme dans ton code et l'apostrophe de la valeur est echapée.
    select nom_forum,id_forum,im_for,titre_sujet,descri_cat,id_sujet,date_sujet,auteur_sujet,id_suj_forum,message,titre_cat1,id_categori1,satmp_cat,date_message,auteur_message
    ,COUNT(titre_sujet) AS nb_s ,COUNT(message) AS nb_m FROM categorie1
    LEFT JOIN forum ON (id_cat1_f=id_categori1)
    LEFT JOIN sujet_forum ON (id_sujet=id_suj_forum)
    LEFT JOIN message_topic ON (id_mes_suj=id_sujet) WHERE titre_cat1= 'l\'actialité' AND id_categori1=id_cat1_f
    GROUP BY titre_cat1,nom_forum,titre_sujet ORDER BY satmp_cat ASC
    Pour l'erreur purement PHP, je t'ai déjà donné la solution un peu plus haut, il faut lire les messages :
    Dans tous les cas tu peux ajouter un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $tableau = array();
    avant ta requete
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  2. #22
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Par défaut
    merci sabotage mai la je voi plus rien je comprend plus rien entre les foreach les array je me sui embrouiller dans ma tete et j'ai tou deguelasser mon code

    je croi que je vais tou reprendre depuis le debut en essayan de le faire sans tableau et sans foreach pasque c'est sa qui m'en brouille je sai pas comment sa marche tous ces tableau avec ma requette

    et ya un truc que je compren pas dan foreach comment on fai pour avoir de valeur diferente dan la boucle:

    $nom=>$valeur

  3. #23
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $tableau = array(1=>"abc", 2=>1234);
     
    foreach ($tableau as $id=>$value) {
        echo $id . ' : ' . $value;
    }
    au premier tour de boucle ca affiche
    1 : abc
    au deuxieme tour de boucle ca affiche
    2 : 1234
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #24
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Par défaut
    merci sabotage donc je voi tou sa et je te tien au couran

  5. #25
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 121
    Par défaut
    Je n'ai pas vu de commentaire de sabotage à propos de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $c=$_GET['c']; 
    if(!isset($c)){
    Alors que c'est nécessaire ^^
    Si tu déclares $c tu peux être sur qu'à la ligne suivante $c est déclarée.
    isset() sert à vérifier si une données existe(est déclarée) et non si elle est vide.
    Pour vérifier des données type GET ou POST, il faut généralement utiliser empty() (qui comprend les vérifications de isset() ).
    Tu devrais aussi vérifier que le contenu de la variable respecte bien le type de données que tu veux recevoir, sinon tu crains l'injection SQL.

  6. #26
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Attention avec empty(), cela exclu egalement le 0.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. protection contre les injections SQL
    Par Merling dans le forum Applications
    Réponses: 1
    Dernier message: 23/02/2010, 10h28
  2. Sécurité contre les injections SQL
    Par Generation-Web dans le forum Langage
    Réponses: 2
    Dernier message: 27/11/2008, 15h17
  3. Prévention contre les injections SQL
    Par Community Management dans le forum ASP
    Réponses: 0
    Dernier message: 29/07/2008, 13h50
  4. Lutter contre les injections SQL
    Par EvilAngel dans le forum ASP
    Réponses: 4
    Dernier message: 15/06/2006, 18h27

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