Foros del Web » Programando para Internet » PHP »

APORTE: Activacion de cuenta de usuarios via e-mail.

Estas en el tema de APORTE: Activacion de cuenta de usuarios via e-mail. en el foro de PHP en Foros del Web. Es el tipico link que nos llega por mail cuando queremos registrarnos en una pagina, para activar la cuenta. Estos scripts son una recopilacion, recogidos ...

  #1 (permalink)  
Antiguo 08/03/2008, 12:19
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 9 meses
Puntos: 52
APORTE: Activacion de cuenta de usuarios via e-mail.

Es el tipico link que nos llega por mail cuando queremos registrarnos en una pagina, para activar la cuenta.
Estos scripts son una recopilacion, recogidos de Foros del Web, mediante unos enlaces pasados por GatorV
y algunos post de Okram que encontre, como la funcion para obtener un numero aleatorio para la activacion.
Y la estimable ayuda de esta comunidad de foreros, donde siempre hay gente dispuesta a responder y ayudar.
en los cuales incluyo a fcopacheco, y otros, es dificil acordarse de todos, creo que tambien me echo una mano farra
Gracias a todos ellos por su tiempo en ayudarme.

Y como se pregunta tanto en esta web este tema, espero que lo incluyan, en las FAQ´s del foro, para a si poder dar
a ver codigo a la gente como yo, que necesitamos ejemplos visuales que funcionen.

Empecemos:

Si ya tienes montado el registro y logeo de users, pero te falta que activen su cuenta:

Crea dos campos nuevos en la BD en tu tabla de users,llamados para este caso

activate varchar 20 not null
estado varchar 1 not null

despues de esto, en el archivo donde procesas los datos del registro habras de incluir:

1- la funcion que genera un numero aleatorio para el campo de la BD activate,
2- en el query insertar el nº aleatorio que sera en el campo activate
3- el valor 1 para el campo estado

estado=1 desactivada la cuenta
estado=0 activada la cuenta.

Codigo que procesa el registro de usuario, mediante los valosres pasados en un form de registro normal y tambien envia el correo al user con el link de activacion.

Archivo registra.php

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


//añadimos la funcion que se encargara de generar un numero aleatorio
function genera_random($longitud){ 
    
$exp_reg="[^A-Z0-9]"
    return 
substr(eregi_replace($exp_reg""md5(rand())) . 
       
eregi_replace($exp_reg""md5(rand())) . 
       
eregi_replace($exp_reg""md5(rand())), 
       
0$longitud); 
}



// verificamos si se han enviado ya las variables necesarias, las que tenemos en nuestro form cambialo, como sea el tuyo.
if (isset($_POST["username"])) {
    
$username $_POST["username"];
    
$password $_POST["password"];
    
$password2 $_POST["password2"];
    
$email $_POST["email"];
    
// Hay campos en blanco
    
if($username==NULL|$password==NULL|$password2==NULL|$email==NULL) {
        echo 
"un campo está vacio.";
        
formRegistro();
    }else{
        
// ¿Coinciden las contraseñas?
        
if($password!=$password2) {
            echo 
"Las contraseñas no coinciden";
            
        }else{
            
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
            
$checkuser mysql_query("SELECT usuario FROM usuarios WHERE usuario='$username'");
            
$username_exist mysql_num_rows($checkuser);
            
$checkemail mysql_query("SELECT email FROM usuarios WHERE email='$email'");
            
$email_exist mysql_num_rows($checkemail);
            if (
$email_exist>0) {
                echo 
"La cuenta de correo estan ya en uso";
                
        }else{
                if (
$username_exist>0) {
                echo 
"El nombre de usuario  esta ya en uso";
                
                
                
            }else{
            
                  
//agregamos la variable $activate que es un numero aleatorio de 
                  //20 digitos crado con la funcion genera_random de mas arriba
                  
                  
$activate genera_random(20);  
                  
                  
//aqui es donde insertamos los nuevos valosres en la BD  activate y el valor 1 que es desactivado
                  
                
$query 'INSERT INTO usuarios (usuario, password, email, fecha, activate, estado)
                VALUES (\''
.$username.'\',\''.$password.'\',\''.$email.'\',\''.date("Y-m-d").'\',\''.$activate.'\', 1)';
                
mysql_query($query) or die(mysql_error());
                
                
                
                echo 
"<table width=70%><tr bgcolor= #61e877 class= estilo30><div align=center>";
                echo 
'Ha sido registrado en Cevit como: <b>'.$username.' </b>de manera satisfactoria.<br />';
                echo 
' Gracias. Le enviaremos ahora un email<br />';
                echo 
'para activar su cuenta, al correo que nos facilito.<br />';
                echo 
"</div></tr>";
                echo 
"</table>";
                
                
                
                
$query   "SELECT * FROM usuarios WHERE usuario='$username'";
         
$result mysql_query($query $conexion) or die ( mysql_error() );
         
$row   mysql_fetch_array($result);
         
         
$path="http://www.tuboolar-web.com/cevit/"//creamos nuestra direccion, con las carpetas que sean si hay
         //armamos nuestro link para enviar por mail en la variable $activateLink
$activateLink=$path."activar_registro.php?id=".$row['id']."&activateKey=".$activate."";
                
                          
// Datos del email

$nombre_origen    "Tuboolar Web";
$email_origen     "[email protected]";
$email_copia      "[email protected]";
$email_ocultos    "[email protected]";
$email_destino    "".$row['email']."";  



$asunto           "".$row['usuario']." Datos de registro en Cevit, guarde este email.";

$mensaje          '<table width="629" border="0" cellspacing="1" cellpadding="2">
  <tr>
    <td width="623" align="left"></td>
  </tr>
  <tr>
    <td bgcolor="#2EA354"><div style="color:#FFFFFF; font-size:14; font-family: Arial, Helvetica, sans-serif; text-transform: capitalize; font-weight: bold;"><strong>     Estos son sus datos de registro, '
.$row['usuario'].'</strong></div></td>
  </tr>
  <tr>
    <td height="95" align="left" valign="top"><div style=" color:#000000; font-family:Arial, Helvetica, sans-serif; font-size:12px; margin-bottom:3px;"> USUARIO: '
.$row['usuario'].'</strong><br><br><br>
          <strong>SU CLAVE : </strong>'
.$row['password'].'</strong><br><br><br>
          <strong>SU EMAIL : </strong>'
.$row['email'].'</strong><br><br><br>
          <strong>SU LINK DE ACTIVACION:<br><a href="'
.$activateLink.'">'.$activateLink.' </strong></a><br><br><br>
          <strong>POR FAVOR HAGA CLICK EN LINK DE ARRIBA PARA ACTIVAR SU CUENRA Y ACCEDER A LA PAGINA SIN RESTRICCIONES</strong><br><br><br>
          <strong>SI EL LINK NO FUNCIONA ALA PRIMERA INTENTELO UNA SEGUNDA, EL SERVIDOR A VECES TARDA EN PROCESAR LA PRIMERA ORDEN</strong><br><br><br>
          
          <strong>GRACIAS POR REGISTRARSE EN CEVIT.</strong><br><br><br>
    </div>
    </td>
  </tr>
</table>'
;



$formato          "html";

//*****************************************************************//
$headers  "From: $nombre_origen <$email_origen> \r\n";
$headers .= "Return-Path: <$email_origen> \r\n";
$headers .= "Reply-To: $email_origen \r\n";


$headers .= "X-Sender: $email_origen \r\n";

$headers .= "X-Priority: 3 \r\n";
$headers .= "MIME-Version: 1.0 \r\n";
$headers .= "Content-Transfer-Encoding: 7bit \r\n";

//*****************************************************************//
 
if($formato == "html")
 { 
$headers .= "Content-Type: text/html; charset=iso-8859-1 \r\n";  }
   else
    { 
$headers .= "Content-Type: text/plain; charset=iso-8859-1 \r\n";  }

@
mail($email_destino$asunto$mensaje$headers)) 
    
     
                
                
                
                
                
                }
            }
        }
    }
}else{
    
}

