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 :

mysql_now_nums() et mysql_real_escape() plante


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut mysql_now_nums() et mysql_real_escape() plante
    bonjour j'ai un petit problème avec ma messagerie personelles elle ne veu pas marcher mais par contre elle me renvoye des erreurs
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /media/160go/hebergement/spouts.goldzoneweb.info/espace_membre/mp.php on line 49

    Fatal error: Call to undefined function mysql_real_escape() in /media/160go/hebergement/spouts.goldzoneweb.info/espace_membre/mp.php on line 64
    maitenant je vous donne les code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(empty($_POST['pseudo_recepteur']))
                    {
                    $erreur[] = 'veullez mettre un pseudo';
    				$sdz = mysql_query("SELECT * FROM membre WHERE pseudo ='".$_POST['pseudo_recepteur']."'")or die (mysql_error());//ligne 49
                   }
            elseif(mysql_num_rows($sdz)<0)
    {
    $erreur[] = ' ben  le pseudo demander n\'existe pas';
    }

    le deuxième
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    				if(empty($erreur))
    {  
    $titre = mysql_real_escape($_POST['titre']);
    $message = mysql_real_escape($_POST['commentaire']);
    $id_recepteur = inval($sdz['id']);
    mysql_query("INSERT INTO mp values ('','".$titre."','".$message."','".$id_recepteur."','".$id_envoyeur."'");
    }
    }
    merci de l'attention porte sur mon problème

  2. #2
    Membre émérite Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Par défaut
    premier problème :
    apparament tu as un serieux problème de logique dans tes conditions ! avec ton mysql_num_rows, tu essayes de compter les lignes d'une requete que tu n'a pas executée, puisque tu es dans le else !
    essayes plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(empty($_POST['pseudo_recepteur']))
         $erreur[] = 'veullez mettre un pseudo';
    else
    {
         $sdz = mysql_query("SELECT * FROM membre WHERE pseudo ='".$_POST['pseudo_recepteur']."'")or die (mysql_error());//ligne 49
     
         if(mysql_num_rows($sdz) <= 0)
              $erreur[] = ' ben le pseudo demander n\'existe pas';
    }
    de plus, avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("SELECT * FROM membre WHERE pseudo ='".$_POST['pseudo_recepteur']."'")
    tu introduis probablement une grosse vulnérabilité aux attaques par injection SQL ... fais gaffe !

    2e problème :
    la fonction c'est mysql_real_escape_string() et pas mysql_real_escape(), tu pourrais faire un effort et consulter la doc php sur ce genre d'erreur ...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    oups désoler pour la fonction
    euh quelle est meilleur fonction pour éviter les injection sql

  4. #4
    Membre émérite Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Par défaut
    Citation Envoyé par schats
    quelle est meilleur fonction pour éviter les injection sql
    => Ne JAMAIS inclure dans une requete SQL des données "brutes" de la requete HTTP ($_GET, $_POST, ou $_COOKIES) sans les avoir vérifiées.
    La précaution élémentaire minimum étant d'échapper ces données :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("SELECT * FROM membre WHERE pseudo ='".mysql_real_escape_string($_POST['pseudo_recepteur'])."'")
    Ce conseil est valable pour tous les languages, en particulier dans un contexte client-serveur tel que le web car très exposé aux attaques, donc même chose en ASP, PERL, J2EE etc ...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    en faite le truc simple c'est de sécuriser tout les données avant de vérifier
    avec le code que tu ma donner j'ai un petit problème pour les elseif qui suis
    l'erreur
    Parse error: syntax error, unexpected T_ELSEIF in /media/160go/hebergement/spouts.goldzoneweb.info/espace_membre/mp.php on line 55


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $erreur[] = ' ben le pseudo demander n\'existe pas'; 
    		}
    		elseif(empty($_POST['titre']))//ligne 55
    {
    $erreur[] = ' merci de mettre un titre';
    }
    elseif(empty($_POST['commentaire']))
    {
    $erreur[] = 'merci de mettez un texte';

Discussions similaires

  1. Modéliser une planète?
    Par shifty.net dans le forum OpenGL
    Réponses: 10
    Dernier message: 30/08/2004, 14h13
  2. [MFC] DoModal() plante
    Par barthelv dans le forum MFC
    Réponses: 3
    Dernier message: 29/07/2004, 10h56
  3. Que se passe-t-il en interne si un ROLLBACK plante ?
    Par jack554 dans le forum Administration
    Réponses: 4
    Dernier message: 07/04/2004, 12h55
  4. Réponses: 11
    Dernier message: 17/03/2003, 10h56
  5. Réponses: 2
    Dernier message: 23/10/2002, 13h38

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