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 :

fonction anti injection sql


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut fonction anti injection sql
    Bonjour

    Je voudrai faire une fonction contre l'injection sql .

    J'ai fait ceci mais cela ne fonctionne pas .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ?php
    $k=$_POST['em'];
    $link=mysql_connect("localhost","root","");
    $sql=mysql_query("SELECT em FROM id WHERE em='".$k."'", mysql_real_escape_string($em));
    $nb=mysql_num_rows($sql);
    echo $nb;
    ?>
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ?php
    $k=$_POST['em'];
    $link=mysql_connect("localhost","root","");
    $sql=mysql_query("SELECT em FROM id WHERE em='".$k."'", mysql_real_escape_string($k));
    $nb=mysql_num_rows($sql);
    echo $nb;
    ?>
    Dans les deux cas j 'ai une erreur du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\wamp\www\travaux\immobilier\fr\ins\ctr.php on line 3
    Quelqu'un peut m'aider et dire ce qui ne va pas dans ma fonction sql ?

    Merci d'avance

  2. #2
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Le deuxieme argument de mysql_query() est facultatif et est un lien de connexion ($link dans ton cas)
    mysql_real_escape_string() s'applique a une chaine de caractere.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    mysql_connect("localhost","root","");
    $em=mysql_real_escape_string($_POST['em']);
    $sql=mysql_query("SELECT em FROM id WHERE em='".$em."'");
    $nb=mysql_num_rows($sql);
    echo $nb;
    ?>
    Avec l'argument facultatif cela donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $link = mysql_connect("localhost","root","");
    $em=mysql_real_escape_string($_POST['em'],$link);
    $sql=mysql_query("SELECT em FROM id WHERE em='".$em."'",$link);
    $nb=mysql_num_rows($sql);
    echo $nb;
    ?>
    N'hesite pas a consulter la documentation pour voir comment bien utiliser les fonctions :
    http://fr.php.net/manual/fr/function...ape-string.php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut rep
    Ok j'ai compris.

    Cela fonctionne.

    Question : Est ce que mysql_real_escape_string(); est assez efficase contre toutes les attaques d'injection sql ?

    Ou faut-il au paravant que je fasse une vérification plus precise du contenu des $_POST[] avec un la fonction (preg_match());

    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $h=$_POST['cp'];// code postal
    if((preg_match('`[^0-9]`i', $h)){echo "caractère interdit";}
    else{
    $link = mysql_connect("localhost","root","");
    $em=mysql_real_escape_string($h,$link);
    $sql=mysql_query("SELECT cp FROM ins WHERE cp='".$h."'",$link);
    $nb=mysql_num_rows($sql);
    echo "le nombre d'inscrit ayant pour code postal ".$h." est de :".$nb."";
        }
    merci !

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

Discussions similaires

  1. fonction anti injection
    Par jounax dans le forum Langage
    Réponses: 6
    Dernier message: 04/02/2011, 17h16
  2. Réponses: 2
    Dernier message: 07/03/2008, 15h39
  3. Réponses: 20
    Dernier message: 03/02/2006, 10h55
  4. Fonction "Format" sous SQL
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 08/10/2004, 09h07
  5. fonction left avec sql server 6.5
    Par shake dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/06/2004, 08h48

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