Foros del Web » Programando para Internet » PHP »

ayuda con activacion de users esta casi listo, pero....

Estas en el tema de ayuda con activacion de users esta casi listo, pero.... en el foro de PHP en Foros del Web. Estoy haciendo, mediante indicaciones de este foro, una activacionn de cuenta de user por mail, ya esta hecho todo guardo en la base de datos ...
  #1 (permalink)  
Antiguo 07/03/2008, 17:22
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 11 años, 11 meses
Puntos: 52
ayuda con activacion de users esta casi listo, pero....

Estoy haciendo, mediante indicaciones de este foro, una activacionn de cuenta de user por mail, ya esta hecho todo

guardo en la base de datos dos campos adicionales campos que son activacion cero para activado y 1 para desactivado.
y el otro campo lo lleno con un numero aleatorio de 20 digitos.

al registrarse el user todo va bien, me inserta bien los datos, el numero aleatorio y en estado lo pone bien en 1

el problema viene al validar al usuario con el login, tanto este el campo de estado en 0 o en 1 activado o desactivado no me deja entrar
osea, que el u8suario con la cuenta activada no entra y el otro tampoco.

uso este script para validar.

donde esta la burrada que cometo.
Gracias.

Código PHP:

<?php
session_start
();
//datos para establecer la conexion con la base de mysql.
mysql_connect('localhost','xxxxx','xxxxx')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('registro')or die ('Error al seleccionar la Base de Datos: '.mysql_error());

function 
quitar($mensaje)
{
    
$nopermitidos = array("'",'\\','<','>',"\"");
    
$mensaje str_replace($nopermitidos""$mensaje);
    return 
$mensaje;
}
$estado"0";  //creo la variable $estado=0 para compararla despues con el campo de la BD estado y si son cero le dejara pasar
if ($_POST['usuario']) {

    
// Puedes utilizar la funcion para eliminar algun caracter en especifico
    //$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"]));
    //$password = $HTTP_POST_VARS["password"];
    // o puedes convertir los a su entidad HTML aplicable con htmlentities
    
$usuario strtolower(htmlentities($HTTP_POST_VARS["usuario"], ENT_QUOTES));
    
$password $HTTP_POST_VARS["password"];
    
$result mysql_query('SELECT password, usuario FROM usuarios WHERE usuario=\''.$usuario.'\'');
    if(
$row mysql_fetch_array($result)){
        if(
$row["password"] == $password){
            
$_SESSION["k_username"] = $row['usuario'];
            if(  
$estado == $row['estado']){
        
        
?>
            <SCRIPT LANGUAGE="javascript">
            location.href = "principal.php";
            </SCRIPT>
            <?
        
        
}else{
            echo 
'<span class="Estilo5">Password incorrecto o cuenta sin activar</span>';
        
session_destroy();}
    }else{
        echo 
'<span class="Estilo5">Usuario no existente</span>';}
        }
    else{
        echo 
'<span class="Estilo5">password incorrecto</span>';}
        }
    
mysql_close();
    

?>
la variable $row[estado] es la qie contiene el valor 0 para activados y el valor 1 para no activados. pero es que no deja pasar a ninguna.

Gracias.
  #2 (permalink)  
Antiguo 07/03/2008, 17:29
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 11 años, 11 meses
Puntos: 52
Re: ayuda con activacion de users esta casi listo, pero....

Ya vi el fallo, en el query no ponia el campo estado
  #3 (permalink)  
Antiguo 07/03/2008, 17:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 8 meses
Puntos: 2135
Re: ayuda con activacion de users esta casi listo, pero....

Que bueno que encontraste rápidamente tu error.

Saludos.
  #4 (permalink)  
Antiguo 07/03/2008, 17:45
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 11 años, 11 meses
Puntos: 52
Re: ayuda con activacion de users esta casi listo, pero....

ya corregi el fallo anterior, pero con este es que me estoy rompiendo la cabeza.

ya he visitado la pagina del manual de php en español donde vienen todas la funciones y el mirado el funcionamiento del UPDATE del query, pero es que no me sale.

lo hago asi:

Código PHP:
<?php 

mysql_connect
('localhost','xxxx','xxxx')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('registro')or die ('Error al seleccionar la Base de Datos: '.mysql_error());

if (isset(
$HTTP_GET_VARS[""])) {


$idval=$HTTP_GET_VARS["id"];
$activate=$HTTP_GET_VARS[".&activateKey."];



$query "UPDATE usuarios
            SET estado = 0  WHERE activate = '$activate'  AND id = '$idval'" 
;
                
                
mysql_query($query) or die(mysql_error());


?>
            
            <SCRIPT LANGUAGE="javascript">
            location.href = "principal.php";
            
        </SCRIPT>
        
<?

}else{
        echo 
"activacion incompleta.";
        
        }

?>
se supone que recibo las variables mediante URL del link que envio por form
pero me salta el fallo que puse en el echo "activacion incompleta.
alguien sabe por que no funciona este update

Gracias
  #5 (permalink)  
Antiguo 07/03/2008, 17:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 8 meses
Puntos: 2135
Re: ayuda con activacion de users esta casi listo, pero....

