2009-04-04 27 views
6

Tengo un cuadro de texto en mi sitio web y necesito almacenar lo que el usuario ingrese en mi base de datos y recuperarlo en otro momento. Necesito almacenarlo exactamente como lo ingresó el usuario, incluyendo caracteres especiales, retornos de carro, etc.PHP - Almacenamiento de texto en la base de datos MySQL

¿Qué proceso debo usar en PHP para almacenar esto en el campo de mi base de datos (que es un campo de 'texto')? ¿Debería usar PHP html_encode o algo así?

Gracias.

Editar: También necesito almacenar el formato correcto, es decir, pestañas y espacios múltiples.

Respuesta

4

No debe codificar html los datos al escribirlos en el almacenamiento de datos, de esa manera podría usar sus datos también para otra cosa (por ejemplo, correos electrónicos, documentos PDF, etc.). Como ya dijo Assaf: es obligatorio evitar las inyecciones de SQL escapando de la entrada o usando peticiones de inserción parametrizadas.

Debería, no, digamos, debe sin embargo html-encode sus datos al mostrarlo en una página HTML! Eso hará que el código HTML o Javascript sea inútil ya que las etiquetas HTML presentes en los datos ya no serán reconocidas como etiquetas HTML por el navegador.

El proceso es un poco más complicado cuando permite que los usuarios publiquen datos con etiquetas HTML dentro. Luego debe omitir la codificación de salida a favor de una desinfección de entrada que puede ser compleja arbitraria según sus necesidades (etiquetas permitidas, por ejemplo).

3

No tiene para codificarlo con el fin de almacenarlo en un mysql.

Asegúrese de utilizar un comando de inserción parametrizado para evitar la inyección SQL.

+0

idea genial ... muchas gracias señor ... –

3

El siguiente debería funcionar:

if (get_magic_quotes_gpc()) { 
    $content = stripslashes($content); 
} 
$content = mysql_real_escape_string($content); 

Si su columna es UTF-8, que no debería tener problemas con los caracteres especiales. Una vez que haya formateado el contenido correctamente, puede alimentarlo a mysql utilizando sus métodos de inserción estándar.

5

Uso mysql_real_escape_string():

$safetext = mysql_real_escape_string($_POST['text']); 
$query = "INSERT INTO my_table (`my_field`) VALUES ('$safetext')"; 
mysql_query($query); 

que debería funcionar.

1

Para almacenar correctamente el texto del usuario además del formato, todo lo que tiene que hacer es convertir todas las líneas nuevas en intervalos usando nl2br($inputtext). Haga esto después de filtrar la entrada.

Cuestiones relacionadas