?>

Última edición por jaronu; 14/06/2008 a las 12:39
  #2 (permalink)  
Antiguo 08/03/2008, 12:20
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 9 meses
Puntos: 52
APORTE: Avtivacion de cuenta de usuarios via e-mail.

Bueno, ahora se supone que ya llego el email, con el link de activacion.

Pero una cosa antes, hemos de cambiar tambien el codigo de login que tengamos para que no deje autentificarse a nadie
que no haya activado su cuenta mediante el link enviado.

en este caso el codigo del login es:
Archivo que se llama validar_usr.php que recoge las variables enviadas mediante un form de login

Código PHP:
<?php
session_start
();
//datos para establecer la conexion con la base de mysql.
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());

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, estado FROM usuarios WHERE usuario=\''.$usuario.'\'');
    if(
$row mysql_fetch_array($result)){
        if(
$row["password"] == $password){
            
$_SESSION["k_username"] = $row['usuario'];
            if(  
$estado == $row['estado']){  //aqui es donde comprovamos que el campo activado sea cero, si lo es pasara, si no, no.
                //el siguiente scripy de java nos redirige donde le digamos, so no os hace falta ,lo borrais.
        
?>
            <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();
    

?>
Y ahora, ya tenemos al usuario registrado, pero con su cuenta desactivada, no puede entrar a la zona restringiga todavia,

este es el archivo que procesa los datos enviado via URL mediante el link de activacion que mandamos al user.

activar_cuenta.php, por ejemplo:

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());


//recogemos los valores enviados por el link de activacion que mandamos por mail
if (isset($_GET['id'])) {

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




        
//y aqui es donde cambiamos el valor 1=desactivado  por valor 0=activado

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


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

}else{
        echo 
"activacion incompleta.";
        
        }
        

?>
Espero que sirva para orientar, creo que esta bastante bien explicado, y es para la gente como yo que necesitamos ver el codigo para enterarnos de algo, aunque ya aprenderemos, solo es cuestion de tiempo y de fijarse y romperse la cabeza.
Si hay errores en el codigo o fugas de seguridad, por favor, comentenlo y ayuden, mostrando el codigo, de como se mejora este script, para poder aprender ha hacer las cosas mejor.

Un saludo.

Última edición por jaronu; 08/03/2008 a las 17:27
  #3 (permalink)  
Antiguo 08/03/2008, 12:45
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 9 meses
Puntos: 52
Re: APORTE: Avtivacion de cuenta de usuarios via e-mail.

Formulario para el registro de users

Código PHP:
<table width="661" height="393" border="0" align="left" cellpadding="0" cellspacing="0">
        <
tr>
          <
td width="662" colspan="3" align="center" valign="top" >
          <
form action="registro.php" method="post">
          <
table width="59%" border="0" cellspacing="0" cellpadding="0">
            <
tr>
              <
td height="18" colspan="4" align="center"><a href="javascript:history.go(-1)" class="Estilo19">Volver</a></td>
            </
tr>
            <
tr>
              <
td height="54" colspan="4"><div align="center"><span class="Estilo18">Esta intentando entrar en una zona restringida a usuariospor favorregistresele llevara 30 sgdespues podr&aacutetener acceso a todas las descargassin restricciones.</span></div></td>
              </
tr>
            <
tr>
              <
td height="21" colspan="4"><div align="center" class="Estilo17"><strong>Registro</strong></div></td>
              </
tr>
            <
tr>
              <
td width="14%" align="right" class="Estilo18">&nbsp;</td>
              <
td width="33%" height="31" class="Estilo24">Usuario <span class="Estilo27">(max 10):</span></td>
              <
td width="43%"><input type="text" name="username" size="20" maxlength="20" class="estilotextarea44" style="font-family:verdana;  font-size:10pt" /></td>
              <
td width="10%">&nbsp;</td>
              </
tr>
            <
tr>
              <
td align="right" class="Estilo18">&nbsp;</td>
              <
td height="29" class="Estilo24">Password <span class="Estilo27">(max 10):</span></td>
              <
td><input type="password" name="password" size="10" maxlength="10" class="estilotextarea43" style="font-family:verdana;  font-size:10pt" id="password" /></td>
              <
td>&nbsp;</td>
              </
tr>
            <
tr>
              <
td align="right" class="Estilo18">&nbsp;</td>
              <
td height="29" class="Estilo24">Confirmar passw:</td>
              <
td><input type="password" name="password2" size="10" maxlength="10" class="estilotextarea42" style="font-family:verdana;  font-size:10pt" /></td>
              <
td>&nbsp;</td>
              </
tr>
            <
tr>
              <
td align="right" class="Estilo18">&nbsp;</td>
              <
td height="29" class="Estilo24">Email <span class="Estilo25"><span class="Estilo28">(max 40)</span>:</span> </td>
              <
td><input type="text" name="email" size="20" maxlength="40" class="estilotextarea41" style="font-family:verdana;  font-size:10pt" /></td>
              <
td>&nbsp;</td>
              </
tr>
            <
tr>
              <
td height="35" colspan="4" align="center"><input type="submit" value="Registrar" class="boton" /></td>
            </
tr>
            <
tr>
              <
td height="40" colspan="4" align="center"><span class="Estilo18">Le ser&aacuteenviado un correo electr&oacute;nico para confirmar sus datos por favor ingrese correctamente su e-mailgracias.</span></td>
            </
tr>
            <
tr>
              <
td height="40" colspan="4" align="center" class="Estilo23">
              </
tr>
          </
table>
          </
form>
           
            
      
                </
td>
        </
tr>
      </
table
Formulario para login:


Código PHP:

</tr>
        <
form action="confiser.php" method="post">
        <
tr>
          <
td colspan="5" align="right" class="Estilo4">User
            
<label>
            <
input name="usuario" type="text" id="usuario" size="7" maxlength="10" class="estilotextarea4" style="font-family:verdana;  font-size:10pt">
            </
label>Pass
            
<label>
            <
input name="password" type="password" id="password" size="7" maxlength="10" class="estilotextarea4" style="font-family:verdana;  font-size:10pt">
            </
label>            <label>
            <
input type="submit" name="button" id="button" value=" Ir " class="boton">
            &
nbsp; &nbsp;&nbsp;&nbsp;&nbsp;
            </
label></td>
          </
tr></form
P.D. para que el sistema funcione y envie los emails, debeis tener configurado vuestro servicio de correo saliente SMTP, que usa vuestro hosting o vuestra maquina, si trabajais en local

Última edición por jaronu; 12/05/2008 a las 17:51 Razón: aclaracion
  #4 (permalink)  
Antiguo 08/03/2008, 18:17
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 18 años
Puntos: 36
Re: APORTE: Avtivacion de cuenta de usuarios via e-mail.

Muy bueno el aporte jaronu.
  #5 (permalink)  
Antiguo 08/03/2008, 22:54
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 9 meses
Puntos: 52
Re: APORTE: Avtivacion de cuenta de usuarios via e-mail.

Gracias Hgp147

es bueno eso del open source a ver si compartiendo entre todos acabamos con el gigante.

y a ver si alguien que se repase el APORTE incluya agun comentario, para mejorarlo, en la seguridad o en lo que sea, se aceptan todos los comentarios.
pero si sabeis como se mejora un poco mas, poned el codigo para que aprendamos todos

Gracias y un saludo
  #6 (permalink)  
Antiguo 09/03/2008, 09:35
Avatar de hackteam  
Fecha de Ingreso: diciembre-2007
Mensajes: 67
Antigüedad: 17 años
Puntos: 0
Re: APORTE: Avtivacion de cuenta de usuarios via e-mail.

Hola a todos, bueno quisiera solo preguntar y agradecer por el codigo, todavia no lo analice detenidamente, pero cuando estudie a fondo php creo que etendere casi todo, quisiera preguntar algito, segun lo que entendi, eso es para crear un usuario, enviarle un mail y confirmar su cuenta, y tambien para loguearse, que partes de la pagina restringiria? o toda la pagina? ¿Como se podria restringir, alguna parte muy especifica, por ejemplo solo quiero que pueda ver las descargas pero que no pueda bajar nada mientras no se loguee? Y podria crear un id para cada usuario que permita realizar un sistema de referencia? si yo me registro
usuario: bloggero
id:12165454
entonces si yo hago publicidad con la referencia, osea si alguien entra a mi sitio por www.misitio.com/user.php?id=12165454 podria ir sumando puntos para por ejemplo realizar mas descargas, tener mas "beneficios" esto es factible? Gracias por el aporte, espero me sirva cuando tenga que crear mi base de datos :) sadudos!
  #7 (permalink)  
Antiguo 09/03/2008, 09:40
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 9 meses
Puntos: 52
Re: APORTE: Avtivacion de cuenta de usuarios via e-mail.

Cita:
Iniciado por hackteam Ver Mensaje
Hola a todos, bueno quisiera solo preguntar y agradecer por el codigo, todavia no lo analice detenidamente, pero cuando estudie a fondo php creo que etendere casi todo, quisiera preguntar algito, segun lo que entendi, eso es para crear un usuario, enviarle un mail y confirmar su cuenta, y tambien para loguearse, que partes de la pagina restringiria? o toda la pagina? ¿Como se podria restringir, alguna parte muy especifica, por ejemplo solo quiero que pueda ver las descargas pero que no pueda bajar nada mientras no se loguee? Y podria crear un id para cada usuario que permita realizar un sistema de referencia? si yo me registro
usuario: bloggero
id:12165454
entonces si yo hago publicidad con la referencia, osea si alguien entra a mi sitio por www.misitio.com/user.php?id=12165454 podria ir sumando puntos para por ejemplo realizar mas descargas, tener mas "beneficios" esto es factible? Gracias por el aporte, espero me sirva cuando tenga que crear mi base de datos :) sadudos!
SI TE FIJASTE BIEN , despues de hacer login, te redirecciona adonde quieras
por ejemplo tienes una pagina llamada mostrar_descargas.php y en ella no dejas descargar, y si el visitante se loguea entonces lo redirecciona a descargar_archivos.php que es la pagina protegida.
se podria hacer de otras formas, pero no se si captas la idea.
  #8 (permalink)  
