Ver Mensaje Individual
  #3 (permalink)  
Antiguo 26/08/2009, 09:23
jesusoful
 
Fecha de Ingreso: julio-2009
Mensajes: 52
Antigüedad: 15 años, 4 meses
Puntos: 3
Respuesta: Formulario no procesa datos

Hola.
El código es bastante largo, voy a poner los trozos que yo creo que son problematicos.

En el archivo cperfil.php, donde tengoo el formulario, antes de nada tengo colocado esto:
Código PHP:
<?
ob_clean
();
ob_start();
session_start();
include_once(
"class/db.class.php");
include_once(
"inc/comp.login.inc.php");
$con = new bd();
include_once(
"class/runtimes.class.php");
$u = new limitar;
?>
El archivo db.class.php es una clase para conexion con MySQL y no da problemas de ningún tipo.

El archivo comp.login.inc.php tiene esto:
Código PHP:
<?
session_start
();
// Comprobador de login. Incluido en todas las paginas que requieran de seguridad.

$c = new bd();

// Buscamos en la base de datos un usuario que corresponda con los datos entregados
$user=mysql_query("SELECT id FROM usuarios_perfil WHERE id='".$_SESSION['id']."' && cookie='".$_SESSION['random']."'");
$r=mysql_fetch_array($user);

    
// Cargamos salud y carcel del usuario.
    
$carga=mysql_query("SELECT salud,carcel FROM usuarios_jugador WHERE id='".$_SESSION['id']."'");
    
$d=mysql_fetch_array($carga);

if (!
$r["id"] || $_SESSION["random"] != $_COOKIE["Crimob"]) {
    
header("Location: logout.php");
    
} else {
    
// Comprobamos que el usuario no esté en la cárcel. Dentro de cargador.class.php se realizan las acciones correspondientes a cada caso.
    
if ($d["salud"] == 0) {
        
header("Location: dead.php?s=death");
    }
    
    
// Comprobamos que el usuario no esté muerto (salud=0). Dentro de cargador.class.php se realizan las acciones correspondientes a cada caso.
    
if ($d["carcel"] != 0) {
        
header("Location: carcel.php?a=prison");
    }
}                                                                                                                                                                                                                                                                                                                
?>
Y el archivo runtimes.class.php, entre otras muchas cosas, tiene esto:
Código PHP:
//-----------------------------------------------------------------------------------------------------------------
// Método cambiar el perfil de un usuario. Puede cambiar el avatar, el email y la contraseña.
function changePerfil() {
    
    
// Conectamos con BD.
    
$c = new bd();
    
    
// Escapamos los caracteres que nos llegan.
    
$email=$c->e($_POST["email"]);
    
$an_passwd=$c->e($_POST["antigua_passwd"]);
    
$avatar=$c->e($_POST["avatar"]);
    
$npasswd=md5($c->e($_POST["npasswd"]));
    
    
// Buscamos la contraseña del usuario.
    
$user=mysql_query("SELECT passwd FROM usuarios_perfil WHERE id='".$_SESSION['id']."'");
    
$u=mysql_fetch_array($user);
    
    
// Si el campo contraseña antigua está en blanco, quiere decir que no quiere cambiar la contraseña.
    
if ($an_passwd == "" ) {
        
$query=mysql_query("UPDATE usuarios_perfil SET email='$email', avatar='$avatar' WHERE id='".$_SESSION['id']."'");
        
// generamos los mensajes.
        
$this->titulo="Correcto";
        
$this->mensaje="Perfil actualizado con éxito";
    } elseif (
md5($an_passwd) != $u["passwd"]) {
        
$this->titulo="Error";
        
$this->mensaje="La contraseña antigua no es correcta. Si no quieres cambiarla, déjala en blanco.";
    } else {
        
$query=mysql_query("UPDATE usuarios_perfil SET email='$email', avatar='$avatar', passwd='$npasswd' WHERE id='".$_SESSION['id']."'");
        
// generamos los mensajes.
        
$this->titulo="Correcto";
        
$this->mensaje="Perfil actualizado con éxito";
    }
    
    
// Liberamos memoria y cerramos conexiones.
    
$c->l($query);
    
$c->close();
    

Por supuesto todos los objetos están definidos y llamados correctamente dentro de cada archivo. Luego, dentro de cperfil.php, está header.php,menu.php y footer.php. Lo mas importante de cada uno es:

header.php
Código PHP:
<?
include_once("class/cargador.class.php");
$datos = new cargador();
?>
Y dentro de cargador un método de la clase cargador que carga determinados datos y los almacena en diferentes atributos de esa clase.


menu.php tiene un simple if:
Código PHP:
<?
if ($_SESSION['id']) { 
?>
Con su else debajo y tal...

Y footer.php no dispone de código php, es todo html.

Espero haber aclarado un poco mi problema, pido disculpas.
Saludos y muchas gracias!!