Foros del Web » Programando para Internet » PHP »

problema con datos que la función recoge

Estas en el tema de problema con datos que la función recoge en el foro de PHP en Foros del Web. hola, la función es esta: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original public function updateClave ( $datos ) {     parent :: conectar ( ) ...
  #1 (permalink)  
Antiguo 02/01/2012, 13:46
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 20 años, 11 meses
Puntos: 8
problema con datos que la función recoge

hola, la función es esta:
Código PHP:
Ver original
  1. public function updateClave( $datos )
  2. {
  3.     parent::conectar();
  4.     $mypws = $this->getPasswd( $datos[ 0 ] );
  5.    
  6.     if ( $mypws != md5( $datos[ 1 ] ) ) {
  7.         $rep = 'La contraseña actual no es válida. Intente de nuevo.|1';
  8.     }
  9.     else {
  10.         $str = sprintf( "UPDATE contactos SET con_passwd = '%s' WHERE con_id = %d",
  11.                          mysql_real_escape_string( md5( $datos[ 2 ] ) ),
  12.                          mysql_real_escape_string( $datos[ 0 ] ) );
  13.         if ( mysql_query( $str ) ) {
  14.             $rep = 'La contraseña fue cambiada. En su próximo inicio de sesión podrá usarla.|0';
  15.         }
  16.         else {
  17.             $rep = 'La contraseña no pudo ser cambiada. Inténtelo de nuevo más tarde.|1';
  18.         }
  19.     }
  20.     mysql_close();
  21.    
  22.     return $rep;
  23. }
Siempre lo hago así, al menos no puedo ver donde está la falla, cuando en vez de return $rep escribo return $str para ver si la consulta se formó me sale esto:
Código PHP:
Ver original
  1. UPDATE contactos SET con_passwd = '' WHERE con_id = 0
pero cuando imprimo los datos que recogo directamente estos si se muestran:
Código PHP:
Ver original
  1. public function updateClave( $datos )
  2. {
  3.     parent::conectar();
  4.     $mypws = $this->getPasswd( $datos[ 0 ] );
  5.    
  6.     if ( $mypws != md5( $datos[ 1 ] ) ) {
  7.         $rep = 'La contraseña actual no es válida. Intente de nuevo.|1';
  8.     }
  9.     else {
  10.         $dat = $datos[ 0 ] . " - " . $datos[ 1 ] . " - " . $datos[ 2 ];
  11.         /*
  12.         $str = sprintf( "UPDATE contactos SET con_passwd = '%s' WHERE con_id = %d",
  13.                          mysql_real_escape_string( md5( $datos[ 2 ] ) ),
  14.                          mysql_real_escape_string( $datos[ 0 ] ) );
  15.         if ( mysql_query( $str ) ) {
  16.             $rep = 'La contraseña fue cambiada. En su próximo inicio de sesión podrá usarla.|0';
  17.         }
  18.         else {
  19.             $rep = 'La contraseña no pudo ser cambiada. Inténtelo de nuevo más tarde.|1';
  20.         }
  21.         */
  22.     }
  23.     mysql_close();
  24.    
  25.     return $dat;
  26. }
donde puede estar el error?

Espero que me puedan ayudar.

Gracias,
__________________
El aprendiz.
  #2 (permalink)  
Antiguo 02/01/2012, 16:15
Avatar de jenusys  
Fecha de Ingreso: diciembre-2008
Ubicación: Ahí mismo.
Mensajes: 216
Antigüedad: 15 años, 3 meses
Puntos: 11
Respuesta: problema con datos que la función recoge

Mirando a "grosso modo" creo que tu problema es cuando cambias todo en "sprintf" ya que dicha función te va a reemplazar los % por valores indeseables. Yo pondría los datos "per-se" y no utilizaría dicha función.
  #3 (permalink)  
Antiguo 02/01/2012, 23:48
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 20 años, 11 meses
Puntos: 8
Respuesta: problema con datos que la función recoge

Ok, sería una solución, pero porque el resto de funciones que tengo de la misma manera si funcionan sin problema?.
__________________
El aprendiz.
  #4 (permalink)  
Antiguo 03/01/2012, 10:14
Avatar de jenusys  
Fecha de Ingreso: diciembre-2008
Ubicación: Ahí mismo.
Mensajes: 216
Antigüedad: 15 años, 3 meses
Puntos: 11
Respuesta: problema con datos que la función recoge

Voy a seguir la cosa...

He revisado tu código y honestamente tampoco puedo ver el error, y dices que en otras funciones te funciona bien. Tendrías que publicar otra función similar y te ayudamos a comparar código y tal vez podamos ver en qué está el error.
  #5 (permalink)  
Antiguo 03/01/2012, 10:18
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 20 años, 11 meses
Puntos: 8
Respuesta: problema con datos que la función recoge

Mira cambié la función a esto, sin usar el sprintf:
Código PHP:
Ver original
  1. public function updateClave( $datos )
  2. {
  3.     parent::conectar();
  4.     $mypws = $this->getPasswd( $datos[ 0 ] );
  5.    
  6.     if ( $mypws != md5( $datos[ 1 ] ) ) {
  7.         $rep = 'La contraseña actual no es válida. Intente de nuevo.|1';
  8.     }
  9.     else {
  10.         $str = "UPDATE contactos SET con_passwd = '" . md5( $datos[ 2 ] ) . "' WHERE con_id = " . $datos[ 0 ] . "";
  11.         mysql_query( $str ) or die( mysql_error() );
  12.     }
  13. }
pero me devuelve el siguiente mensaje:

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

y solo me sucede cuando uso esta función, fuera de esto toda la página funciona muy bien.
__________________
El aprendiz.
  #6 (permalink)  
Antiguo 03/01/2012, 10:47
Avatar de jenusys  
Fecha de Ingreso: diciembre-2008
Ubicación: Ahí mismo.
Mensajes: 216
Antigüedad: 15 años, 3 meses
Puntos: 11
Respuesta: problema con datos que la función recoge

Entonces debes chequear que tengas permisos para funciones globales y que SÍ puedas conectarte por medio de funciones. Ya sería un tema de configuración del servidor.

Lo otro es que no nos pones el cómo te conectas realmente:

¿ parent::conectar(); ?
  #7 (permalink)  
Antiguo 03/01/2012, 12:24
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 20 años, 11 meses
Puntos: 8
Respuesta: problema con datos que la función recoge

el archivo que conecta es database.php y esta asi
Código PHP:
Ver original
  1. require("config.php");
  2.  
  3. class DataBase
  4. {
  5.     private $conn;
  6.    
  7.     public function __construct()
  8.     {
  9.        
  10.     }
  11.    
  12.     public function conectar()
  13.     {
  14.         try
  15.         {
  16.             $this->conn = mysql_connect(HOST, USER, PASS);
  17.             mysql_select_db(DBNAME);
  18.         }
  19.         catch(Exception $err)
  20.         {
  21.             echo $err->getMessage();
  22.         }
  23.     }
  24. }
como te dije anteriormente todo funciona bien, el resto de INSERTS, UPDATES, DELETES, todo funciona bien, el problema sucede sólo cuando llamo a esa función.

Tengo otras funciones que hacen SELECTS, INSERTS, UPDATES, DELETES y todo marcha bien y todas tienen la misma estructura.
__________________
El aprendiz.
  #8 (permalink)  
Antiguo 03/01/2012, 14:33
Avatar de jenusys  
Fecha de Ingreso: diciembre-2008
Ubicación: Ahí mismo.
Mensajes: 216
Antigüedad: 15 años, 3 meses
Puntos: 11
Respuesta: problema con datos que la función recoge

Seguro que me has encendido la curiosidad... El código parece correcto, voy a tener que hacer ensayos en mi servidor pero eso demora un poco. Luego te comento y que pena no poder ayudarte con mayor celeridad.

Etiquetas: mysql
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:20.