Place htmlspecialchars dans un script PHP

Resuelto

Hola,

Acabo de colocar mis scripts en otro servidor (infinityfree), pero estos no muestran los caracteres especiales.

He visto que se usa la función:

function htmlspecialchars(
     $string,
     $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401,
     $encoding = ,
     $double_encode =
):

Mais où la placer ? Uniquement dans le index.php ou dans tous les scripts ? Et à quel endroit ?

Merci

8 respuestas

  1. Añadir en connexion.php después de mysql_connect:

    mysql_set_charset('utf8');
    2
    1. ¡Gracias PHP! ¡Está bien!!!!! o;)

      1
  2. Hola,

    Sería mejor continuar la discusión anterior, porque el contexto y el historial tienen su importancia.

    Respecto a htmlspecialchars, su función es limpiar/asegurar un texto antes de registrarlo en una BBDD; esta función no solucionará el problema de acentos tras una migración de hosting.

    Así que, para entenderlo mejor, ya sería útil saber si el problema afecta al texto que está en la BDD, o si se trata de todo el texto de la página.


    0
    1. Hola,

      Mira los ejemplos:

      Lo vas a necesitar para todo lo que corresponde a mostrar contenido que ha sido introducido por un usuario (quieres dominar lo que se muestra y evitar inyecciones)

      (la respuesta de Feldrip también es válida)


      0
      1. Hola,

        Las funciones htmlspecialchars o htmlentities, como sus nombres indican, deben usarse al mostrar datos en un documento HTML.

        A diferencia de una mala práctica lamentablemente común, no se debe usar htmlspecialchars antes de guardar en la base de datos (BDD) porque esto generará otros problemas en el procesamiento de los datos en la BDD.
        Más información: zestedesavoir.com/articles/2489/ne-pas-confondre-faille-par-injection-sql-et-faille-xss/

        Si el problema de visualización de caracteres especiales proviene de los datos presentes en la BDD, el problema suele deberse al charset de la conexión a la BDD.
        Simplemente hay que definir el charset después de la conexión, mediante set_charset con mysqli o en el DNS con PDO (cf. primer comentario en la doc) :

        www.php.net/manual/fr/mysqli.set-charset.php
        www.php.net/manual/fr/pdo.construct.php
         

        0
        1. ¡Pero no puedo lograrlo! Aunque ya lo hice, no recuerdo dónde.

          <center><br><br> Este sitio presenta una genealogía de las ramas <b>HUMBERT, DAMERON ,DAQUIN</b> y <b>MALFOI</b> <br>Por motivos de confidencialidad, solo se presentarán los años de nacimiento < año actual - 110.<p> El nombre <b>DAQUIN</b> estaba escrito <b>DACQUIN</b> o <b>D'ACQUIN</b> hasta mediados del siglo XVIII.<br> El nombre <b>MALFOI</b> estaba escrito <b>MALFOY</b> hasta mediados del siglo XIX. <BR><BR><BR> Esta genealogía se compone de : <?php include ('connexion/connexion.php'); $date = date("Y"); $date2 = $date-110; $query = 'SELECT count(id) FROM individus WHERE (SUBSTRING(date_naissance, -4) < "'.$date2.'" )'; $result = mysql_query($query) or die (mysql_error()); $resultat=mysql_fetch_row($result); echo "$resultat[0] individus<p>dont<br>"; $query2 = 'SELECT count(id), MIN(RIGHT(date_naissance, 4)) AS date FROM individus WHERE famille LIKE "%HUMBERT%" AND (SUBSTRING(date_naissance, -4) < "'.$date2.'" )'; $result2 = mysql_query($query2) or die (mysql_error()); $resultat2=mysql_fetch_row($result2); $row2 = mysql_fetch_array($result2); echo "$resultat2[0] individus dans la branche xxxxxx <br>"; echo ''.$row2['date'].''; ?> Elle a été préparée et éditée par : <p>XXXXXXX &nbsp;&nbsp; <br> N'hésitez pas à me contacter .....
          0
          1. En fait, ce sont les é, les è et les à qui sont remplacés par �

            ????

            0
            1. Moderador

              Hola,

              Como señalé antes, los problemas de acentos pueden estar relacionados con el charset de la base de datos. Y cuando se mueve una base, puede estar relacionado con la base de origen, con el procedimiento de exportación, con el procedimiento de importación y con la configuración de la base final. Nunca he tocado esto en MySQL, pero es un problema que también encontraba en las bases Oracle.

              Y no olvidar el charset de las páginas web.

              <!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8">
              0
              1. ¿Le applicant d’utilisez pas espagnol?
                0