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 :

Enregistrer du texte avec apostrophe


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 412
    Par défaut Enregistrer du texte avec apostrophe
    Bonjour à tous

    j'ai un souci que je n'arrive pas à résoudre.

    Voici ce que j'ai :
    - 1 formulaire
    - 1 page de traitement
    - une table

    Donc, J'ai un formulaire avec un "submit" qui envois vers ma page de traitement pour enregistrement dans ma BDD
    ma table est en "utf8_general_ci"
    mes colonnes textes de la table sont également en utf8_general_ci

    voici le code de ma page de traitement
    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
    <?php
      //connection au serveur
      include('../config.php');
     
      //modification des caractères avec accents
      mysqli_query($conn,"SET CHARACTER SET 'utf8'");
      //mysqli_query($conn,"SET SESSION collation_connection ='utf8_unicode_ci'");
     
      $date_FR = date('d/m/Y');
     
      //récupération des valeurs des champs:
      $id = "" ;
      $type = $_POST["type"] ;
      $observation = $_POST["observation"] ;
      //création de la requête SQL:
     
      $sql = "INSERT  INTO info_temp(date, type, observation)
    VALUES ( '$date_FR', '$type' , '$observation') " ;
     
      $requete = $conn->query($sql);
     
      if($requete)
      {
         header("location:" . "liste_info_temp.php");
      }
      else
      {
         header("location:" . "liste_info_temp.php");
      }
    ?>
    <?php
      }else include('../interdit.php');
    ?>
    Si je mets des accents dans mon texte, cela s'enregistre bien
    Cependant, si je mets des apostrophes comme "aujourd'hui" l'enregistrement ce fait pas.

    Quelqu'un aurait il une idée pour me sauver

    Merci à vous

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    Il faut échapper les valeurs injectées au SQL.

    Avec PDO on fait $new_value = $pdo->quote($value);

    Avec mysqli $new_value = mysqli_real_escape_string($conn, $value);

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    Citation Envoyé par UDSP50 Voir le message
    Quelqu'un aurait il une idée pour me sauver

    Ce code n'est absolument pas acceptable en 2023. C'est le genre de code qu'on voyait il y a 20 ans mais qui était déjà vulnérable.
    A mon avis, vous êtes tombé sur des vieux tutos et vous n'êtes pas le premier.

    Accessoirement, il serait bien que votre formulaire utilise le charset UTF8 aussi, sinon vous risquez de vous retrouver avec des bizarreries au moment d'enregistrer les données, transcodage de certain caractères notamment les accents.

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    Ah oui c'est mysqli et non PDO qui est utilisée (pourquoi ?) avec un joyeux mélange de syntaxe objet et procédurale, je corrige mon exemple.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 412
    Par défaut
    Grand merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $new_value = mysqli_real_escape_string($conn, $value);
    me convient très bien et fonctionne

    Encore merci

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    J'espère que vous avez bien lu et compris la doc:
    Security: the default character set

    The character set must be set either at the server level, or with the API function mysqli_set_charset() for it to affect mysqli_real_escape_string(). See the concepts section on character sets for more information.
    Ce n'est pas forcément la panacée que vous croyez si c'est mal implémenté.

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

Discussions similaires

  1. [Encodage] utiliser dans une boucle PHP des textes avec apostrophes
    Par Invité dans le forum Langage
    Réponses: 6
    Dernier message: 05/07/2018, 23h16
  2. Recherche de Texte avec apostrophe
    Par amazon dans le forum Requêtes
    Réponses: 1
    Dernier message: 18/09/2009, 12h26
  3. Comment insérer un texte avec apostrophe et %
    Par Lucas Panny dans le forum Bases de données
    Réponses: 5
    Dernier message: 28/04/2009, 09h49
  4. [MySQL] Problème récupération données avec apostrophe
    Par Nata31 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 21/07/2006, 16h26
  5. [MySQL] Problème d'insertion avec apostrophe
    Par cari dans le forum PHP & Base de données
    Réponses: 86
    Dernier message: 11/07/2006, 12h21

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