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 :

PHP MySQLi gestion des apostrophes dans un champ sur différents serveurs [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 27
    Par défaut PHP MySQLi gestion des apostrophes dans un champ sur différents serveurs
    Bonjour à tous,

    J'ai un "programme" (php-mysqli)qui fonctionne parfaitement sur wampserver, chez toile-libre.org, chez alwaysdata.net mais pas chez kelio.org c'est à dire :
    les apostrophes d'un champs sont parfaitement gérées sur les serveurs cités plus hauts sauf chez Kelio.org. J'en déduis que ce n'est pas un problème de programmation mais un problème de BDD.
    Pouvez-vous me donner une piste de recherche pour résoudre ce problème.
    toile-libre.org : MySQL 5.5.43, PHP 5.6.30
    alwaysdata.net : MariaDB 10.1.23
    Wanpserver : MySQL 5.7.14 PHP 5.6.25
    Kelio.org : MySQL 5.0.51a Pas de version de PHP clairement identifiée mais la mention "Extension PHP: mysqli"

    Par avance merci

    Philippe

  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
    Par défaut
    Peux-tu nous décrire le problème et nous montrer ton code ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 27
    Par défaut
    bonjour, merci de votre réponse,

    Je suis en train de mettre à jour un générateur de formulaire de msql vers mysqli (je ne suis pas programmateur...).
    je peux donner tout le code mais c'est conséquent ! Je ne demande pas d'aide à la programmation, je ne comprends pas pourquoi mon code fonctionne en local sur wampserver, chez alwaysdata.net et sur toile-libre.org mais pas sur kelio.org.
    Les erreur chez kelio.org sont les suivantes : si je veux modifier un champ contenant des apostrophes (exemple : C'est une textbox) la modif me renvoie : C\'est une textbox. Si je modifie à nouveau : C\\\'est une textbox et ainsi de suite... Alors que les autres hébergeurs ne provoque pas ce phénomène sur le même code.
    voici les adresses des différents site:
    http://philippe.kelio.org/phpformfr/
    http://marigot.toile-libre.org/phpformfr/
    http://philippe972.alwaysdata.net/phpformfr/

    à priori il y aurai une différence de traitement sur un code du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    		$query =	"UPDATE `fields` SET "
    					. "field_name = '" . mysqli_real_escape_string($con,$fieldName) . "',"
    					. "required ='" . $fieldReqd . "',"
    					. "defaultValue = '" . mysqli_real_escape_string($con,$fieldDefault) . "',"
    					. "tip = '" . mysqli_real_escape_string($con,$fieldTip) . "',"
    					. "size1=" . $fieldSize  . " "
    					. "	WHERE field_id=" . $fieldID . " AND page_id=" . $pageID . "";
    je pense que c'est un problème d'échappement qui est géré différemment mais je ne comprends pas pourquoi.
    Si vous allez faire un tour sur les différents sites (version fr uniquement car je n'ai pas encore finalisé la version US). Essayez de créer un formulaire avec un nom et une description, ajouter une page et ajoutez un textbox avec un titre comprenant des apostrophes puis essayez de modifier le titre sans rien changer puis validez : cela fonctionne (normalement?) sauf chez kelio.org

    c'est un peu confus, je sais... Je peux fournir l'ensemble des sources à étudier mais cela dépasserait vraisemblablement le cadre de ce forum.

    par avance merci

    Philippe

  4. #4
    Membre émérite Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 541
    Par défaut
    Salut,
    c'est ce que PHP appelle les guillemets magiques http://php.net/manual/fr/security.magicquotes.what.php , kelio semble utiliser une très vielle version de PHP. Pour les désactiver http://php.net/manual/fr/security.ma....disabling.php

  5. #5
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 27
    Par défaut
    Bonjour et ...

    Bingo ! C'était exactement le problème !

    A priori changer les magic_quotes_gpc à Off dans le php.ini n'a pas d'effet chez kelio.org.
    J'ai donc utilisé la solution par le code indiquée dans votre lien par un internaute contributeur (H PATEL) à savoir :
    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
     
    <?php
     
        $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
        while (list($key, $val) = each($process)) {
            foreach ($val as $k => $v) {
                unset($process[$key][$k]);
                if (is_array($v)) {
                    $process[$key][str_replace(array('\\'), '', $k)] = $v;
                    $process[] = &$process[$key][str_replace(array('\\'), '', $k)];
                } else {
                    $process[$key][str_replace(array('\\'), '', $k)] = str_replace(array('\\'), '', $v);
                }
            }
        }
        unset($process);
     
    ?>
    J'ai placé ce code au début de mon fichier update_field.php car l'erreur venait de là et depuis tout fonctionne normalement.
    Cette solution n'est semble-t-il pas la meilleure mais en attendant d'essayer une modif via un .htaccess , je m'en contenterai.

    Le bienfait n'est jamais perdu :Soyez-en sûr.
    Et encore merci. Je passe en résolu

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

Discussions similaires

  1. Gestion des apostrophes dans les xsl:value-of - select
    Par Emmanuel R dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 18/12/2015, 15h57
  2. Rajouter des apostrophes dans un champ
    Par MAMANHOU dans le forum VBA Access
    Réponses: 3
    Dernier message: 19/03/2014, 09h09
  3. [AC-2010] Gestion des nulls dans un champ texte
    Par sardaucar dans le forum IHM
    Réponses: 4
    Dernier message: 09/06/2013, 09h20
  4. gestion des apostrophes dans une chaîne de caractère
    Par Klemsy78 dans le forum Langage
    Réponses: 9
    Dernier message: 16/07/2009, 16h20
  5. [PHP-JS] Gestion des évènements dans PHP
    Par haffouff dans le forum Langage
    Réponses: 5
    Dernier message: 25/04/2006, 18h51

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