Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Iniciar sesión, pero el estado del usuario es desactivado

Estas en el tema de Iniciar sesión, pero el estado del usuario es desactivado en el foro de PHP en Foros del Web. Hola comunidad, saludos desde Bogotá - Colombia. Mi consulta es la siguiente. El usuario ya se registró en la web, se le envió el mail ...
  #1 (permalink)  
Antiguo 13/11/2014, 14:27
Avatar de geovannimendoza  
Fecha de Ingreso: noviembre-2013
Mensajes: 15
Antigüedad: 10 años, 5 meses
Puntos: 0
Pregunta Iniciar sesión, pero el estado del usuario es desactivado

Hola comunidad, saludos desde Bogotá - Colombia.
Mi consulta es la siguiente.

El usuario ya se registró en la web, se le envió el mail para la activación de su cuenta, pero por esas cosas de la vida no la activó, e inicia sesión.

Lo que quiero es que al iniciar sesión, si la cuenta no está activa me envíe a una pagina o me de un mensaje que diga que la cuenta aún no está activada.

Obviamente hay 72 horas de tiempo para activarla, pero hay casos en que en ese lapso de tiempo se quiere ingresar sin realizar la activación, puede ser que no recordó hacer la activación, etc...


Gracias por su ayuda.
  #2 (permalink)  
Antiguo 13/11/2014, 15:33
Avatar de danistrein  
Fecha de Ingreso: septiembre-2008
Ubicación: Salta Capital
Mensajes: 550
Antigüedad: 15 años, 7 meses
Puntos: 9
Respuesta: Iniciar sesión, pero el estado del usuario es desactivado

crea un campo int(cuentaEstado) en tu db el cual poseerá dos estados "1, time()", al crear la cuenta en dicho campo guarda el tiempo de creación, al activar la cuenta cambia el tiempo guardado por 1, al iniciar sesión has que verifique el tiempo actual con el mismo guardado+72hs, si el tiempo no supera las 72 hs hábiles has un header a una pagina que le exprese que active su cuenta si o si, de lo contrario realiza otra verificación para ver si en el campo esta 1 e inicie sesion normalmente, ahora si supero el tiempo estimado puedes hacer el header a la misma pagina mencionada anteriormente con la diferencia que reenvié el link de activación a su mail nuevamente, espero que me puedas entender, saludos
__________________
Appones.net - www.appones.net
  #3 (permalink)  
Antiguo 13/11/2014, 21:37
Avatar de geovannimendoza  
Fecha de Ingreso: noviembre-2013
Mensajes: 15
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Iniciar sesión, pero el estado del usuario es desactivado

Hola danistrein, gracias por responder, realizaré lo que me dices y te cuento al rato.

Nuevamente gracias.
  #4 (permalink)  
Antiguo 24/11/2014, 17:10
Avatar de geovannimendoza  
Fecha de Ingreso: noviembre-2013
Mensajes: 15
Antigüedad: 10 años, 5 meses
Puntos: 0
Pregunta Respuesta: Iniciar sesión, pero el estado del usuario es desactivado

Hola danistrein definitivamente no puede con los header y muchísimo menos si el usuario esta en estado 1 ósea activo.

Por favor me regalas una ayuda, no soy experto en eso. gracias.

Tal vez sea porque utilizo DreamWeaver.

Código PHP:
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  if (
PHP_VERSION 6) {
    
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;

}
}

?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  
session_start();
}

$loginFormAction $_SERVER['PHP_SELF'];
if (isset(
$_GET['accesscheck'])) {
  
$_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset(
$_GET['recordSEG'])) {
$_SESSION['recordSEG']= $_GET["recordSEG"];
}



if (isset(
$_POST['strEmail'])) {
  
$loginUsername=$_POST['strEmail'];
  
$password=md5($_POST['strPassword']);
  
$MM_fldUserAuthorization "";
  
$MM_redirectLoginSuccess $_SESSION['PaginaActual']; 
  
$MM_redirectLoginFailed "".$_SESSION['recordSEG']."/error_de_acceso.html";
  
$MM_redirecttoReferrer false;
  
mysql_select_db($database_conexionzk$conexionzk);
  
  
$LoginRS__query=sprintf("SELECT idUsuario, strEmail, strPassword, intEstado FROM tblusuario WHERE strEmail=%s AND strPassword=%s AND intEstado = 1",
    
GetSQLValueString($loginUsername"text"), GetSQLValueString(    $password"text")); 
   
  
$LoginRS mysql_query($LoginRS__query$conexionzk) or die(mysql_error());
  
$row_LoginRS mysql_fetch_assoc($LoginRS);
  
$loginFoundUser mysql_num_rows($LoginRS);
  if (
$loginFoundUser) {
     
$loginStrGroup "";
    
    if (
PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    
//declare two session variables and assign them
    
$_SESSION['MM_Username'] = $loginUsername;
    
$_SESSION['MM_UserGroup'] = $loginStrGroup;     
    
$_SESSION['MM_IdUsuario'] = $row_LoginRS['idUsuario'];     

    if (isset(
$_SESSION['PrevUrl']) && false) {
      
$MM_redirectLoginSuccess $_SESSION['PrevUrl'];    
    }
    
header("Location: " $MM_redirectLoginSuccess );
  }
  else {
    
header("Location: "$MM_redirectLoginFailed );
  }
}

?>
  #5 (permalink)  
Antiguo 27/11/2014, 11:09
Avatar de geovannimendoza  
Fecha de Ingreso: noviembre-2013
Mensajes: 15
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Iniciar sesión, pero el estado del usuario es desactivado

Ya puede solucionarlo.

Realicé una función que me diera el estado a partir del usuario y contraseña.

Código PHP:
function ComprobarEstadoUsuario($varconfirmacion$varconfirmacion2)
{
 
    global 
$database_conexionzk$conexionzk;
    
mysql_select_db($database_conexionzk$conexionzk);
    
$query_ConsultaFuncion sprintf("SELECT intEstado FROM tblusuario WHERE strEmail=%s AND strPassword=%s"GetSQLValueString($varconfirmacion"text"), GetSQLValueString($varconfirmacion2"text"));
   
$ConsultaFuncion mysql_query($query_ConsultaFuncion$conexionzk) or die(mysql_error());
    
$row_ConsultaFuncion mysql_fetch_assoc($ConsultaFuncion);
    
$totalRows_ConsultaFuncion mysql_num_rows($ConsultaFuncion);
    
    if (
$query_ConsultaFuncion ==true)// este if me devuelve datos si la consulta es correcta el cual es utilizado en el archivo 1
        
return $row_ConsultaFuncion['intEstado'];
        else 
        return 
0;
    
mysql_free_result($ConsultaFuncion);

Luego si la validación es 0 que no lo ejecute, si es distinto a 0 que le ejecute.

Si esta activado, ósea si es 1, si el tiempo no expiró o está vigente y no esta activado.

Código PHP:
  $resultado_estado ComprobarEstadoUsuario($loginUsername$password);
        if (
$resultado_estado == 0) {
      
      }else {
      
  if (
$tiempo_actual >  $resultado_estado && $resultado_estado != 1) {
      
header("Location:" .$MM_redirecEstadoExpiro);
      exit;
      }
     
  if (
$resultado_estado $tiempo_actual && $resultado_estado != 1) {
      
header("Location:" $MM_redirecEstadoNoAvtiva);
      exit;
      }

      } 

Bueno gracias por responder,

Lo escribo por si a alguien le ocurre lo mismo.

Etiquetas: desactivado, estado, sesión, usuario
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 18:12.