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 :

[PHP 5.5] Textarea ne prend plus caractères spéciaux


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 34
    Par défaut [PHP 5.5] Textarea ne prend plus caractères spéciaux
    Bonjour à tous,

    Je développe en php occasionnellement et ne suis pas au courant des finesses du métier... Soyez indugents ...

    Alors mon problème tel qu'il m'est apparu :
    J'ai codé un site il y a 3 ans (www.rc-slopes.com) contenant des formulaires, dont certains avec des textarea.
    Je suis hébergé chez 1and1 et il y a quelques semaines 1and1 a imposé le passage à la version 5.5 de php.
    Depuis, si les textarea de mes formulaires contiennent des caractères spéciaux, l'enregistrement en BDD de ces textarea donne un champ vide, alors que cela marchait très bien auparavant.

    Pour stocker l'info de la textarea nommée par exemple "legende" j'ai écrit ce 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
     
    if(isset($_POST['legende']))
    {
    $legende = htmlspecialchars(stripslashes($_POST['legende']));
    }
    else
    {
    $legende="";
    }	
    // On ajoute une entrée dans la table
    $req = $bdd->prepare('INSERT INTO pentes_slopes_pix([...], legende_pix, [...]) VALUES([...], :legendePix, [...]');
    $req->execute(array(
    	[...]
    	'legendePix' => $legende,
    	[...]
    	));
    	$req->closeCursor();
    Auriez-vous une idée de ce que je ne fais pas bien ?...

    Merci !
    Stéphane.

  2. #2
    Membre chevronné
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Par défaut
    Bonjour.

    1) 1and1 n'impose pas php5.5, il y a possibilité de choisir entre 5.4, 5.5 et 5.6 (espace client -> hébergement -> gérer l'espace web -> réglages PHP)

    2)
    var_export ou var_dump sur la variable $legend après le passage dans la condition if pour être certain qu'il y a bien des données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(isset($_POST['legende'])){
    $legende = htmlspecialchars(stripslashes($_POST['legende']));
    }
    else{
    $legende="";
    }
    exit(var_dump($legend));


    S'il y a effectivement les données attendues :
    Essaie d'activer/afficher les erreurs PDO qui t'indiqueront si l'erreur vient de l'insertion en BDD

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 34
    Par défaut
    Bonjour et merci pour cette réponse,

    Effectivement pour les versions de php chez 1and1. J'étais en 5.2 et elle n'est plus dispo.

    J'ai ajouté le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exit(var_dump($legende));
    Quand je mets "Test" dans ma textarea j'obtiens :
    string(4) "Test"

    Quand je mets "Tèst" dans ma textarea j'obtiens :
    string(0) ""

    Donc c'est avant la mise en base, merci pour cette info déjà . Quoi y faire ?

    Si c'est utile voici le html de ma textarea:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <label for="legende">Légende de cette photo (max 500 caractères) :</label>
    <textarea name="legende" rows="5" cols="45" maxlength="500"></textarea>

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Sa peut être une question d'encodage, essaye de changer iso-8859-1 en UTF8

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Question bête : à quoi te sert exactement ceci $legende = htmlspecialchars(stripslashes($_POST['legende'])); ?
    Vu que que la seule chose que tu en fais, c'est mettre la donnée en base et que tu fais l'insertion par PDO avec requête préparée, je ne vois pas trop l'intérêt.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 34
    Par défaut
    @m4riachi : Pour l'encodage ça me paraît pas cohérent avec le résultat du test que m'a proposé valaendra... Tu parles de l'encodage de mon fichier .php c'est bien ça ? Puisque la BDD est en dehors du problème.

    @Celira : Concernant htmlspecialchars(stripslashes()): Comme je l'ai signalé je n'ai pas beaucoup d'expérience. J'ai fait ce site en me basant sur des tutos d'il y a 3 ans, et j'avais retenu ça :
    htmlspecialchars me permet d'éviter que lors du ré-affichage des données stockées en BDD du code html ne soit intégré
    stripslashes je crois que ça me sert pour prendre en compte les retours à la ligne.

    Peut-être ma mémoire me fait défaut sur ces points, avec quelques explications je suis ouverts aux modifs !...

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

Discussions similaires

  1. Grand tableau qui prend plus d'une page
    Par Rabie de OLEP dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 1
    Dernier message: 03/01/2007, 22h22
  2. les caractères spéciaux et PHP
    Par Pallas4 dans le forum Flash
    Réponses: 6
    Dernier message: 14/09/2006, 18h58
  3. [PHP-JS] caractère spéciaux Ajax
    Par romano2003 dans le forum Langage
    Réponses: 3
    Dernier message: 01/08/2006, 18h25
  4. Insert d'un champ caractères spéciaux avec firebird et php
    Par PHILOSOPHE dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 14/05/2005, 11h18
  5. [FLASH MX2004] Caractères spéciaux et PHP
    Par Sun3clipse dans le forum Flash
    Réponses: 3
    Dernier message: 24/11/2004, 10h33

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