Antiguo 09/03/2008, 09:41
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 9 meses
Puntos: 52
Re: APORTE: Avtivacion de cuenta de usuarios via e-mail.

pero de todas formas enseña un poco de codigo que esta utilizando
  #9 (permalink)  
Antiguo 09/03/2008, 09:52
Avatar de hackteam  
Fecha de Ingreso: diciembre-2007
Mensajes: 67
Antigüedad: 17 años
Puntos: 0
Re: APORTE: Avtivacion de cuenta de usuarios via e-mail.

Si entendi, esta semana o la otra termino el codigo y lo posteo, pero creo que necesito aprender un poco de mysql, un saludo! y gracias! (respondi rapido todavia no mire el codigo que pusiste) un saludo! :)
  #10 (permalink)  
Antiguo 09/03/2008, 09:59
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 17 años, 6 meses
Puntos: 49
Re: APORTE: Avtivacion de cuenta de usuarios via e-mail.

Muy bien jaronu


Saludos.
  #11 (permalink)  
Antiguo 10/03/2008, 14:31
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 17 años, 2 meses
Puntos: 101
Re: APORTE: Avtivacion de cuenta de usuarios via e-mail.

Buen aporte
Salu2
__________________
Half Music - www.halfmusic.com
  #12 (permalink)  
