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 :

apostrophe et mysql_real_escape_string


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 8
    Par défaut apostrophe et mysql_real_escape_string
    Bonjour,
    Merci d'avance pour votre aide. J'essaye depuis 3 heures de resoudre mon pb.
    Je n'arrive pas à enregistrer un texte (si celui-ci comporte une apostrophe.
    j'ai essayé de rajouter mysql_real_escape_string dans mon php. Mais je du mal mi prendre (il ne le prendre pas en compte).
    Ci-joint le code.
    Si vous pouviez jeter un coup d'oeil. (ma fonction mysql_real_escape_string en fin de code doit être mal codé).

    c'est codé pour amfphp (donc il y a function etc)
    Merci d'avance pour votre aide.

    voici mon code:
    Code : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    function products(){
            $this->methodTable = array(
                "getItems" => array(
                  "description" => "Returns products table",
                  "access" => "remote" // available values are private, public, remote
                  //"arguments" => array ("message")
                ),
                "setItems" => array(
                  "description" => "Echoes the passed argument back to Flash (no need to set the return type)",
                  "access" => "remote", // available values are private, public, remote
                  "arguments" => array ("rs")
                )
            );
     
                // Initialize db connection
                $this->conn = mysql_pconnect($this->dbhost, $this->dbuser, $this->dbpass);
                mysql_select_db ($this->dbname);
     
          }
          function getItems(){
            return mysql_query("select * from list");
          }
          function setItems($rs){
           $error = false;
            for($i=0; $i<sizeof($rs); $i++){
                $result = mysql_query("replace into list values('".$rs[$i]['PkProduct']."', '".$rs[$i]['Poste']."', '".$rs[$i]['Lieu']."', '".$rs[$i]['Description']."')");
                if(!$result) $error = true;
            }
            if(!$error) return "Ok"; else return "Error";
          }
        // transforme une string pour éviter l'injection ou les apostrophes et guillements
        // Note: mysql_escape_string est recommandé, il est plus sécure que addslashes
        function escape($param)
            {
     
                   // return mysql_escape_string($param);
                    // ou bien si on veut préciser la connexion courante :
                             return mysql_real_escape_string($param, $this->conn);
            }
    }
     
     
    ?>

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Bonsoir, ta fonction escape a deux returns.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 8
    Par défaut
    C'est le copier coller qui a merdé, . Mais j'ai toujours mon pb. j'ai essayé de remplacer ($param) par ($result) et $rs.Mais rien n'y fait.
    Les apostrophes sont dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $result = mysql_query("replace into list values('".$rs[$i]['PkProduct']."', '".$rs[$i]['Poste']."', '".$rs[$i]['Lieu']."', '".$rs[$i]['Description']."')");
    Mais je vois pas comment mettre mysql_real_escape_string.
    MErci d'avance pour votre aide.

  4. #4
    Inactif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 179
    Par défaut
    J'ai trouvé : t'appelles jamais escape.

  5. #5
    Membre éclairé
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2006
    Messages : 264
    Par défaut
    utilise la fonction stripslashes !

  6. #6
    Inactif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 179
    Par défaut
    Citation Envoyé par temperature Voir le message
    utilise la fonction stripslashes !
    Euh, non.

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    utilise ta fonction sur chaque variable entrant dans la requête:ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $product = escape($rs[$i]['PkProduct']);
    Puis tu mets $product dans ton code. Ça t'enlèvera déjà en outre une quantité phénoménale d'apostrophes dus au ['xxx'].

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 8
    Par défaut
    Merci pour votre réponse , je vois pas comment intégrer product.

    comment je peux intégrer escape à $rs[$i]['Description.

    Je dois recreer une fonction.

    J'ai un exemple : d'intégration d'escape :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // on assigne à $db une occurence de SqlQuery
    		$this->db = new Sql();
    	}
     
    	function methodeOne ($login, $pass)
    	{
    		$login = $this->db->escape($login);
    merci d'avance pour votre aide

    je bosse sur remoting avec amfphp et falsh

  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Ton objectif, c'est d'échapper correctement les variables, tout en pouvant garder du texte muni d'apostrtophes, c'est ça ? Dans ce cas, au lieu de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = mysql_query("replace into list values('".$rs[$i]['PkProduct']."', '".$rs[$i]['Poste']."', '".$rs[$i]['Lieu']."', '".$rs[$i]['Description']."')");
    mets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $product = escape($rs[$i]['PkProduct']);
    $poste = escape($rs[$i]['Poste']);
    $lieu = escape($rs[$i]['Lieu']);
    $description = escape($rs[$i]['Description']);
    $sql = "REPLACE INTO list VALUES('".$product."','".$poste'"."'$lieu'"."'$description."');";
    mysql_query($sql);
    Si ce n'est pas ce que tu cherches, précise.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 8
    Par défaut
    Merci pour votre aide, je n'arrive toujours pas editer mon texte avec les apostrophe !?
    je redonne mon code!

    Code : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    class products{
    	//change to match your needs
    	var $dbhost = "localhost";
    	var $dbname = "Catalog";
    	var $dbuser = "root";
    	var $dbpass = "";
     
          function products(){
            $this->methodTable = array(
                "getItems" => array(
                  "description" => "Returns products table",
                  "access" => "remote" // available values are private, public, remote
                  //"arguments" => array ("message")
                ),
                "setItems" => array(
                  "description" => "Echoes the passed argument back to Flash (no need to set the return type)",
                  "access" => "remote", // available values are private, public, remote
                  "arguments" => array ("rs")
                )
            );
     
    			// Initialize db connection
    			$this->conn = mysql_pconnect($this->dbhost, $this->dbuser, $this->dbpass);
    			mysql_select_db ($this->dbname);	
     
          }
          function getItems(){
            return mysql_query("select * from list");
          }
    	  function setItems($rs){
    	   $error = false;
    		for($i=0; $i<sizeof($rs); $i++){
    			$result = mysql_query("replace into list values('".$rs[$i]['PkProduct']."', '".$rs[$i]['Poste']."', '".$rs[$i]['Lieu']."', '".$rs[$i]['Description']."')");
    			if(!$result) $error = true;
    		}
    		if(!$error) return "Ok"; else return "Error";
     
     
    	  }
     
     
     
    	  function escape($param)
        	{
     
            	//	return mysql_escape_string($param);
            		// ou bien si on veut préciser la connexion courante :
                           return mysql_real_escape_string($param, $this->conn);
     
        	}
     
     
     
    }
     
     
    ?>
    la partie que j'ai rajouté pour gérer les apostrophes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function escape($param)
        	{
     
            	//	return mysql_escape_string($param);
            		// ou bien si on veut préciser la connexion courante :
                           return mysql_real_escape_string($param, $this->conn);
     
        	}
    MERCI d'avance pour votre aide, je suis débutant en php.

  11. #11
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Je regarde, mais confirme-moi que tout marche bien lorsqu'on saisit un mot sans apostrophe : il est bien inséré ?

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 8
    Par défaut
    bonjour Tsilefy
    Oui il l'apostrophe est belle et bien affiché..
    Merci pour ton aide
    bonne journée

  13. #13
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    re-bonjour,

    Affiché ou inséré en base ? J'ai besoin de savoir : si tu saisis un texte sans apostrophe, est-ce qu'il est bien inséré dans la base de données ? C'est pour vérifier que le reste de ton script fonctionne.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 8
    Par défaut
    Oui, cela marche bien avec un texte sans apostrophe (il est bien enregistrer dans la base).
    Merci pour ton aide

  15. #15
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Modifie la fonction setItems comme ça de façon temporaire, si cela ne marche pas, ça permettra au moins d'identifier l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function setItems($rs){
     
    		for($i=0; $i<sizeof($rs); $i++){
     
    			if(!mysql_query("replace into list values('".escape($rs[$i]['PkProduct'])."', '".escape($rs[$i]['Poste'])."', '".escape($rs[$i]['Lieu'])."', '".escape($rs[$i]['Description'])."')")
    			   $error = mysql_error();
    		    else $error = "OK";	
    		}
    		return $error;
     
     
    	  }

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

Discussions similaires

  1. Pb apostrophes et replace access2000
    Par xycoco dans le forum Access
    Réponses: 8
    Dernier message: 06/10/2004, 15h11
  2. Réponses: 3
    Dernier message: 10/06/2004, 22h34
  3. Apres l'accent l'apostrophe
    Par man80 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 04/05/2004, 16h47
  4. Stocker un apostrophe
    Par Bowen dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/03/2004, 00h00
  5. Problème avec les apostrophes
    Par misterbillyboy dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/07/2003, 16h39

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