Sigo peleando con la activación de mi usuario registrado. Finalmente he optado por una estructura en Switch case con llamadas javascript (que no me convence) por problemas con header que no se resolver (se admiten ideas), pero este no es el problema que tengo.
La funcionalidad se basa en un ciclo de comprobación para verificar que el codigo de activación existe y que el usuario no ha sido activado antes (por si las flyes) si el usuario no existe (case 0 del primer switch) redirijo con JAvascript a pagina de registro y si existe deberian suceder dos cosas si no está activo, se activa y se redirije con javascript a la página principal y si existe lo dirijo a la página de registro.
El problema es que en el caso de que el usuario exista siempre me dirige a la página principal tanto si está activo como si no y no da error.
He revisado todo el código y no pillo el fallo,
¿alguien lo ve?
Muchas gracias por la ayuda,
J.
Además ¿Que hago con el Javascript? me gusta mas header location pero falla.
Código PHP:
<?php session_start();
error_reporting(E_ALL);
ini_set("display_errors", 1);
// Llamo las variables de conexión a DB
require_once ('../recor/LoginDB.php');
// Abro conexión y selecciono la base de datos
$connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");
mysql_select_db($db) or die ("Unable to select database!");
//Activamos el ususario
//Recuperamos el código de activación y depuramos frente a SQLInjection
if (isset($_GET['codigo'])) {
$codeACT = $_GET['codigo'];
$codeACT = stripslashes($codeACT);
//Comprobamos que el codigo recibido existe en la BBDD
$queryCHECK = mysql_query("SELECT `codigoACT` FROM `personas` WHERE `codigoACT`=$codeACT");
$num_rows = mysql_num_rows($queryCHECK);
switch ($num_rows) {
//Si el código no existe derivamos a registro de nuevo
case 0:
?>
<script language=javascript>
function ventanaSecundaria (URL){
window.open(URL,"ventana1")
}
ventanaSecundaria("../Registro_pregunta.php");
window.close()
</script>
<?php
break;
//Si existe
case 1:
//Verificamos que el usuario no ha sido activado con anterioridad
$queryCHECKACT = mysql_query("SELECT `activo` FROM `personas` WHERE `codigoACT`=$codeACT");
$CheckAct = `activo`;
switch ($CheckAct) {
//Si no está activo
case 0;
//Cambiamos el valor 0=desactivado por valor 1=activado
$activo="1";
//Activamos el usuario
$queryACT = "UPDATE personas SET `activo`=$activo Where `codigoACT`=$codeACT";
mysql_query($queryACT) or die(mysql_error());
//Y vamos a la página de inicio
?>
<script language=javascript>
function ventanaSecundaria (URL){
window.open(URL,"ventana1")
}
ventanaSecundaria("../Home.php");
window.close()
</script>
<?php
break 2;
case 1:
//Si el susario ya está activo lo derivamos a la página de registro
?>
<script language=javascript>
function ventanaSecundaria (URL){
window.open(URL,"ventana1")
}
ventanaSecundaria("../Registro_pregunta.php");
window.close()
</script>
<?php
break 2;
}
}
}else {
//En cualquier otro caso lo derivamos a registro
echo "activacion incompleta.";
header("location:../Registro_pregunta.php");
}
?>