Buenas a todos!
Tengo un problema que me trae de cabeza y no entiendo por que se produce ya que aparentemente todo está bien, a ver si alguien me puede decir que es lo que ocurre. Bueno pasó a la explicación del problema.
Lo que trato de hacer es un sistema de registro (como los foros) que necesite activación por mail, esto es, te registras, el sistema te envia un mail con una dirección para que se active tu cuenta.
El problema lo tengo con "validar_cuenta.php". El campo
ACTIVO de la BBDD indica si una cuenta está activa o no (1=Activo, 0=No Activo). El caso es que aparentemente este código (que muestro mas abajo) debería realizar lo siguiente:
Obtener las variables $n y $p que se le pasan por la URL (validar_cuenta?n=XXXX&p=XXXXX) luego a partir de de
n y p (nick y password) hayar la ID que corresponda a n y p y por ultimo obtener el valor del campo
ACTIVO asociado a la
ID obtenida.
Vamos ahora a la practica: Si cojo una cuenta que no está activa (
ACTIVO = 0) cuando llega al bloque
IF lo que hace es: ejecutar las sentencias SQL:
Código PHP:
$sql = "UPDATE usuarios SET activo = 1 WHERE id ='$id'";
$result = mysql_query($sql);
y no ejecuta los
ECHO, pero si que muestra el
ECHO del
ELSE, es decir, entra en el
IF, ejecuta las sentencias sql, y se pasa al
ELSE y ejecuta el
ECHO.
he cambiado el
IF-ELSE por un
SWITCH y nada de nada, el
IF-ELSE yo creo que está bien, tiene que ser alguna propiedad de
PHP o
MySql que se me escapa y no conozco.
Yo lo que quiero es que cuando se le pase un usuario con
ACTIVO=0 entre en el
IF y ejecute
TODO y no se meta en el
ELSE, aparentemente eso es lo que debería hacer el código que he escrito, pero no lo hace. ¿Alguien sabe por que?
Código PHP:
<?php
//conexion a la base de datos
//obtiene las variables
$n = $_GET['n'];
$p = $_GET['p'];
//obtiene el valor del campo ID
$sql_id = "SELECT id FROM usuarios WHERE nick='$n' UNION SELECT id FROM usuarios WHERE password='$p'";
$result_id = mysql_query($sql_id);
$valor_id = mysql_fetch_array($result_id);
echo $valor_id["id"];
//Obtiene el valor del campo ACTIVO
$id = $valor_id["id"];
$activo = "SELECT activo FROM usuarios WHERE id='$id'";
$result_activo = mysql_query($activo);
$valor_activo = mysql_fetch_array($result_activo);
echo $valor_activo["activo"];
if ($valor_activo["activo"] == 0)
{
echo "este usuario aún no está activo";
$sql = "UPDATE usuarios SET activo = 1 WHERE id ='$id'";
$result = mysql_query($sql);
echo "La cuenta se ha activado correctamente";
}
else
{
echo "dfdEste usuario ya está activo";
}
mysql_close();
?>