Foros del Web » Programando para Internet » PHP »

addslashes caracteres extraños.

Estas en el tema de addslashes caracteres extraños. en el foro de PHP en Foros del Web. Hola a todos: Vereis estoy empezando con PHP y la verdad que me está costando asimilar algunas de las cosas, aunque supongo que todo es ...
  #1 (permalink)  
Antiguo 01/03/2008, 12:25
 
Fecha de Ingreso: febrero-2002
Mensajes: 351
Antigüedad: 22 años, 2 meses
Puntos: 19
addslashes caracteres extraños.

Hola a todos:

Vereis estoy empezando con PHP y la verdad que me está costando asimilar algunas de las cosas, aunque supongo que todo es cuestión de praticar y hacer las cosas varias veces.

Bien, pues el caso es que he llegado a la parte del formateo de cadenas y hablan que la función addslashes sirve para marcar caracteres como caracteres especiales para introducirlos en las bases de datos.

Todo muy bien, pero tengo un campo de formulario donde introduzco texto y hay algunos caracteres que una vez pasados a esa función addslashes me los muestra extraños, como por ejemplo la interrogación ? y las vocales con acento ó á etc... Todos los demás carácteres me los muestra correctamente, pero estos no.

¿Alguien me explica por qué razón ocurre eso?

Muchas gracias y un saludo.
  #2 (permalink)  
Antiguo 01/03/2008, 12:31
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: addslashes caracteres extraños.

addslashes()

