Foros del Web » Programando para Internet » PHP »

Error en elseif (...supongo) Vamos prosperando

Estas en el tema de Error en elseif (...supongo) Vamos prosperando en el foro de PHP en Foros del Web. Hola a todos: Por fin conseguí configurar correctamente el SMPTP server (Mercury Mail) para enviar correos http://goliatenterrado.es/2009/03/03/configurar-el-mercury32-del-xampp-para-enviar-correos-externos/ y estoy en la fase de activar mi ...
  #1 (permalink)  
Antiguo 25/01/2011, 03:42
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 11 años, 4 meses
Puntos: 4
Error en elseif (...supongo) Vamos prosperando

Hola a todos:

Por fin conseguí configurar correctamente el SMPTP server (Mercury Mail) para enviar correos http://goliatenterrado.es/2009/03/03/configurar-el-mercury32-del-xampp-para-enviar-correos-externos/ y estoy en la fase de activar mi usuario.
Se podria decir que lo tengo todo estructurado correctamente recojo el campo del enlace, compruebo que existe el código, si no existe derivo a pagina de registro de nuevo y si existe activo y redirijo a la pagina principal.
Pero los elseif no funcionan. Si embargo si que recoge el código y si que indica si existe o no el usuario. Simplemente no ejecuta las órdenes de los elseif. Lo sé porque he puesto echo dentro y no los imprime, sin embargo los echo del final si.

¿Alguien me puede hechar una manita?
Se compensará con cantidades ingentes de Karma,

Muchas gracias

J.
Aquí el código:
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);
                        
        
//Si el código no existe derivamos a registro de nuevo
}elseif ($num_rows==0) {
            
            echo 
$num_rows;
            echo 
"activacion incompleta."
            
header("location:../Registro_pregunta.php");
            
        
//Si existe
}elseif ($num_rows==1){
            echo 
$num_rows;
            
            
//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
            
header("location:../home.php");
 
}else {

        
//En cualquier otro caso lo derivamos a registro
        
echo "activacion incompleta."
        
header("location:../Registro_pregunta.php");
         
        } 
    echo 
$codeACT;
    echo 
$num_rows;
?>
  #2 (permalink)  
Antiguo 25/01/2011, 04:02
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 13 años, 5 meses
Puntos: 2236
Respuesta: Error en elseif (...supongo) Vamos prosperando

No es que no funcionen los elseif, tienes que ver que hacen y porque!!!

if(isset(GET, codigo)) ---> Esto verifica que se haya proporcionado el codigo
elseif(numrows?) --> ELSE, es decir, no se proporciono codigo, esto no deberia ir aqui

De hecho, gracias a esa falla logica, todo el script falla, debiendo ser algo un poco mas simple:
Código PHP:
Ver original
  1. <?php
  2. ini_set("display_errors", 1);
  3. // Llamo las variables de conexión a DB
  4. require_once ('../recor/LoginDB.php');
  5.    
  6. // Abro conexión y selecciono la base de datos
  7. $connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");
  8. mysql_select_db($db) or die ("Unable to select database!");
  9.    
  10. //Activamos el ususario
  11. //Recuperamos el código de activación y depuramos frente a SQLInjection
  12. if (isset($_GET['codigo'])) {  
  13.     $codeACT = $_GET['codigo'];
  14.     $codeACT = stripslashes($codeACT);
  15.    
  16.     //Comprobamos que el codigo recibido existe en la BBDD
  17.     $queryCHECK = mysql_query("SELECT `codigoACT` FROM `personas` WHERE `codigoACT`=$codeACT");
  18.     $num_rows = mysql_num_rows($queryCHECK);
  19.            
  20.     if ($num_rows==1){
  21.         //Si existe
  22.         //Activamos el usuario
  23.         $queryACT = "UPDATE personas SET `activo`=1 Where `codigoACT`=$codeACT";
  24.         mysql_query($queryACT) or die(mysql_error());
  25.  
  26.         //Y vamos a la página de inicio
  27.         header("location:../home.php");
  28.         // Despues de un header de redirección conviene detener el script
  29.         exit;
  30.     }
  31. }
  32. //No se proporcionó código o no fue encontrado
  33. header("location:../Registro_pregunta.php");
  34. // Este echo sale sobrando
  35. echo "activacion incompleta.";
  36. ?>
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 25/01/2011, 04:44
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Error en elseif (...supongo) Vamos prosperando

Hola Triby:

Gracias por tu rápida respuesta. Lo acabo de probar pero da errores

Cita:
Parse error: syntax error, unexpected '{' in C:\xampp\htdocs\login\activacion.php on line 11
y cuando eliminas {
Cita:
Parse error: syntax error, unexpected T_VARIABLE in C:\xampp\htdocs\login\activacion.php on line 12
Seguiré investigando. Ahora tengo que irme al curro,

Muchas gracias por tu ayuda,

J.
  #4 (permalink)  
Antiguo 25/01/2011, 10:35
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Error en elseif (...supongo) Vamos prosperando

Hola:

Ahora estoy en el curro y no dispongo de los recursos para poder probar, pero he estado dándole vueltas a la cabeza y se me ha ocurrido esta idea, espero que funcione, si alguien puede darle un vistazo y hacer crítica previa a mis pruebas lo agradeceré.
De hecho mi idea original era resolverlo todo con el Switch Case pero como ignoro si se puede eliminar el if que va delante de isset sin crear un cataclismo lo he dejado así. De todas maneras está pendiente de probar.

Muchas gracias de antemano y un saludo,

J.

Aquí la ocurrencia:

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); 
                         
}else { 

        
//En cualquier otro caso lo derivamos a registro 
        
echo "activacion incompleta.";  
        
header("location:../Registro_pregunta.php"); 
          
        }  

switch (
$num_rows) {
    
//Si el código no existe derivamos a registro de nuevo 
    
case 0:
        
header("location:../Registro_pregunta.php"); 
        break;
     
//Si existe 
    
case 1:
       
//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 
        
header("location:../home.php"); 
        break;
}
 
?>

Etiquetas: elseif
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 11:40.