Antiguo 23/03/2008, 11:27
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 9 meses
Puntos: 2
Re: APORTE: Avtivacion de cuenta de usuarios via e-mail.

Justamente loq eu andaba buscando jaronu , la verdad 10 puntos , mañana lo pruebo y cualquer cosa te consulto .

Tambien necesito saber como hacer el link de recuperar contraseña , es decir para qeu se genere una nueva pass y la envie a el usuario ,cosa que no tiene mi web todabia.

Felicitaciones.

Salu2
  #13 (permalink)  
Antiguo 23/03/2008, 11:34
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 9 meses
Puntos: 52
Re: APORTE: Avtivacion de cuenta de usuarios via e-mail.

cualquier cosa que te de problemas, lo preguntas
y para recuperar una contraseña no hace falta que generes una nueva, si no quieres, le mandas la misma que tiene.

Un saludo
  #14 (permalink)  
Antiguo 27/03/2008, 11:34
 
Fecha de Ingreso: abril-2007
Mensajes: 63
Antigüedad: 17 años, 8 meses
Puntos: 0
De acuerdo php soporta corros con protocolo mail.dominio.com

Hola a todos bueno quisiera saber como es la configuracion para un servdiro linux dos y ademas como hago si mi protocolo de coneccion es mail.dominio.com bueno suponiendo que dominio es mi servidor... e intentado hacer esto

esto lo he hecho en mi servdiro locar wn windows hay otro en servdior linux

[mail function]
; For Win32 only.
SMTP = smtp.atlandesperu.com
smtp_port = 25

; For Win32 only.
sendmail_from = [email protected]
  #15 (permalink)  
Antiguo 03/04/2008, 02:20
 
Fecha de Ingreso: abril-2008
Mensajes: 14
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: APORTE: Avtivacion de cuenta de usuarios via e-mail.

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


//añadimos la funcion que se encargara de generar un numero aleatorio
function genera_random($longitud){
$exp_reg="[^A-Z0-9]";
return substr(eregi_replace($exp_reg, "", md5(rand())) .
eregi_replace($exp_reg, "", md5(rand())) .
eregi_replace($exp_reg, "", md5(rand())),
0, $longitud);
}


function formRegistro(){
?>
<?php
}