Cita:
Iniciado por PHP.net
Los caracteres que se escapan son la comilla simple ('), comilla doble ("), barra invertida (\) y NUL (el byte NULL).
Si te aparecen caracteres extraños, puede que sea problemas de codificaion. Qué codificación usas? addslashes() no modifica el texto, sólo agrega las barras invertidas a esos caracteres.

Un saludo,
  #3 (permalink)  
Antiguo 01/03/2008, 12:31
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Re: addslashes caracteres extraños.

Código PHP:
    // Puedes utilizar la funcion para eliminar algun caracter en especifico
    

$usuario strtolower(quitar($HTTP_POST_VARS["usuario"])); 
es que esa funcion segun creo se usa para quitar del mensaje caracteres no validos, para que nadie pueda introducir en los campos codigo de programacion por ejemplo, si no te hace falta no la uses.
  #4 (permalink)  
Antiguo 01/03/2008, 12:32
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: addslashes caracteres extraños.

@jaronu, PHP no dispone de la función quitar(). Si copiaste ese trozo de código de algún lado, te faltó poner la definición de la función quitar().

Saludos,
  #5 (permalink)  
Antiguo 01/03/2008, 12:33
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Re: addslashes caracteres extraños.

fijate en esto:


<?php
$cadena = "¿Te apellidas O'reilly?";

// La salida seria: ¿Te apellidas O\'reilly?
echo addslashes($cadena);
?>
visita: http://es2.php.net/manual/es/function.addslashes.php
  #6 (permalink)  
Antiguo 01/03/2008, 12:34
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Re: addslashes caracteres extraños.

tienes razon

function quitar($mensaje)
{
$nopermitidos = array("'",'\\','<','>',"\"");
$mensaje = str_replace($nopermitidos, "", $mensaje);
return $mensaje;
}
  #7 (permalink)  
Antiguo 01/03/2008, 12:46
 
Fecha de Ingreso: febrero-2002
Mensajes: 351
Antigüedad: 22 años, 2 meses
Puntos: 19
Re: addslashes caracteres extraños.

¡¡¡Que rapidez en las respuestas!!! Muchas gracias a todos los que me habeis respondido.

Mirad el ejemplo:
http://www.saharaverde.org/php/formu...adenas_bd.html

Rellenad el apartado último por ejemplo escribiendo:
¿Por qué me salen estos caracteres tan raros?

A mi lo que me sale es la primera interrogación con un fondo negro y la letra é que tiene el acento me pone una interrogación con el fondo negro y no me muestra ni la letra ni nada de nada. Eso en Mozilla, en Internet Explorer salen como cuadrados sin fondo.

El código que tengo es muy simple:
Código:
<?php

 // Creamos los nombres de variables cortos procedentes del formulario
  $name = $_POST['name'];
  $email = $_POST['email'];
  $feedback = $_POST['feedback'];

# Modifico el formato de la cadena introducida en el apartado del formulario feedback
$feedback = addslashes($feedback);

 // Muestro el resultado final de las variables de formulario 
  echo $name;
  echo "<br />";
  echo $email;
  echo "<br />";
  echo $feedback;

?>
Haber si a alguien mas le ha pasado lo que a mi o es problema con los navegadores de mi ordenador y realmente se ven bien.

Un saludo a todos y gracias de nuevo por todo.

Última edición por KLAYMAN; 01/03/2008 a las 13:13
  #8 (permalink)  
Antiguo 01/03/2008, 13:01
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: addslashes caracteres extraños.

Yo lo veo bien

Haber, prueba colocando al inicio del script:

Código PHP:
$_POST array_map("utf8_decode"$_POST); 
Un saludo,
  #9 (permalink)  
Antiguo 01/03/2008, 13:05
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Re: addslashes caracteres extraños.

esa funcion es para cambiar saltos de linea o espacios por bbaras inclinadas i tambien algo relacionado con las comillas dobles y simples

pero que quieres conseguir con esto


$feedback = addslashes($feedback);
  #10 (permalink)  
Antiguo 01/03/2008, 13:10
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: addslashes caracteres extraños.

@jaronu, addslashes() es usado más que todo para insertar datos a una base de datos sin que exista el riesgo de un SQL Injection o simplemente para evitar que produzca errores nuestro código al usar las comillas imples, barras y esas cosas. La razón por la que la usa no es lo importante aquí, es más, esa no es la causa del problema (¿O sí? KLAYMAN,si imprimes los datos sin pasarlos por addslashes() los imprime bien?).

Saludos!
  #11 (permalink)  
Antiguo 01/03/2008, 13:18
 
Fecha de Ingreso: febrero-2002
Mensajes: 351
Antigüedad: 22 años, 2 meses
Puntos: 19
Re: addslashes caracteres extraños.

Chicos, he añadido el enlace para que lo probeis, que no se porque razón antes no lo puse o no salió bien. Es este:
http://www.saharaverde.org/php/formu...adenas_bd.html

Si rellenais el último apartado de ese formulario poniendo algo así como:
¿Por qué salen mal los caracteres?
Vereis lo que pasa. He probado en dos ordenadores y en los dos me pasa, aunque es posible que sean problemas mios, pero bueno ya me direis.

Intentar no intento nada, sólo saber si cuando me ponga a meterle mano a las bases de datos voy a tener este problema. Por eso pregunto antes.

okram, si imprimo los caracteres sin usar la función addslashes() lo hace correctamente sí.

Bueno, en caso de que os ocurra lo mismo, me pondré en contacto con el servicio de atencion al cliente donde tengo alojada la web y que me indique si hay algún problema o es cosa mia.

Un saludo y de nuevo muchas gracias a todos los que me estais ayudando.
  #12 (permalink)  
Antiguo 01/03/2008, 13:22
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Re: addslashes caracteres extraños.

no entiendo demasiado pero es raro, parece, a lo mejor alguna mala configuracion del php. ini o algo asi.
yo he tenido problemillas con mi hosting y el php y eso que usan php 5
  #13 (permalink)  
Antiguo 01/03/2008, 13:31
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: addslashes caracteres extraños.

Es un problema de codificación. Estoy seguro.

En tu formulario agrega estas lineas entre <head> y </head>

Código HTML:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
Saludos,
  #14 (permalink)  
Antiguo 01/03/2008, 13:35
 
Fecha de Ingreso: febrero-2002
Mensajes: 351
Antigüedad: 22 años, 2 meses
Puntos: 19
Re: addslashes caracteres extraños.

ACTUALIZO:
He estado mirando alguna web que indique algo sobre este tipo de problemas y lo único que podría ser es que no se debe usar addslashes( ) si magic_quotes_gpc está on, esto hará un doble escape a tu entrada y dará problemas. En mi caso, magic_quotes_gpc está on... pero no se si debe ser esta la razón por la que me da problemas con estos carácteres.

Cita:
Es un problema de codificación. Estoy seguro.

En tu formulario agrega estas lineas entre <head> y </head>
El caso es que ese código que me has dado ya la tengo agregado:

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Aplicar formato a cadenas para bases de datos utilizando las funciones addslashes y stripslashes</title>
</head>

<body>

<?php

 // Creamos los nombres de variables cortos procedentes del formulario
  $name = $_POST['name'];
  $email = $_POST['email'];
  $feedback = $_POST['feedback'];

# Modifico el formato de la cadena introducida en el apartado del formulario feedback
$feedback = addslashes($feedback);

 // Muestro el resultado final de las variables de formulario 
  echo $name;
  echo "<br />";
  echo $email;
  echo "<br />";
  echo $feedback;

?>

</body>

</html>
En fin, después escribiré a la empresa esta a ver que ocurre, anque recuerdo que alguna he visitado alguna web y me ha ocurrido algo parecido.

Un saludete a todos y os debo una

Última edición por KLAYMAN; 01/03/2008 a las 13:42
  #15 (permalink)  
Antiguo 01/03/2008, 15:05
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: addslashes caracteres extraños.

El codigo que te pase era para que coloques en el formulario, no en la pagina que muestra el resultado. Lo probe asi y funciona bien

Saludos.
  #16 (permalink)  
Antiguo 01/03/2008, 15:14
 
Fecha de Ingreso: febrero-2002
Mensajes: 351
Antigüedad: 22 años, 2 meses
Puntos: 19
Re: addslashes caracteres extraños.

Cita:
El codigo que te pase era para que coloques en el formulario, no en la pagina que muestra el resultado. Lo probe asi y funciona bien
¡¡¡Eres Dios!!!, tienes toda la razón, acabo de corregir la web del formulario y ahora si lo muestra correctamente

Muchas gracias por tomarte esas molestias de probarlo okram.

Y a todos los que me han ayudado también les doy las gracias.

Un saludo.
  #17 (permalink)  
Antiguo 21/02/2010, 03:18
 
Fecha de Ingreso: diciembre-2009
Ubicación: Guayaquil
Mensajes: 16
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: addslashes caracteres extraños.

Que tal, espero también aportar algo
Resulta que buscando algo de información referente al tema el otro día, encontré algo útil
cuando usas:

addslashes($dato)

se está blindando el contenido para por supuesto evitar inserciones no deseadas a menos con scripts sql

Y la manera de desblindarlo o al menos volver a transformar al valor original la variable lo único que hay que hacer es usar otra de las grandiosas funciones de php que sería

stripslashes($dato);



ejemplo práctico:

$dato = "Hola que tal";
$dato = addslashes($dato); //blindo la variable

echo stripslashes($dato); // muestro la variable en su valor original
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:23.