Foros del Web » Programando para Internet » PHP »

Problemas con addslashes()

Estas en el tema de Problemas con addslashes() en el foro de PHP en Foros del Web. Hola a todos Tengo una duda cuando usa la funcion addslashes() para presentar datos ; no hay error con los apostrofes , pero con las ...
  #1 (permalink)  
Antiguo 12/09/2005, 09:43
 
Fecha de Ingreso: agosto-2005
Mensajes: 104
Antigüedad: 12 años, 10 meses
Puntos: 0
De acuerdo Problemas con addslashes()

Hola a todos
Tengo una duda cuando usa la funcion addslashes() para presentar datos ;
no hay error con los apostrofes , pero con las comillas surge un error de javascript el cual me dice que es una "constante de cadena sin terminar".

El campo donde guardo se llama apellidos ( por ejm : D" orso ; D' alipio ) es de tipo varchar

He revisado el php.ini y esta activado :
magic_quote_gpc =ON

espero que alguien pueda absolverme de esta duda

Gracias

Última edición por FER_S; 12/09/2005 a las 10:06
  #2 (permalink)  
Antiguo 12/09/2005, 10:45
Avatar de mega82es  
Fecha de Ingreso: septiembre-2005
Mensajes: 38
Antigüedad: 12 años, 9 meses
Puntos: 0
Exclamación

no podrias poner parte del codigo fuente resultante????

yo tuve un problema similar hace poco, y el problema era que el texto que escape con addslashes tenia saltos de linea, que javascript no acepta.

Ojala sirva de algo
  #3 (permalink)  
Antiguo 12/09/2005, 11:35
 
Fecha de Ingreso: agosto-2005
Mensajes: 104
Antigüedad: 12 años, 10 meses
Puntos: 0
Hola
lo q pasa es que es una ventana emergente , desde esta ventana devuelvo datos a la ventana padre.

uso este codigo : opener.document.form.apellidos.value = '$apellido';

pero el mensaje de error sale en la ventana emergente cuando lista los apellidos ya que hay apellidos que tienen comillas o apostrofes , con los apostrofes no hay problema los devuelve normal a la ventana padre y cierra la ventana emergente , pero con las comillas simplemente no lo ejecuta y queda ahi.

el mensaje de error de javascript solo aparece si hay algun apellido con comillas :
"constante de cadena sin terminar".
  #4 (permalink)  
Antiguo 12/09/2005, 14:59
Avatar de mega82es  
Fecha de Ingreso: septiembre-2005
Mensajes: 38
Antigüedad: 12 años, 9 meses
Puntos: 0
checate el codigo fuente de la ventana emergente, tiene que tener algo asi:

Código:
opener.document.form.apellidos.value = 'D\' alipio';
Si usas comillas dobles en la asignacion no se ocupa la barra invertida

Código:
opener.document.form.apellidos.value = "D' alipio";
  #5 (permalink)  
Antiguo 13/09/2005, 12:01
 
Fecha de Ingreso: agosto-2005
Mensajes: 104
Antigüedad: 12 años, 10 meses
Puntos: 0
De acuerdo

Hola a Todos
sigo con lo mismo el problema de las comillas ahi les va el codigo :

formulario ventana_padre.html
/////////////////////////////////////////

Código HTML:
<form name="form1" method="post" action="insertar.php">
    
	<input type="text" name="texto">  
            <input type="text" name="busca_tex">
  	<input type="submit" name="Submit" value="Enviar">
	
</form>



<form name="form2" method="post" action="muestra.php">
	<input type="text" name="busca_texto2">
  	<input type="button" name="Submit" value="Mostrar" onClick="window.open('ventana_emergente.php?campo=busca_tex','','width=600,height=500');">

	
</form> 

formulario insertar.php
//////////////////////////////////////////////////////////
Código PHP:
<?
mysql_query
("INSERT INTO tabla VALUES( '$[texto]' , '$_POST[busca_tex]' )" $link )or die("_________________ERROr INSErT".mysql_error());

?>

formulario ventana_emergente.php
//////////////////////////////////////////////////////////

Código PHP:
<?

include("conexion.php");
// El campo descripcion o nombre puede contener comillas o apostrofes
// con las comillas es donde surge el error
                
        
echo "<table border=\"1\" width=\"400\">";
        echo 
"<tr>";
        echo 
"<td>&nbsp;DESCRIPCION</td>";
        echo 
"<td>&nbsp;NOMBRE</td>";
        echo 
"</tr>";        
        
        
$consmysql_query("select * from tabla ");
        while(
$fila=mysql_fetch_array($cons))
        {
            
$des=addslashes($fila['descrip']);
                                       
// $des    es   descripcion

            
echo "<tr>";
            echo 
"<td width=\"600\">$fila[descrip]</td>";
            echo 
"<td width=\"200\">$fila[nombre]</td>";
             echo 
"<td><input type=\"submit\" value=\"OK\" onclick=\"opener.document.form1.busca_texto2.value = '$des';    

                         window.close();\"></td>"
;            
            echo 
"</tr>";            
        }
    echo 
"</table>";

/*con los apostrofes normal  pasa la descripcion a la ventana_padre, pero el problemas es cuando hay  comillas no lo pasa  y bota error de javascript : constante de cadena sin terminar
*/

?>
  #6 (permalink)  
Antiguo 14/09/2005, 09:59
Avatar de mega82es  
Fecha de Ingreso: septiembre-2005
Mensajes: 38
Antigüedad: 12 años, 9 meses
Puntos: 0
  • El primer problema que encontre es que busca_texto2 pertenece al form2 y no al form1.
  • Y respecto al problema de las comillas se da porque en HTML la comilla doble (") se debe escapar reemplazandola con su equivalente en HTML (&quot;) eso es por que el valor del atributo onclick es todo lo que esta entre las comillas siguientes, o sea:

    opener.document.form2.busca_texto2.value = 'rarj635&quot;'; window.close();

  • Entonces hay que reemplazar la comilla doble por &quot; con la siguiente linea, antes de usar stripslashes:

    $des = str_replace("\"","&quot;",$des);

ASI SI:
<input type="submit" value="OK" onclick="opener.document.form2.busca_texto2.value = 'rarj635&quot;'; window.close();">


ASI NO:
<input type="submit" value="OK" onclick="opener.document.form2.busca_texto2.value = 'rarj635\"'; window.close();">


Espero que con esto se haya solucionado el problema

Última edición por mega82es; 14/09/2005 a las 10:06
  #7 (permalink)  
Antiguo 14/09/2005, 13:08
 
Fecha de Ingreso: agosto-2005
Mensajes: 104
Antigüedad: 12 años, 10 meses
Puntos: 0
De acuerdo

Hola mega82es
gracias por la respuesta voy a probarlo y despues te digo como me fue con los cambios
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 14:08.