Dos cosas, no uses $HTTP_GET_VARS es mucho mejor usar $_GET, segundo tu problema es que tu If estas comparando algo vacío:
Código PHP:
if (isset($HTTP_GET_VARS[""])) { 
Es decir le estas preguntando a PHP, si esta puesta la variable "", la cual no existe, recuerda que si quieres preguntar por cierta variable debes de hacerlo así:
Código PHP:
if (isset($_GET['var'])) { 
Saludos.
  #6 (permalink)  
Antiguo 07/03/2008, 18:13
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 11 años, 11 meses
Puntos: 52
Re: ayuda con activacion de users esta casi listo, pero....

Gracias GatorV,

Ahora no me sale el error que puse en el echo, y me redirige bien, por lo que parece que ha hecho el update del campo a cero, pero cuando voy a phpMyAdmin y actualizo y miro el contenido del campo estado sigue en 1 no cambia a cero,
sera un problema de sintaxis

he provado estas dos:

Código PHP:

$query 
"UPDATE usuarios
            SET estado = 0 WHERE activate = '$activate'  AND id = '$idval' " 
;


$query "UPDATE usuarios
            SET estado = '0' WHERE activate = '$activate'  AND id = '$idval' " 

Gracias.
  #7 (permalink)  
Antiguo 07/03/2008, 20:01
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 11 años, 11 meses
Puntos: 52
Re: ayuda con activacion de users esta casi listo, pero....

Ahota funciona bien pero solo uso una de las variables que tengo en la url que paso por mail.

el problema es que no se recoger una de estas variables que mando asi:

Código PHP:
$activateLink=$path."activar_registro.php?id=".$row['id']."&activateKey=".$activate.""
y cuando quiero recoger las variables mediante GET solo soy capaz de recuperar una:


Código PHP:
if (isset($_GET['id'])) {

$idval=$_GET['id'];
$activate2=$_GET['&activateKey'];
echo 
$idval;
echo 
$activate2
solo me imprime $idval
la otra no soy capaz de recuperarla.
Sabria alguien por que?

Última edición por jaronu; 07/03/2008 a las 20:26
  #8 (permalink)  
Antiguo 07/03/2008, 21:32
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 11 años, 10 meses
Puntos: 20
Re: ayuda con activacion de users esta casi listo, pero....

Cita:
Iniciado por jaronu Ver Mensaje
Ahota funciona bien pero solo uso una de las variables que tengo en la url que paso por mail.

el problema es que no se recoger una de estas variables que mando asi:

Código PHP:
$activateLink=$path."activar_registro.php?id=".$row['id']."&activateKey=".$activate.""
y cuando quiero recoger las variables mediante GET solo soy capaz de recuperar una:


Código PHP:
if (isset($_GET['id'])) {

$idval=$_GET['id'];
$activate2=$_GET['&activateKey'];
echo 
$idval;
echo 
$activate2
solo me imprime $idval
la otra no soy capaz de recuperarla.
Sabria alguien por que?
por esta razon no te imprime el activatekey:

Código PHP:
//Incorrecto:
$_GET['&activateKey']; 

//Correcto:
$_GET['activateKey']; 
  #9 (permalink)  
Antiguo 07/03/2008, 21:41
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 11 años, 11 meses
Puntos: 52
Re: ayuda con activacion de users esta casi listo, pero....

Gracias Farra que comedura de tarro
he provado tantas cosas que crei que lo habia provado y nada,

gracias, ya rula.
  #10 (permalink)  
Antiguo 07/03/2008, 21:49
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 11 años, 11 meses
Puntos: 52
Re: ayuda con activacion de users esta casi listo, pero....

lo unico que pasa es que cuando procesa por primera vez las variables enviadas por url, osea cuando hago click en el link de activacion del email
tarda mucho y a demas dice que no encuentra la pagina, aynque la operacion de activar la ha hecho, pero no me redirige,pero en la BD consta como activado aunque no encuentre la pagina el navegador.

y cualdo vuelvo a clickar por segunda vez en el enlace lo hace rapido y redirige bien,


sera problema del server o del codigo que tarda demasiado la primera vez.

dejo el codigo.


Código PHP:
<?
mysql_connect
('localhost','xxxx','xxxx')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('registro')or die ('Error al seleccionar la Base de Datos: '.mysql_error());

if (isset(
$_GET['id'])) {

$idval=$_GET['id'];
$activate2=$_GET['activateKey'];  ;






$query "UPDATE usuarios
            SET estado = '0' WHERE   id = '$idval' AND actvate ='$activate2' " 
;
                
mysql_query($query) or die(mysql_error());
    
/*$query2 = "INSERT INTO usuarios (estado) WHERE activate = '$activate'  AND id = '$idval' 
                VALUES (0)";
                mysql_query($query2) or die(mysql_error());
                */
                
            


?>
            
            <SCRIPT LANGUAGE="javascript">
            location.href = "principal.php";
            
        </SCRIPT>
        
<?

}else{
        echo 
"activacion incompleta.";
        
        }
        

?>
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 05:39.