// verificamos si se han enviado ya las variables necesarias, las que tenemos en nuestro form cambialo, como sea el tuyo.
if (isset($_POST["username"])) {
$username = $_POST["username"];
$password = $_POST["password"];
$password2 = $_POST["password2"];
$email = $_POST["email"];
// Hay campos en blanco
if($username==NULL|$password==NULL|$password2==NUL L|$email==NULL) {
echo "un campo está vacio.";
formRegistro();
}else{
// ¿Coinciden las contraseñas?
if($password!=$password2) {
echo "Las contraseñas no coinciden";
formRegistro();
}else{
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
$checkuser = mysql_query("SELECT usuario FROM usuarios WHERE usuario='$username'");
$username_exist = mysql_num_rows($checkuser);
$checkemail = mysql_query("SELECT email FROM usuarios WHERE email='$email'");
$email_exist = mysql_num_rows($checkemail);
if ($email_exist>0) {
echo "La cuenta de correo estan ya en uso";
formRegistro();
}else{
if ($username_exist>0) {
echo "El nombre de usuario esta ya en uso";
formRegistro();


}else{

//agregamos la variable $activate que es un numero aleatorio de
//20 digitos crado con la funcion genera_random de mas arriba

$activate = genera_random(20);

//aqui es donde insertamos los nuevos valores en la BD activate y el valor 1 que es desactivado

$query = 'INSERT INTO usuarios (usuario, password, email, fecha, activate, estado)
VALUES (\''.$username.'\',\''.$password.'\',\''.$email.'\ ',\''.date("Y-m-d").'\',\''.$activate.'\', 1)';
mysql_query($query) or die(mysql_error());



echo "<table width=70%><tr bgcolor= #61e877 class= estilo30><div align=center>";
echo 'Ha sido registrado en DDSoFT como: <b>'.$username.' </b>de manera satisfactoria.<br />';
echo ' Gracias. Le enviaremos ahora un email<br />';
echo 'para activar su cuenta, al correo que nos facilito.<br />';
echo "</div></tr>";
echo "</table>";



$query = "SELECT * FROM usuarios WHERE usuario='$username'";
$result = mysql_query($query , $conexion) or die ( mysql_error() );
$row = mysql_fetch_array($result);

$path="localhost"; //creamos nuestra direccion, con las carpetas que sean si hay
//armamos nuestro link para enviar por mail en la variable $activateLink
$activateLink=$path."activar_registro.php?id=".$ro w['id']."&activateKey=".$activate."";

// Datos del email

$nombre_origen = "ADMIN DDSoFT";
$email_origen = "[email protected]";
$email_copia = "[email protected]";
$email_ocultos = "[email protected]";
$email_destino = "".$row['email']."";



$asunto = "".$row['usuario']." Datos de registro en DDSoFT, guarde este email.";

$mensaje = '<table width="629" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="623" align="left"></td>
</tr>
<tr>
<td bgcolor="#2EA354"><div style="color:#FFFFFF; font-size:14; font-family: Arial, Helvetica, sans-serif; text-transform: capitalize; font-weight: bold;"><strong> Estos son sus datos de registro, '.$row['usuario'].'</strong></div></td>
</tr>
<tr>
<td height="95" align="left" valign="top"><div style=" color:#000000; font-family:Arial, Helvetica, sans-serif; font-size:12px; margin-bottom:3px;"> USUARIO: '.$row['usuario'].'</strong><br><br><br>
<strong>SU CLAVE : </strong>'.$row['password'].'</strong><br><br><br>
<strong>SU EMAIL : </strong>'.$row['email'].'</strong><br><br><br>
<strong>SU LINK DE ACTIVACION:<br><a href="'.$activateLink.'">'.$activateLink.' </strong></a><br><br><br>
<strong>POR FAVOR HAGA CLICK EN LINK DE ARRIBA PARA ACTIVAR SU CUENTA Y ACCEDER A LA PAGINA SIN RESTRICCIONES</strong><br><br><br>
<strong>SI EL LINK NO FUNCIONA A LA PRIMERA INTENTELO UNA SEGUNDA, EL SERVIDOR A VECES TARDA EN PROCESAR LA PRIMERA ORDEN</strong><br><br><br>

<strong>GRACIAS POR REGISTRARSE EN DDSoFT</strong><br><br><br>
</div>
</td>
</tr>
</table>';



$formato = "html";

//************************************************** ***************//
$headers = "From: $nombre_origen <$email_origen> \r\n";
$headers .= "Return-Path: <$email_origen> \r\n";
$headers .= "Reply-To: $email_origen \r\n";


$headers .= "X-Sender: $email_origen \r\n";

$headers .= "X-Priority: 3 \r\n";
$headers .= "MIME-Version: 1.0 \r\n";
$headers .= "Content-Transfer-Encoding: 7bit \r\n";

//************************************************** ***************//

if($formato == "html")
{ $headers .= "Content-Type: text/html; charset=iso-8859-1 \r\n"; }
else
{ $headers .= "Content-Type: text/plain; charset=iso-8859-1 \r\n"; }

if (@mail($email_destino, $asunto, $mensaje, $headers))
{ }






}
}
}
}
}else{
formRegistro();
}

?>

Vamos a ver amigo si me puedes ayudar.
Lo que ocurre es que nose como hago para que los mensajes yegen a la persona que se registra :S haber si tu me puedes corregir lo que este mal el msn que debe mandar los codigos de activacion es [email protected] bueno eso es todo.
GRACIAS POR ADELANTADO
  #16 (permalink)  
Antiguo 03/04/2008, 04:07
 
Fecha de Ingreso: abril-2008
Mensajes: 39
Antigüedad: 16 años, 8 meses
Puntos: 1
De acuerdo Re: APORTE: Avtivacion de cuenta de usuarios via e-mail.

A mi me pasa exactamente lo mismo hace todo perfecto menos enviar el mail, una pregunta, el mail se manda en texto plano sin cifrar no? eso nos se podria cambiar?

Creo que ya he encontrado la solución el caso esque hay que configurar php.ini para que envie correos

Última edición por hiltman; 03/04/2008 a las 05:23
  #17 (permalink)  
Antiguo 03/04/2008, 14:44
 
Fecha de Ingreso: abril-2008
Mensajes: 14
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: APORTE: Avtivacion de cuenta de usuarios via e-mail.

Cita:
Iniciado por hiltman Ver Mensaje
A mi me pasa exactamente lo mismo hace todo perfecto menos enviar el mail, una pregunta, el mail se manda en texto plano sin cifrar no? eso nos se podria cambiar?

Creo que ya he encontrado la solución el caso esque hay que configurar php.ini para que envie correos
Me puedes decir entonces como se soluciona??PLZZ
GRACIAS DE ANTE MANO
  #18 (permalink)  
Antiguo 13/06/2008, 16:13
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 9 meses
Puntos: 65
Respuesta: APORTE: Avtivacion de cuenta de usuarios via e-mail.

hola hola!

Polako porque no intentas cambiar esto:
Código PHP:
if (@mail($email_destino$asunto$mensaje$headers)) 
{ } 
por algo asi ^^
Código PHP:
if (mail($email_destino,$asunto,$mensaje,$headers)){
   echo 
"registro incompleto";

creo que por eso no te lo envia

y por otro lado, a mi me causa mucha desconfianza, usar javascript para los redireccionamientos, y ya que todo el código que ponen aqui esta en PHP, porque no ponerlo directo desde PHP.. algo como esto..
Código PHP:
header("location: principal.php");
exit(); 
en lugar de
Código:
<SCRIPT LANGUAGE="javascript"> 
location.href = "principal.php"; 
</SCRIPT>
asi no nos liamos en pensar que si el navegador lo tendrá desactivado, y el usuario se quede esperando de por vida el direccionamiento, solo a comentario extra..

la información me ha servido bastante mil gracias
  #19 (permalink)  
Antiguo 08/08/2008, 01:55
 
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: APORTE: Avtivacion de cuenta de usuarios via e-mail.

mi problema es que no llegael email mi codigo es

.................................................. .................................................. ..............................................
no me reconoce login
<?php
session_start();
//datos para establecer la conexion con la base de mysql.
mysql_connect('id00','7','8vhini')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('i12907')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
function quitar($mensaje)
{
$mensaje = str_replace("<","<",$mensaje);
$mensaje = str_replace(">",">",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',"",$mensaje);
return $mensaje;
}
$estado= "0";
if ($_POST['username']){
{
// 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
$username = strtolower(htmlentities($HTTP_POST_VARS[“username”], ENT_QUOTES));
$password = $HTTP_POST_VARS[“password”];
$result = mysql_query('SELECT password, username, estado FROM registrounpu WHERE username=\''.$username.'\'');
if($row = mysql_fetch_array($result)){
if($row[“password”] == $password){
$_SESSION[“k_username”] = $row[‘username’];
//Elimina el siguiente comentario si quieres que re-dirigir automáticamente a index.php
/*Ingreso exitoso, ahora sera dirigido a la pagina principal.
<SCRIPT LANGUAGE="javascript">
location.href = "index.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();
?>

Última edición por nachosaenz; 12/08/2008 a las 20:49
  #20 (permalink)  
Antiguo 08/08/2008, 02:10
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 5 meses
Puntos: 416
Respuesta: Re: APORTE: Avtivacion de cuenta de usuarios via e-mail.

Cita:
Iniciado por jaronu Ver Mensaje
Gracias Hgp147

es bueno eso del open source a ver si compartiendo entre todos acabamos con el gigante.

y a ver si alguien que se repase el APORTE incluya agun comentario, para mejorarlo, en la seguridad o en lo que sea, se aceptan todos los comentarios.
pero si sabeis como se mejora un poco mas, poned el codigo para que aprendamos todos

Gracias y un saludo
Muy buen aporte jaronu.
Yo tengo un sistema similar.

Te recomiendo que uses expresiones regulares para comprobar que el usuario que introduzcan no contenga caracteres extraños.
Código PHP:
$caracteres_validos '/^[a-zA-Z0-9][\w]*[a-zA-Z0-9]$/';
//Luego con un preg_match verificas. 
Asi se esa forma verificas que solamente se puedan insertar usernames de tipo:
username, user_name :P
Si tratan de poner algo como _username, no funcionaria. Tampoco username_

De nuevo, muy buen aporte :) Gracias por compartir tu codigo.
  #21 (permalink)  
Antiguo 10/08/2008, 02:06
 
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: APORTE: Avtivacion de cuenta de usuarios via e-mail.

jaronu
..........
mira lo monto con echo en vez de funcion mail para comprobar
y lo manda ingreso las variables en la bd todas pero la ip la fecha y la hora que yo he ampliado no me las ingresa bien pone en fecha esto 0000-00-00 en ip nada y en hora esto 00:00:00
lo demas bien activo el links y pasa el estado de 1 a 0 ok pero cuando hago login me dice password incorrecto y es la correcta me puedes ayudar mis archivo son estos
...........
registrar.php
.........
<?php
session_start();
//datos para establecer la conexion con la base de mysql.
$conexion=mysql_connect('ihhhh0','i1ggg','8ggggggg gggggi')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('iiiiiiiiiiiii7')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
//añadimos la funcion que se encargara de generar un numero aleatorio
function genera_random($longitud){
$exp_reg="[^A-Z0-9]";
return substr(eregi_replace($exp_reg, "", md5(rand())) .
eregi_replace($exp_reg, "", md5(rand())) .
eregi_replace($exp_reg, "", md5(rand())),
0, $longitud);
}
function formRegistro(){
?>
<html>
<header>
<body>
<form action="http://ss.idoo.com/registrar.php" method="post">
Usuario :
<input type="text" name="username" size="13" maxlength="20" >

Password :
<input type="password" name="password" size="10" maxlength="10" >
Confirma :
<input type="password" name="password2" size="10" maxlength="10" >
Email :
<input type="text" name="email" size="19" maxlength="40" >
<input type="submit" value="Registrar" >
</form>
</body>
</html>
<?php
}

// verificamos si se han enviado ya las variables necesarias, las que tenemos en nuestro form cambialo, como sea el tuyo.
if (isset($_POST["username"])) {
$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
// Hay campos en blanco
if($username==NULL|$email==NULL|$password==NULL) {
echo "un campo está vacio.";
formRegistro();
} else {
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
$checkuser = mysql_query("SELECT username FROM registrounpu WHERE username='$username'");
$username_exist = mysql_num_rows($checkuser);
$checkemail = mysql_query("SELECT email FROM registrounpu WHERE email='$email'");
$email_exist = mysql_num_rows($checkemail);
if ($email_exist>0) {
echo "La cuenta de correo estan ya en uso";
formRegistro();
} else {
if ($username_exist>0) {
echo "El nombre de usuario esta ya en uso";
formRegistro();
} else {

//agregamos la variable $activate que es un numero aleatorio de
//20 digitos crado con la funcion genera_random de mas arriba

$activate = genera_random(20);

//aqui es donde insertamos los nuevos valosres en la BD activate y el valor 1 que es desactivado

$query = 'INSERT INTO registrounpu (username, password, email, ip, fecha, hora, activate, estado )
VALUES (\''.$username.'\',\''.$password.'\',\''.$email.'\ ',\''.$ip.'\',\''.$fecha.'\',\''.$hora.'\',\''.$ac tivate.'\', 1)';
mysql_query($query) or die(mysql_error());
echo "<table width=70%><tr bgcolor= #61e877 class= estilo30><div align=center>";
echo 'Ha sido registrado en Ss Foro como: <b>'.$username.' </b>de manera satisfactoria.<br />';
echo ' Gracias. Le enviaremos ahora un email<br />';
echo 'para activar su cuenta, al correo que nos facilito.<br />';
echo "</div></tr>";
echo "</table>";
$query = "SELECT * FROM registrounpu WHERE username='$username'";
$result = mysql_query($query , $conexion) or die ( mysql_error() );
$row = mysql_fetch_array($result);

$path="http://ss.idoo.com/registros/"; //creamos nuestra direccion, con las carpetas que sean si hay
//armamos nuestro link para enviar por mail en la variable $activateLink
$activateLink=$path."activar_cuenta.php?id=".$row['id']."&activateKey=".$activate."";

// Datos del email

$nombre_origen = "http://blog.idoo.com/ss";
$email_origen = "[email protected]";
$email_copia = "[email protected]";
$email_ocultos = "[email protected]";
$email_destino = "".$row['email']."";
$asunto = "".$row['username']." Datos de registro en Ss Foro, guarde este email.";
$mensaje = '<table width="629" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="623" align="left"></td>
</tr>
<tr>
<td bgcolor="#2EA354"><div style="color:#FFFFFF; font-size:14; font-family: Arial, Helvetica, sans-serif; text-transform: capitalize; font-weight: bold;"><strong> Estos son sus datos de registro, '.$row['username'].'</strong></div></td>
</tr>
<tr>
<td height="95" align="left" valign="top"><div style=" color:#000000; font-family:Arial, Helvetica, sans-serif; font-size:12px; margin-bottom:3px;"> USUARIO: '.$row['username'].'</strong><br><br><br>
<strong>SU EMAIL : </strong>'.$row['email'].'</strong><br><br><br>
<strong>SU LINK DE ACTIVACION:<br><a href="'.$activateLink.'">'.$activateLink.' </strong></a><br><br><br>
<strong>POR FAVOR HAGA CLICK EN LINK DE ARRIBA PARA ACTIVAR SU CUENRA Y ACCEDER A LA PAGINA SIN RESTRICCIONES</strong><br><br><br>
<strong>SI EL LINK NO FUNCIONA ALA PRIMERA INTENTELO UNA SEGUNDA, EL SERVIDOR A VECES TARDA EN PROCESAR LA PRIMERA ORDEN</strong><br><br><br>

<strong>GRACIAS POR REGISTRARSE EN SS FORO.</strong><br><br><br>
</div>
</td>
</tr>
</table>';
$formato = "html";

//************************************************** ***************//
$headers = "From: $nombre_origen <$email_origen> \r\n";
$headers .= "Return-Path: <$email_origen> \r\n";
$headers .= "Reply-To: $email_origen \r\n";
$headers .= "X-Sender: $email_origen \r\n";
$headers .= "X-Priority: 3 \r\n";
$headers .= "MIME-Version: 1.0 \r\n";
$headers .= "Content-Transfer-Encoding: 7bit \r\n";
//************************************************** ***************//
if($formato == "html"){
$headers .= "Content-Type: text/html; charset=iso-8859-1 \r\n";
} else {
$headers .= "Content-Type: text/plain; charset=iso-8859-1 \r\n";
}
//if (@mail($email_destino, $asunto, $mensaje, $headers))
echo $email_destino."<br />".$asunto."<br />".$mensaje."<br />".$headers;
//{ }






//}
}
}
}
} else {
formRegistro();
}
?>
..............
activar_cuenta
...........................
<?php

mysql_connect('igggggg0','ir5gggg5','8fffffffffffn i')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('ifffff556')or die ('Error al seleccionar la Base de Datos: '.mysql_error());

//recogemos los valores enviados por el link de activacion que mandamos por mail
if (isset($_GET['id'])) {
$idval=$_GET['id'];
$activate2=$_GET['activateKey']; ;
//y aqui es donde cambiamos el valor 1=desactivado por valor 0=activado
$query = "UPDATE registrounpu
SET estado = '0' WHERE id = '$idval' AND activate ='$activate2' " ;
mysql_query($query) or die(mysql_error());
?>

<SCRIPT LANGUAGE="javascript">
location.href = "http://blog.idoo.com/ss";

</SCRIPT>

<?

}else{
echo "activacion incompleta.";

}


?>
........................
login formulario
......................
<form action="http://ss.idoo.com/validar_usuario.php" method="post">
Usuario : <input type="text" name="usuario" size="20" maxlength="20" />
Password :
<input type="password" name="password" size="10" maxlength="10" />
<input type="submit" value="Ingresar" />
<form action="http://ss.idoo.com/validar_index.php" method="post">
<input name="Restablecer" type="reset" value="Volver Atras" />
.......................
  #22 (permalink)  
Antiguo 10/08/2008, 02:07
 
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: APORTE: Avtivacion de cuenta de usuarios via e-mail.

loque faltaba esque no me entraba
............................
validar_usr.php
...........................
<?php
session_start();
//datos para establecer la conexion con la base de mysql.
mysql_connect('3333333333','i4444','3222222e')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('322227')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['username']) {

// 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
$username = strtolower(htmlentities($HTTP_POST_VARS["username"], ENT_QUOTES));
$password = $HTTP_POST_VARS["password"];
$result = mysql_query('SELECT password, username, estado FROM registrounpu WHERE username=\''.$username.'\'');
if($row = mysql_fetch_array($result)){
if($row["password"] == $password){
$_SESSION["k_username"] = $row['username'];
if( $estado == $row['estado']){ //aqui es donde comprovamos que el campo activado sea cero, si lo es pasara, si no, no.
//el siguiente scripy de java nos redirige donde le digamos, so no os hace falta ,lo borrais.
?>
<SCRIPT LANGUAGE="javascript">
location.href = "http://blog.idoo.com/ss";
</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();


?>
...................................
me ayudais haber que hago mal y la ultima pregunta sabe algien si idoo te deja usar la funcion mail o tiene activado SMTP que es lo mismo .gracias a todos
  #23 (permalink)  
Antiguo 12/01/2009, 10:27
Avatar de keyvin  
Fecha de Ingreso: noviembre-2008
Ubicación: Caracas
Mensajes: 1
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: APORTE: Avtivacion de cuenta de usuarios via e-mail.

Jaronu Gracias Tremendo Aporte Me Sirvio Demaciado

Te Quiero Hacer Una Pregunta Si puedes Ayudarme Te Lo Agradeceria

Quisiera Saber Como Hago Para Que los Usuarios Que No Activen Sus Cuentas

La Misma Sea Borrada Automaticamente Pasa Algunas Horas

Para Mantener Una Base De Datos Limpia

Saludos
  #24 (permalink)  
Antiguo 16/01/2009, 03:20
 
Fecha de Ingreso: octubre-2008
Mensajes: 180
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: APORTE: Avtivacion de cuenta de usuarios via e-mail.

Hola! una mini pregunta. ¿La función genera_random(20) existe? porque a mi me dice que no...
  #25 (permalink)  
Antiguo 10/06/2009, 12:03
 
Fecha de Ingreso: diciembre-2007
Mensajes: 107
Antigüedad: 17 años
Puntos: 4
Respuesta: APORTE: Avtivacion de cuenta de usuarios via e-mail.

que necesidad hay de hacer esto:
$email_destino = "".$row['email']."";
no es mas simple hacer $email_destino = $row['email'];
:S
  #26 (permalink)  
Antiguo 09/10/2009, 11:44
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 11 meses
Puntos: 25
Respuesta: APORTE: Activacion de cuenta de usuarios via e-mail.

Tema viejito revivido xD

Chicos una pregunta, en esta parte:
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());

//recogemos los valores enviados por el link de activacion que mandamos por mail
if (isset($_GET['id'])) {

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

//y aqui es donde cambiamos el valor 1=desactivado  por valor 0=activado
$query "UPDATE usuarios
            SET estado = '0' WHERE   id = '$idval' AND activate ='$activate2' " 
;
                
mysql_query($query) or die(mysql_error());
?>
            
            <SCRIPT LANGUAGE="javascript">
            location.href = "principal.php";
            </SCRIPT>
<?

}else{
        echo 
"activacion incompleta.";
}
?>
Hice una prueba y veo que no se comprueba el key, es decir, si el usuario en la barra de direcciones cambia el key, de todas maneras regresa a la principal pero no activa la cuenta, como se le podria hacer para que se comprobara el key y en caso que no concuerde regrese un mensaje de error?

Mil gracias !!!
  #27 (permalink)  
Antiguo 09/10/2009, 12:49
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: APORTE: Activacion de cuenta de usuarios via e-mail.

Cambia mysql_query() y agrega despues:

Código php:
Ver original
  1. $result = mysql_query($query) or die(mysql_error());
  2. if(mysql_num_rows($result) > 0) {
  3.     header('Location: principal.php');
  4.     exit;
  5. }

Despues eliminas } else { y el echo lo colocas fuera del if debajo de la llave de cierre }
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 09/10/2009 a las 16:30 Razón: Faltaba un signo igual = :-D
  #28 (permalink)  
Antiguo 09/10/2009, 12:55
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 11 meses
Puntos: 25
Respuesta: APORTE: Activacion de cuenta de usuarios via e-mail.

Hola Triby, mil gracias, voy a probarlo y te digo como me fue

Última edición por JessicaTJ; 09/10/2009 a las 13:17
  #29 (permalink)  
Antiguo 09/10/2009, 13:13
Avatar de GuampMultimedios  
Fecha de Ingreso: agosto-2009
Ubicación: Buenos Aires
Mensajes: 123
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: APORTE: Activacion de cuenta de usuarios via e-mail.

¡Excelente aporte! Les puede servir a muchos; mañana lo estaré probando y les cuento como me fue.

Salute.
__________________
Guamp Multimedios
Empresa dedicada a la creación de contenidos web de máxima calidad
  #30 (permalink)  
Antiguo 09/10/2009, 16:25
Avatar de kilpo  
Fecha de Ingreso: noviembre-2008
Mensajes: 19
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: APORTE: Activacion de cuenta de usuarios via e-mail.

esta rebueno el codigo gracias.
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 19 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 07:12.