Imaginar un blog o un sistema cms (PHP y MySQL). Quiero dejar que el usuario escriba un texto en un área de texto y guardarlo en la base de datos. El tipo de campo en la base de datos de TEXTO.

Que quiero conservar saltos de línea e imprimirlos más tarde. Sé que puedo hacer esto con PHP nl2br-función, pero ¿cómo puedo proteger a esta cadena en contra de los ataques de inyección SQL (vamos a suponer que no se pueden utilizar las declaraciones preparadas). Si yo uso mysql_real_escape_string en ella, no me muestra los saltos de línea más.

$text = 'one line
another line';
$text = mysql_real_escape_string($text);
/* save to db, fetch it some time later */
echo nl2br($text); /* output: one line\r\nanotherline */

OriginalEl autor Gabb0 | 2010-08-14

3 Comentarios

  1. 9

    mysql_real_escape_string no quitar saltos de línea, es escapa ellos.

    Debería funcionar bien para escapar de la cadena cuando el almacenamiento, y la aplicación de nl2br (posiblemente en combinación con htmlspecialchars() para evitar que los usuarios entren en HTML puro) cuando los datos se salida. Ese es el mejor camino a seguir.

    +1 Korrect Potter

    OriginalEl autor Pekka 웃

  2. 1

    mysqli_real_escape_string reemplazará a su retorno de carro con \r\n, por lo tanto, usted necesita para obtener de nuevo el uso de str_replace(). Sin embargo, todavía no será visible en su navegador o cliente de correo electrónico. Que es donde nl2br() entra en juego:

    $text = 'one line
    another line';
    echo nl2br(str_replace("\r\n","
    ", mysqli_real_escape_string($dbc, $text )));

    El código es probado, se puede utilizar.

    OriginalEl autor bromelio

  3. -2

    Si puedo usar mysql_real_escape_string en ella, no me muestra los saltos de línea más.

    no ver "\n" literales en lugar de los saltos de línea?

    si es así, el código haciendo algunas cosas desagradables, lo más probable es que escapar de sus datos dos veces.

    o, no mysql_real_escape_string() después de obtener los datos de una base de datos?

    De todos modos, tienes que hacer algo de depuración – una investigación, para ver lo que sucede a sus datos en cada etapa. Sólo imprima $_POST[‘textarea_name’], consulta de SQL, etc.

    Para ver el momento en que pierden sus descansos y para encontrar un delincuente

    Notas:

    mysql_real_escape_string no protegen nada de cualquier ataque. Se escapa de los delimitadores.

    nl2br no conservar nada. Añade una etiqueta HTML para los saltos de línea.

    OriginalEl autor Your Common Sense

Dejar respuesta

Please enter your comment!
Please enter your name here