Pregunta

Updated El área de texto que he proporcionado en forma toma la entrada del usuario como cadenas

cadena que contiene comillas dobles se inserta en la base de datos incompletos ..

He una cadena insertada en el área de texto

"No se preocupe demasiado acerca de diseño / diseño / tamaño del texto, que a menudo se "Condimentar" (es decir, negrita, cursiva, espaciamiento) su banner para una mejor aspecto general.

Y al insertar la cadena en el extremo DB cadena GET a

No se preocupe demasiado acerca de diseño / diseño / tamaño del texto, vamos a menudo

y se inserta parcialmente .. ¿Qué debo hacer para permitir que todas las comillas simples y dobles que se insertan?

EDITAR ON REQUEST

A continuación se muestra la consulta que estoy usando para insertar en la base de datos usando PHP

"inserto en products_description (Products_id, products_name, products_logo_name1, products_logo_name2, products_logo_name3, products_description) valores ( '". (Int) $ products_id. " '' Banner_". $ Products_id. " ''". $ _POST [ 'logoimage1']. "', ' "$ _POST [ 'logoimage2']."', ' "$ _POST [ 'logoimage3']."', '" .Mysql_real_escape_string ($ _POST [ 'description']). "')"

Aquí mysql_real_escape_string ($ _POST [ 'description']) no se escapa entre comillas dobles y por lo tanto, la inserción trunca en qué se debe hacer?

¿Fue útil?

Solución

LOL
no han leído toda pregunta pero estoy seguro de que sé la respuesta

que está siendo insertado en la base de datos de acuerdo, a continuación, recupera bien, y luego entra en valor del campo de formulario HTML ... ; -)

Bueno, en serio.
Usted tiene que seguir el paso a paso los datos.
Hay algo de código maligno en su aplicación, que hace que algunas cosas malas.
Usted tiene que seguir su flujo de datos y comprobar en qué etapa se pone en mal
Sólo imprimir los datos a cabo en los siguientes pasos:

  • después de recibir los datos del formulario
  • antes de insertar en la base de datos
  • después de recuperar la base de datos
  • antes de imprimir de nuevo en forma

Esto es tu culpa en general: se toma proceso de varias etapas como un solo paso
. Usted mira a su cadena que se inserta en área de texto y la próxima vez que lo vea en esta área de texto truncado. Y piensan ¿Es cuestión de base de datos. Aunque no se puede estar tan seguro - hay muchos pasos en la base de datos no está involucrado. Observe a su aplicación como no es un bloque sólido, sino como un proceso de múltiples etapas.

Otros consejos

Escape de las comillas dobles dentro de la cadena, así:

$theString = "Hello, i wonder what all these \"quotes\" are doing in here...";

La barra invertida le dirá al compilador para ignorar el "significado" de la folowing comillas dobles, y tratarla como un carácter normal (Esto es lo que llamamos "Escapar").

También puedes ver mysql_real_escape_string() cuando se trabaja con la entrada del usuario (Esto se escapará automáticamente todos los elementos peligrosos en cuerdas para su uso en una base de datos mySQL).

Utilice la función mysql_real_escape_string() si viene de entrada del usuario.

mysql_real_escape_string () Las llamadas a funciones de biblioteca mysql_real_escape_string de MySQL, que antepone barras invertidas a los siguientes caracteres:. \ X00 \ n \ r, \,', "y \ X1A

Esta función debe siempre (con pocas excepciones) se utiliza para hacer seguros los datos antes de enviar una consulta a MySQL.

Como por Scouldings de @COL Sharpnel: -)

Gracias por hacerme Agauin scould yo .. a veces es necesario

i se hizo eco de los $ _POST [ 'description'] y esto muestra como

No se preocupe demasiado acerca de diseño / diseño / tamaño del texto, vamos a menudo

y cuando i utilizado

htmlspecialchars (stripslashes ($ _POST [ 'description']))

Me dio cadena completa

"No se preocupe demasiado acerca de diseño / diseño / tamaño del texto, que a menudo se "Condimentar" (es decir, negrita, cursiva, espaciamiento) su banner para una mejor aspecto general.

> MORAL DE POST: No se deje más de confianza En el espagueti CÓDIGO

Es necesario para escapar de sus cotizaciones.

Si su base de datos es MySQL, pasar todos sus datos a través de la función mysql_real_escape_string() antes de guardarlos en la base de datos.

Si no lo hace, corre el riesgo de grandes agujeros de seguridad en su código, no sólo datos que van perdiendo!

(en caso de que no está haciendo ya, también debe estar escapando otros datos para otros fines, así, por ejemplo, datos que se envían de vuelta al navegador debe ser escapado para evitar que usuarios deshonestos añadir código HTML o Javascript a ella para manipular su sitio.

Hay una serie de funciones en PHP para hacer frente a agregar y quitar los caracteres de escape y el filtrado de datos. Si desea que su sitio sea seguro, es necesario aprender estas funciones y técnicas.

[editar]

Después de ver tu edición:

En primer lugar, tiene que escapar de todas las cadenas en la consulta, no sólo la descripción, por lo que añadir a escapar $_POST['logoimage1'], etc, ya que tendrá los mismos problemas si alguno de los que contienen comillas.

Sin embargo, el escape en la descripción miradas de campo correcto, así que no sé por qué se trunca. La página del manual para mysql_real_escape_string() afirma que escapa comillas dobles e individuales, por lo que debe estar bien para usted. Esto se comprueba por la impresión () ing la cadena SQL de escape completo; esto demostrará si hay algo de dejó sin escape.

disparo en la oscuridad - ¿Ha comprobado la longitud máxima de su campo de descripción de la base de datos? Eso podría también se trunque la cadena .. aunque poco probable; Me imagino que si que está introduciendo con un área de texto se le han configurarlo para ser lo suficientemente largo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top