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 :

addslashes et explode


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Par défaut addslashes et explode
    bonjour,

    j'ai un moteur de recherche où l'utilisateur peut entrer des mots via un formulaire de type POST.
    J'ai défini ainsi les variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['motsclef'] = addslashes($_POST['motsclef']) ;
    j'ai ensuite un bout de code pour compter le nombre de mots et les chercher tous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $motsclef = $_SESSION['motsclef']; 
    		// On explose les mots clefs 
    		// en tronquant à chaque espace 
    		$motsclef1 = explode(" ",$motsclef); 
    		// On compte le nombre de mots entrés par le visiteur 
    		$nbr_mots = count($motsclef1);
    ma requête est ensuite de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql .= "AND (s_nom LIKE '%$motsclef1[0]%' OR specifique LIKE '%$motsclef1[0]%' );"

    le problème, c'est que quand je cherche une expression avec un ' (par exemple l'éléphant) j'ai 3 addslashes et non un seul dans ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND (s_nom LIKE '%l\\\'éléphant%' OR specifique LIKE '%l\\\'éléphant%' );

    j'ai essayé addslashes, mysql_real_escape_string et j'ai le même effet.


    Autre question.

    si certaines variables sont définies grâce à un select, faut-il mettre quand même addslashes ou mysql_real_escape_string avant de les intégrer en BDD ?


    Merci pour vos conseils

  2. #2
    Membre chevronné Avatar de Joe Le Mort
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 392
    Par défaut
    il suffit de faire un stripslashes

  3. #3
    Membre émérite
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Par défaut
    variable en session = addslashes de variable post

    motscles = addslashes de variable en session

    => normal

    ou tu fais un seul addslashes, ou t'utilises strislahes

    si tu récupères des données d'une BdD, peut-ou les réutiliser telles quelles pour écrire une requête ? c'est ça la question ?
    si oui, je dirai oui



    edit : encore grillé par Joe le Mort
    Dia [ Page DVP ] [ Site pro ]

  4. #4
    Membre confirmé Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Par défaut
    merci, j'ai effectivement fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $motsclef = stripslashes($_SESSION['motsclef']);
    ca fonctionne, mais c'est vraiment pas clair pour moi, j'ai l'impression que les mettre puis les enlever juste après devrait revenir à ne pas en mettre du tout, ce qui n'est pas le cas.

  5. #5
    Membre confirmé Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Par défaut
    vos réponses se croisent, désolée, je vais regarder ca de plus près.

    pour mon autre question, non, ce n'est pas ca :
    puis je rentrer en BDD les valeurs d'une variable qui a été définie par une sélection dans un select sans faire addslashes, ou faut il mettre quand même addslashes, alors que l'utilisateur n'a pas pu écrire de texte ?

  6. #6
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Si tu veux que ton code fonctionne sur toutes les config tu peux tester si les magic quotes sont activés et faire un stripslashes seulement s'ils le sont. Y a un exemple sur la page de mysql_real_escape_string() dans le manuel PHP.
    http://www.php.net/manual/fr/functio...ape-string.php

    Pour ton autre question il faut protéger toutes les valeurs qui viennent de l'extérieur. L'utilisateur peut créer une page avec un formulaire qui pointe vers ta page et un select qu'il a lui-même créé.

  7. #7
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    Je dirais plutot tester si les magic quotes sont activées si elles le sont faire un stripslashes puis faire un mysql_real_escape_string... que les magic quotes soient activées ou non... .. .

    @ tchaOo°

  8. #8
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    C'est ce que je voulais dire

  9. #9
    Membre confirmé Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Par défaut
    oui, j'ai testé, les magic quote sont activées.

    donc votre conseil pour toutes les variables à intégrer dans la BDD c'est

    $_SESSION['motsclef'] = stripslashes($_POST['motsclef']) ;

    puis

    $_SESSION['motsclef1'] = mysql_real_escape_string($_SESSION['motsclef']) ;

    (est ce que mysql_real_escape_string(stripslashes($_POST['motsclef']) ) est possible ? )


    Autre question j'ai déjà des données dans ma BDD intégrées via PHPmyadmin, qui n'ont pas d'antislashes avant les caractères particuliers....
    il existe une solution pour les remettre facilement (= autrement qu'une par une après avoir récupéré le fichier dans excel...)

    Merci de votre aide

  10. #10
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    En fait il faut faire le stripslashes() que si les magic quotes sont activés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(get_magic_quotes_gpc()) {
    $_SESSION['motsclef'] = stripslashes($_POST['motsclef']) ;
    }

  11. #11
    Membre confirmé Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Par défaut
    merci, je vais chercher pour ma dernière question sur les addslashes à postériori en BDD

  12. #12
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    Normlalement phpMyAdmin se charge de le faire... et quand bien même ce ne serait pas le cas il n'y a aucun interet à retraiter les données... ce qui est important c'est de traiter les données provenant des internaute donc à moins que tout le monde ai accès à ton phpMyAdmin... .. .

    @ tchaOo°

  13. #13
    Membre confirmé Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Par défaut
    il me semblait qu'il y avait un intérêt, parce que si dans certaines cellules j'ai bulletin d'information et dans d'autres bulletin d\'information, mon moteur de recherche va chercher celles avec les \ et ne va pas prendre en compte les autres. Non ? y'a une autre solution ?

    sinon, j'ai trouvé facilement comme faire, sauf que quand j'importe mes résultats via phpmyadmin les \ dans le fichier csv ne sont pas reconnus et ne sont pas intégrés.

    Vivement le week end. Manque un smiley qui s'arrache les cheveux !

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 25/10/2005, 16h09
  2. Réponses: 7
    Dernier message: 24/09/2005, 13h30
  3. explode en pure sql
    Par ecuyer dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 20/09/2005, 10h55
  4. Quel est l'equivalent de Explode de php ?
    Par reg11 dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2005, 15h50
  5. equivalent à explode?
    Par djridou dans le forum Langage
    Réponses: 3
    Dernier message: 28/08/2002, 11h01

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