Pedir presupuesto

Registros de usuarios en Php y Mysql con validación de campos y activación por mail 8/8

Ya hemos acabado el tutorial «Registro de usuarios en PHP y Mysql con validación de campos y activación por mail«, lo que hemos visto hasta ahora ha sido lo siguiente:

Temario

Después de estas siete partes del tutorial ya podemos hacer un registro de usuarios completo, pero está claro que lo podemos mejorar y eso me gustaría que vosotros mismos lo realizarais.

Os voy a dar una serie de consejos que podriamos aplicarle a esta pequeña aplicación:

  • Encriptar contraseñas con MD5: A la hora de dar de alta contraseñas en la base de datos, es conveniente utilizar este tipo de encriptaciones del lado de PHP, aunque también existen otro tipo de encriptaciones como es el caso de ENCODE. SHA1, etc .. (http://dev.mysql.com/doc/refman/5.0/es/encryption-functions.html).
  • Comprobar que la clave utilizada para el campo txt_Activ de la tabla users_temp no exista ya.
  • Incluir las funciones en un archivo externo.
  • Incluir la conexión a la base de datos dentro de una función que podriamos llamar conexión() para así no redundar en el código.
  • Pasar por GET, además del ID, el mail del usuario y después comprobar que el ID y el mail existen en la base de datos users_temp. Así nos aseguramos que ha hecho clic en el enlace el mail del usuario en cuestión.
  • Crear una sola función llamada insertarRegiAct en la que además de todos los campos que se pasan hasta ahora, incluir uno más para informar la tabla, por ejemplo $tabla. Esto solucionará la redundancia de código en el archivo funciones.php y activar.php.
  • Programación Orientada a Objetos: Php soporta clases desde versiones anteriores y es una buena manera de programar, puede ser interesante para aquellos que aun no controlan este tema, intentar realizar esta misma aplicación Orientada a Objetos.

Con estas mejoras tendriamos una aplicación algo más completa y más segura. Ahora ya queda en vuestras manos hacerlo o no.

Debido a la demanda de los archivos con el código, os los dejo para que podáis descargarlo en el siguiente enlace:

Espero que este tutorial os haya gustado, y ya sabéis que para cualquier duda, podéis contactar conmigo.

NOTA 2: A dia 19 de Abril del 2011, se ha modificado el código, y actualizado en la descarga. Por favor, vuelvan a descargarlo de nuevo los que tengáis la versión anterior. Disculpen las molestias

NOTA 1: En esta pequeña aplicación utilizamos el envío de correo electrónico para activar el usuario haciendo uso de la función mail(). Esta función no puede ser usada en condiciones normales en nuestro servidor local, así que os aconsejo que os leais este pequeño tutorial de ¿Cómo enviar mail desde localhost sin servidor smtp local?

¿Te ha gustado?, Comparte!!

155 comentarios

  1. Amigo no logro que el correo me llegue por loq ue veo don esta la funcion de envio de mail tienes la de actiuvacon pero no lofro ver ninguna para envaialo amigo

  2. Muchas gracias por el aporte, probé hasta la parte 6 y me iba todo perfecto. Tengo que añadir lo de la verificación del email.
    Para ello me bajaré el código que he visto que lo has puesto aquí.

    En cualquier caso, se agradece el trabajo y esfuerzo y la exlpicación clara y sencilla que has echo 🙂

  3. Hola Admin muy bueno tu trabajo. Gracias.
    Al hacer clic en el vínculo del mail para autentificar usuario me sale una pagina trget blank con error.
    Los usuarios los recibe bien em users temp, pero no los pasa a USUARIOS..,Que puedo hacer? Gracias.

  4. Por QUE PONES ESTO Y NO LO CUMPLES?
    Espero que este tutorial os haya gustado, y ya sabéis que para cualquier duda, podéis contactar conmigo.
    este es el quinto mensaje y no me respondes

  5. Cuando contesto el mail el archivio activar.php me communica: duplicate key. y si ejecuto este archivo solo siempre me devuelve el mensaje:duplicate key Que puedo hacer. Gracias

  6. Tengo el mismo problema con el target. He intentado de todo pero no consigo solucionarlo. Si alguien lo sabe que comente, por favor. Se agradece el aporte.
    Un saludo

  7. Juan disculpa el retraso, pero he estado muy liado ultimamente, por eso no he contestado a los correos. No es que no quiera responder, es que me ha faltado tiempo. Dejame que te lo mire y te digo algo, parece ser que es un error similar al de otros usuarios lo del target.

    En cuanto al duplcate Key, seguramente quieras dar de alta un usuario que ya está en tu base de datos.

    Voy a ver que esta pasando con los archivos que subi.

    Saludos.

  8. ********************************
    MODIFICACION EN CODIGO REQUERIDA
    ********************************

    Ya he visto el problema que habia en el código del Tutorial.

    Aqui estan las modificaciones:

    1. En la llamada a la funcion mailActivacion pasaremos un nuevo parámetro que corresponderá a la variable $url, con lo que quedará de la siguiente manera:
      mailActivacion($emailValue, $username, $url);
    2. Insertar una nueva variable como parámetro en la función mailActivacion que llamaremos $enlace, quedaría de la siguiente manera:
      function mailActivacion($emailValue, $username, $url, $enlace)
    3. Añadimos la siguiente linea detro de la funcion mailActivacion:
      $dominio = «http://www.tudominio.com/usuarios/». Esta ruta la tendréis que modificar con vuestro propio dominio.
    4. Modificamos las siguientes lineas dentro de la función mailActivacion:
      [php]$cuerpo .= ‘Gracias por registrarte en COLORATE.
      Para completar el registro tienes que confirmar que has recibido el e-mail en el siguiente enlace:

      Responder

  9. buenas, estoy mirando el tutorial de phpmailer y he descargado el archivo que dicen que es necesario, pero no encuentro la carpeta «include». no se si es que no lo estoy haciendo bien. si me podeis ayudar os lo agradeceria mucho.
    un saludo!!

  10. Hola.. Excellente este TUTORIAL

    todos los archivos están muy bien.. para que el Tutorial este completo te recomiendo que también subas los 2 archivos para la BD!

    Saludos!

  11. que tal de nuevo por aca, una pregunta, porque no me llega el correo de confirmacion? hace todo menos eso, algun tip? loe stoy trabajando en fedora 14 con servidor apache, phpmyadmin, php y mysql

  12. que tal, gracias por tu respuesta, ya he descargado php mailer for php4, pero aun sigo perdido, ya he leido la docuementacion incluida y no encuentro la carpeta include, estoy en sombras

  13. Esto yo lo probé en mi hosting .. en local la verdad es que no llego a funcionarme pero por otros temas. Por favor, aquellos que hayan consiguido mandar el mail en LOCAL, comentarlo por aqui

  14. Muchas gracias todo tu codigo a funcionado de maravilla, aunque le he hecho unas pequeñas modificaciones.
    Igual lo que necesitaba resolver lo aclare con tu buen tutorial, de nuevo muchas gracias

  15. Buen dia primeramente quiero agradecer tu Enorme aporte que de seguro para muchos a sido muy util, y tambien quiersiera ver si me puedes ayudar por que al momento de registrarme (ya en el hosting remoto) me sale este error «Unknown column ‘nombre’ in ‘field list'»

  16. Hola muy buenas. Tuve un problema que ya solucioné, por si a alguien le puede servir.

    ******************************************

    Notice: Undefined variable: clave in funciones.php on line 56

    ******************************************

    Problema:

    $clave .= $semilla[$valor][$posicion];

    Solución: (eliminamos el punto que hay antes de ‘=’)

    $clave = $semilla[$valor][$posicion];

    Este tutorial es genial, lo estoy modificando y ampliando acorde con mis necesidades pero sin la base que tu trabajo me ha aportado no se por donde hubiera empezado. Un saludo!

  17. buenas, muy bueno el tutorial, pero tampoco consigo que me mande el mail. no tengo muy claro que tengo que poner en la «function mail».
    alguien me lo puede explicar?
    muchas gracias

  18. viejo te has pasado con el tutorial, andaba buscando como hacer esto. Todos los que necesiten configurar el envio de email local, yo lo puede hacer sin problemas por xampp, con el servidor Mercury de smtp, me lei un tutorial y me salio a la primera. Aca es posible configurar tu cuenta de gmail para lograr el envio a cualquier otro correo.

    espero les sirva: http://goliatenterrado.es/2009/03/03/configurar-el-mercury32-del-xampp-para-enviar-correos-externos/.

    Lo otro, estoy haciendo el logueo de usuarios, tienes algun tutorial al respecto?

    saludos

    Andree

  19. Hola que tal?
    Me podrias ayudar con la funcion activar_mail.php? porque llegue a esa parte y me trabe, quizas no este bien subido el archivo porque esta vacío.
    Gracias

  20. cree todo tal y cual sale en tu tutorial y me sale ese error Unknown column ‘txt_Activ’ in ‘field list’ a q se debe ?
    tambien me remarca un error con la linea 69 de funciones.php que hace referencia a esto

    $clave .= $semilla[$valor][$posicion];

    Si me pudieces ayudar seria genial.

    Saludos

    1. Felipe eso es porque te falta añadir ese campo en la base de datos. He actualizado la parte 6 del tutorial porque faltaba esta linea a la hora de definir los campos:

      [mysql]
      `txt_Activ` varchar(50) NOT NULL,
      [/mysql]

      Un saludo.

  21. Realize el tutorial todo tal cual al momento de registrarme, me llega el correo todo bien pero no me pasa a los usuarios de users_temp a usuarios.

    Saludos

  22. hola!
    Les planteo mi problema es que consigo hacer todo el registro pero cuando se registra en la tabla usuarios el nombre no sale no se queda grabado y nose por que es me podeis ayudar, y otra cosa de la tabla temporal tampoco se borra el usuario.
    Gracias.

  23. Primeramente gracias por el gran tutoria, buen aporte. Y tambien gracias a andree, abia intentado infinidad de codigos para que localhost enviara el correo de activacion y con la solucion de él fue la que funciono gracias de nuevo. ya solo me falta regresar la activacion. sigo adelante

  24. La verdad debo agradecer este tutorial que me vino de 10 pero quisiera indicarte un cambio que hay que hacer en el código de verificación de email, si estoy equivocado me corriges.

    En validación de email, dentro de funciones.php, el email habria que consultarlo en la tabla usuarios en lugar de la tabla users_temp ya que por ejemplo, tu quieres registrarte en mi página y un usuario anterior a ti al momento de completar el registro utilizó tu dirección de email y aunque este no haya podido validar el registro al no ser el dueño de esa dirección de email, igualmente esa dirección de email seguirá existiendo en la tabla users_temp por lo que cuando tu intentes registrarte con ese email, el mismo saldrá como que ya existe. Ahora al sustituir users_temp por usuario, dentro de funciones.php en la parte de validación de email, en ese caso el email saldrá como disponible ya que ese usuario anterior no ha podido finalizar el registro, por lo que el mismo no se encontrará registrado en dicha tabla.

    Un saludo y nuevamente gracias!!!

  25. ola ya comente mi problema y digo lo mismo que e visto por ay un tal juan para que dices que mandemos las dudas si no las resuelves. si eres tan amable me gustaría que me ayudases con mi problema todo sale bien menos pasar el usuario de tabla por que puede ser?

  26. Primero gracias, hace tiempo que estoy con este formulario y sigo realizando modificaciones. De q manera hiciste el cambio que sugirió Pablo? porq q hice el cambio de users_temp por usuarios para que compruebe el email en la otra tabla y después he probado de registrarme con un email que esta incluido en la tabla users_temp, pero no en la tabla usuarios y cuando envio me indica: Duplicate entry ‘xxxxxxx@xxxxxx.com’ for key ‘email’ cuando en realidad deberia dejar ingresar ese email. Saludos.

  27. Pues mira lo unico que he hecho ha sido cambiar esta linea en la función validateExistMail del archivo funciones.php (en comentario la que habia antes de la modificación)

    [php]
    $consulta2= «select id_usuario from usuarios where email = ‘$mail'»;
    //$consulta2= «select id_usersTemp from users_temp where email = ‘$mail'»;
    [/php]

    Una vez hecho el cambio. Testear lo siguiente:

    1. Registro un usuario con un e-mail que ya existe en tabla «users_temp» y no exista en tabla «usuario».
    2. Verificar que se ha dado de alta
    3. Copiar el campo txt_Activ que en mi caso es «Ep47oAaGVEimVLsIujdz».
    4. Abrir el navegador y poner lo siguiente: http://localhost/registros/activar.php?id=Ep47oAaGVEimVLsIujdz
    5. Comprobar que se ha dado de alta en la tabla «usuarios»

    Todo esto lo he hecho solo haciendo esa modificación y ha funcionado perfectamente.

    Si teneis alguna duda, ya sabéis, para eso están los comentarios.

    Saludos

  28. La última consulta y ya no molesto más. Si bien todo el registro se hace perfecto, al momento de validar mediante el email, cuando se hace click en el enlace de activación se activa la cuenta y se pasan los datos a la tabla usuarios pero me aparece el mensaje: Warning: mysql_close(): 5 is not a valid MySQL-Link resource in /…./activar.php on line 33

    Saludos!

    1. Matias, prueba a quitar la variable dentro de mysql_close .. (te pongo en comentario como estaba antes y debajo como tiene que ser ahora:

      //mysql_close($resultado); // cierra la conexion con la base de datos
      mysql_close(); // cierra la conexion con la base de datos

      Ahora dime si te sigue dando el error.

      Saludos.

  29. si la activacion la hize asi como dijiste y todo pasa a la tabla usuarios menos el usuario(nombre, contraseña y demas datos si se pasan de user_temp a usuario pero el usuario no), ¿por que puede ser este fallo? es que e trasteado el codigo aber si daba con ello pero nada.
    gracias por tus respuestas.

  30. Hola, muchas gracias por este magnifico tutorial.

    Quisiera consultarles si es posible añadir en el formulario, un checkbox el cual deban tildar los usuaruis y en caso que no lo hagan no se envie el formulario. El mismo seria solo una casilla que dice

    «Acepto que he leido los terminos y condiciones»

    Les envio un saludo y gracias por este magnifico trabajo.

    1. Hola Diego, te voy a dar las pautas que tendrás que seguir (te aseguro que así aprenderás más que si te doy el código). te voy a dar una opción para validar con PHP, aunque tambien se podria hacer con Javascript.

      1. Incluye un check en el archivo formulario.php (input type=check)
      2. En el archivo funciones.php incluye una función para validar que ese check se ha marcado
      3. Ahora vuelve al archivo formulario.php y añade una función por el estilo a esta que llame a la función que has creado a funciones.php:

      [php]
      if(!validateAcepCondicion($_POST[‘condicion’]))
      $acepCondicion = «error»;
      [/php]

      4. En el mismo archivo funciones.php donde Comprueba si todo ha ido bien, tendras que incluir el $acepCondicion, por ejemplo:
      [php]
      if($name != «error» && $username != «error» && $password1 != «error» && $password2 != «error» && $email1 != «error» && $acepCondicion!= «error»){
      [/php]

      Y creo que no me dejo nada…

      Bueno, a ver si te sirve y me puedes contestar a este comentario dicinedome que todo ha ido bien.

      Un saludo.

  31. hola magnifico tutorial, me ha servido de mucha ayuda.
    pero le falta un eliminacion de usuarios para los que se quieran dar de baja e estado mirando y no e encontrado nadie que lo haga, ¿me puedes hechar una mano? mi archivo de eliminar creado es el siguiente:
    PHP:
    [php]

    [/php]
    si me dieses un correo te lo mandaria mejor por que por aqui nose que tal se vera.
    Un saludo

  32. Hola antonio,

    por motivos de seguridad he eliminado tus datos de reales de servidor, usuario y password. …

    En cuanto al mail, te he enviado un mail al correo que has puesto en el comentario, pero me lo ha devuelto, no habrás puesto el correcto.

    Mandame un correo desde la zona de contacto del blog y ahi te respondo y ya podemos enviarnos archivos.

    Saludos.

  33. Hola. Muchas gracias por publicar el tutorial y su respectivo código.
    tengo un problema: COm o hago para que funcione la activación, es decir el registro esta bien, llega al correo, pero una vez que hacemos clic en link para activar la cuenta. NO sale nada.
    Que debo poner en esta parte: de la página «funsiones.php»

    function mailActivacion($dir_correo, $usuario, $enlace){
    $dominio = «http://localhost/» ??????? que va???;
    $destinatario = $dir_correo;
    $asunto = » Activar Usuario»;
    $cuerpo = ‘

  34. Hola amigo el archivo comprimido tiene un archivo llamado activar_mail.php que tiene 0 bytes, es decir se encuentra vacio, por favor me puedes ayudar con ese archivo enciandolo a mi correo es de urgencia por fa o dejar el link aqui.. gracias, tus tutoriales son excelente

  35. Hola tengo una duda y es la siguiente cual es el codigo para que no puedan meter un mail no valido es decir que no puedan meter cualquier cosa como mail, esque esttoy creando un foro y solo me falta eso y no se como se hace, muxas gracias x la ayuda.
    un saludo.

  36. antonio, a que te refieres a validar el formato de un mail?.

    Si es así, aquí te dejo un script (mejor con expresiones regulares, pero asi llo entenderás mejor):

    La función que chequea el formato del mail:

    [php]
    function check_email_address($email)
    {
    // Primero, checamos que solo haya un símbolo @, y que los largos sean correctos
    if (!ereg(«^[^@]{1,64}@[^@]{1,255}$», $email))
    {
    // correo inválido por número incorrecto de caracteres en una parte, o número incorrecto de símbolos @
    return false;
    }
    // se divide en partes para hacerlo más sencillo
    $email_array = explode(«@», $email);
    $local_array = explode(«.», $email_array[0]);
    for ($i = 0; $i < sizeof($local_array); $i++) { if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) { return false; } } // se revisa si el dominio es una IP. Si no, debe ser un nombre de dominio válido if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) { $domain_array = explode(".", $email_array[1]); if (sizeof($domain_array) < 2) { return false; // No son suficientes partes o secciones para ser un dominio } for ($i = 0; $i < sizeof($domain_array); $i++) { if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) { return false; } } } return true; } [/php] Uso de la función: [php] if (check_email_address($email)) { echo $email . ' es una dirección válida de correo.'; } else { echo $email . ' no es una dirección válida de correo.'; } [/php] Espero te sirva. Saludos.

  37. como tendria q poner el codigo los dos codigos en el formulario o como esq en el archivo de tu registro no se donde se encuentra para fijarme un poco, si es eso lo que pedia pero nose como usarlo.
    Muchas gracias, saludos.

  38. hola mira e estado mirando el codigo q me mandaste ayer y nose como ponerlo ni donde la primera ventana tb es codigo o es una explicacion, xfavr explicame un poco q no se mu bien como va esto, en el archivo del registro donde se encuentra este codigo? saludos

  39. antonio, de todas maneras en el archivo «funciones.php» ya hay una función para validar el mail: «validateEmail» a la cual llamamos desde «formulario.php» de la siguiente forma:

    if(!validateEmail($_POST[‘email’]))
    $email1 = «error»;

  40. pero esa funcion la puedo poner todo en el formulario de comentarios o tendria q crear un estilo de validar? eq veres yo tengo todo el foro por asi decirlo pero a la hora de el comentarios todos pueden poner lo que les de la gana y ser un correo falso, y eso no me conviene.
    muchas gracias x la ayuda
    saludo.

  41. en el archivo formulario esta este codigo que yama a el funciones yo lo que kiero es tener todo el codigo en uno es decir en vez de yamar a otro archivo que lo valide, que lo valide el mismo formulario se puede hacer?

  42. ten en cuenta que el include en php es como si tuvieras las funciones en esa misma página (en nuestro caso formulario.php).

    Asi que si trasladas las funciones de «funciones.php» a formulario.php» te funcionará exactamente igual.

    espero haberte ayudado.

  43. Ola oye mira estoy interesado en crear una red social desde cero es un tutorial que no se encuentra en ningun lado podrias elaborar un poco el proyecto si no es mucho pedir si no ya me las apañare yevo un tiempo trabajando en ello pero es una cosa compleja.
    Suludos

  44. hombre antonio, yo te diría de pillar una buena base de PHP y Mysql y despues ponerte a hacer una red social. Creo que es algo bastante grande como para meterte en un proyecto así sin tener los suficientes conocimientos.

    Eso si, por otro lado, aprenderías poco a poco, pero mira, cuando te quedes estancado y no sepas por donde ir, puedes guiarte en como lo hace elgg (http://www.elgg.org/) que es una red social que puedes descargar y open source.

    En cuanto a hacer un tutorial sobre crear una red social, no lo descarto nunca se sabe en lo que puedo enredar para poner en el blog, pero en principio prefiero hacer tutoriales algo menos complejos y que aprendamos poquito a poco.

    Saludos.

  45. hola mira tengo una cuestion para ti es que e kerido agrandar mas mi registro y hacerlo con niveles para que tengan varios menus segun quien se registre es decir si soy yo administrador y otros como usuarios y unos q puedan hacer otra cosa por ejemplo comentar como lo puedo hacer muchas gracias de antemano.
    un saludo

    1. edyuin la verdad es que no entiendo nada xD, donde quieres aplicar la diferencia entrw admin y usuarios?, y donde kieres poner los comentarios?, explicate un poco mejor

  46. haber al registrarte unos pueden ser admin y otros solo usuarios o que haya mas niveles eso da=, bueno pos los admin que puedan enviar comntarios donde sea y los otros solo verlos me entiendes aora no se como acerlo.

  47. pues nada, se trata de en la tabla users_temp y USUARIOS añadas un campo que diferencia a ADMINISTRADORES de USUARIOS normales. Es decir, puedes poner un campo ADMIN que sea de tipo «enum» con los valores 0 (para usuarios normales) y 1 (para administradores).

    Despues en las paginas donde te interese controlar eso, puedes hacerlo con sesiones, si el tio es administrador (es decir que tenga como ADMIN = 1) le dejas poner comentarios y en caso contrario no. Esto se hace con un simple IF….

    IF ADMIN
    – hago esto ….
    – y puedo añadir comentarios
    ELSE
    – hago esto solo
    END-IF

    Espero que esta explicación te sirva.

    SALUDOS.

  48. Oye otra cosita estoy aciendo un perfil y me pasa lo siguiente:
    este es l codigo:
    <img src="usuarios/.jpg» width=»100″ height=»100″/>
    no me da el id de usuario como lo puedo acer?
    Gracias de antemano.

  49. Hola…no logro que llegue el correo al usuario que se registra T_T no se q estara mal..por q en la bd si guarda el registro temporalmente… pero no llega el mail no esta funcionandome la funcion mailActivacion..

  50. eso puede ser problema de tu servidor local, prueba a subirlo a algun hosting que tengas para verificarlo, en caso contrario, tendría que mirar los archivos o por lo menos que pongas el código aquí para que entre todos podamos ver donde está el problema.

  51. hola nuevamente …..acabo de recibir el correo xD despues de dos horas T_T …..que puedo hacer para solucionar ese problema 🙂

  52. pierre tu problema tiene que ser que tu hosting estubiera de mantenimiento el correo o que este no vaya muy bien cual hosting usas? yo uso 000webhost y va de maravilla pruebalo. Si no es el hosting el codigo que tienes en esta web funciona xq yo lo use y funcionaba gracias al admin solucionamos los problemas pero ya los cambio en la web. Sigues teniendo ese problema? que hosting usas? la funcion que envia el mail es esta: verifica que este bien.

    PHP:
    function mailActivacion($dir_correo, $usuario, $enlace){
    $dominio = «http://localhost/»;
    $destinatario = $dir_correo;
    $asunto = «Activar Usuario»;
    $cuerpo = ‘

    Activar usuario

    Hola’;
    $cuerpo .= $usuario;
    $cuerpo .= ‘Gracias por registrarte.
    Para completar el registro tienes que confirmar que has recibido el e-mail en el siguiente enlace:
    Activa tu usuario«;

    //para el envío en formato HTML
    $headers = «MIME-Version: 1.0\r\n»;
    $headers .= «Content-type: text/html; charset=iso-8859-1\r\n»;

    //dirección del remitente
    $headers .= «From: Admin \r\n»;

    //dirección de respuesta, si queremos que sea distinta que la del remitente
    $headers .= «Reply-To: correo@distinto.com\r\n»;

    //ruta del mensaje desde origen a destino
    //$headers .= «Return-path: correo@gmail.com\r\n»;

    //direcciones que recibián copia
    //$headers .= «Cc: correo@hotmail.com\r\n»;

    //direcciones que recibirán copia oculta
    //$headers .= «Bcc: correo@gmail.com\r\n»;

    //En localhost el envío de e-mail a veces no funciona, hay que configurar algunas cosas.
    mail($destinatario,$asunto,$cuerpo,$headers);

    }

    Estero que te sirva, y averle exao una mano al admin ya que el me la hecho a mi antes.

    1. Efectivamente lo mas probable es que sea de tu hosting, cambiate al que te dice edyuin a ver si ese no te da problemas. De todas formas el código no es, ya que el correo finalmente te llego, asi que nada.. pruebalo de nuevo en tu hosting otro dia (puede haber habiao sobrecarga en sus servidores) o date de alta en http://www.000webhost.com

      gracias edyuin

  53. Ola se que soy muy cansino pero oye podrias acer un tutorial de mensajeria interna o privada, es que por mas que busco no se como empezar el codigo, tambien me gustaria uno de agregar amigos, pero weno no quiero abusar.
    Gracias de antemano, y de na pa eso estamos pa ayudarnos.

  54. hola amigos… efectivamente el hostin en que probe el codigo fue en 000webhost.com….justamente como dice admin hubo una sobrecarga….espere un dia.. i volvi a probarlo ..i en este caso recibe el correo inmediatamente 😀 ..saludos …gracias por el apoyo ^^

  55. @edyuin: Lo tendré en cuenta, lo he añadido a mi lista de Post sobre PHP y Mysql, que ya tengo bastantes :D. Gracias.

    @Pierre: Me alegro de que solo fuera eso, un saludo.

  56. Hola admin, Primero agradecerte el currazo que te has pegado para ayudar a usuarios como yo.

    Ahora me surge una duda y es la siguiente:

    //En localhost el envío de e-mail a veces no funciona, hay que configurar algunas cosas.
    mail($destinatario,$asunto,$cuerpo,$headers);

    Estoy en localhost y el Email de Activación no me llega, podrias explicarme un poco??

  57. hola!! soy nuevo en esto y ya suvi la pagina y ya tengo la base de datos en el servidor pero noc como relacionar la pagina con la base.
    noc que poner en estas variables
    $servidor = «»;
    $usuario = «»;
    $password = «»;

    my hosting es de pagina-web.com

    1. Fernando en tu hosting tienes que tener una parte donde puedas administrar tu base de datos, alli tienes que buscar el usuario y la contraseña para acceder a dicha base de datos. En cuanto al servidor, tendrás que poner tu dominio.

    1. hola salma. Aqui tienes los pasos:

      ¿Cómo enlazar una base de datos desde el hosting arredemo?

      Login en Arredemo
      En el panel de control hacer clic en Base de datos MySql
      Da de alta una nueva base de datos y copiate el nombre en el algún sitio.
      Cuando esté dado de alta, te saldrán dos enlaces en verde .. dale al que pone ADMIN para acceder al PHPMYADMIN
      Una vez alli, dale en el menu a IMPORTAR
      Importa la base de datos que te has descargado desde el tutorial.

      Ahora ya tienes tu base de datos en tu hosting. Solo tienes que conectar tu archivos PHP con esa base de datos, asi que en el archivo de configuración tendrás que cambiar «localhost» por tu dominio de arredemo, «user» por tu usuario y «password» por tu contraseña.

      Cuando tengas todo esto, solo te falta asignar el nombre de la base de datos, que es el que te has apuntado antes.

      Es posible que haga un post de esto, seguro que hay mucha gente buscando este tipo de información.

      Espero haberte ayudado.

      Saludos.

  58. y podrias proporcionarme otro codigo pero que no tenga envio de email… estoy editando el tuyo pero no me funciona no entran los datos a los usuarios 🙂
    o me gustaria encontrar un hosting gratis qe si soporte el envio de e-mail en php

  59. otro código no puedo proporcionarte salma. Lo que tendrías que hacer es a partir de este código montarte otro, si ves que no te funciona (a mi me ha funcionado perfectamente en las pruebas), así te aseguro que aprenderás por ti misma.

    saludos.

  60. disculpa al momento de que hago clic en activar usuario (en el correo que se recibe al llenar el formulario) me manda a un enlace donde no aparece nada y supuestamente ese archivo se llama netactivar.php?? podrias ayudarme con eso please

  61. jaja ya solucione eso pero al dar clic n activar usuario me dice error en linea 17 en activar.php
    $ienlace=mysql_connect($servidor,$usuario,$password) or die(mysql_error());

    esa es la linea 17

    1. salma, que error te sale?..
      de todas maneras, fijate bien si los valores $servidor, $usuario y $password tienen los valores correctos, es decir los que tu servidor … puedes hacer una prueba poniendo echo, algo como:

      echo «Servidor: » . $servidor . «»;
      echo «Usuario: » . $usuario . «»;
      echo «Password: » . $password . «»;

      Y asi ves si esos valores son los correctos …

      De todas maneras, dinos el codigo de error que te sale.

      saludos y suerte.

  62. Muy buen tutorial, gracias por compartir tu conocimiento; tengo una duda, cuando se valida el formulario lo hace en la tabla user_temp, si un usuario se registra y se activa, lo datos pasan a la tabla USUARIOS y unos dias despues se eliminan los datos que en principio llegaron a user_temp, si despues de estos dias otra persona trata de registrarse con el mismo nombre de usuario, la validacion lo permitiria, a pesar de ya existir ese nombre de usuario ya que no revisara la tabla USUARIOS sino la USER_TEMP, y esta ultima ya habra borrado los datos que le dirian al usuario que ese nombre ya fue utilizado por otra persona. ¿es asi? ¿si es asi , habria que validar el formulario para la tabla USUARIOS, tambien?. gracias

    1. efectivamente, hay que validar la tabla USUARIOS que en realidad es donde van a estar los usuarios activados. Es decir, imaginate que dos en el mismo dia ponen el mismo nombre de usuario .. pues el primero que lo active, ese es el que se quedara con el nombre. Pero claro, hay que informar al segundo que aunque en un primer momento ha podido elegir ese nombre, en el trascurso de la activación otro lo ha registrado, asi que pondría otra validación para cuando el usuario hace clic en el enlace de activación para mayor seguridad.

  63. Hola, en local todo me habia funcionado perfecto, ahora que intento hacer las pruebas en mi hosting remoto, no logro conectarme con la base de datos:
    * ya cree la base de datos y el usuario con su respectiva contraseña
    * el nombre del servidor es midominio.com.co
    lleno los datos correspondientes y no se conecta, alguna idea, ¿sera algo , en la configuracion de php delservidor? ¿que estare haciendo mal?, gracias de antemano.

  64. ya lo solucione, por si a alguien que se le presenta el mismo inconveniente, resulta que es muy sencillo pero si no se sabe puede fastidiarte el año nuevo; suponiendo que se administre la web remota desde CPANEL, van a MYSQL REMOTO, y añaden % en la casilla correspondiente y dan click a AÑADIR HOST; y listo, segun entiendo el % hace referencia a que trabaja como localhost en un servidor, lo cierto es que ahora si funciona….feliz año 2012……y guepa jeee…..

  65. Vereis soy muy novato en esto y estoy haciendo una web propia para que la gente ponga las cosas que quieren vender entre particulares, necesito que los nuevos usuarios se den registren y activar el mismo por e-mail, por eso he empezado a hacer este código y hasta donde he llegado funciona, no obstante falta una parte del código que es la que pasa los usuarios de la tabla users_temp a la tabla usuarios y aunque en el tutorial se dice que si se ha seguido el mismo esa parte debemos saber hacerla nosotros mismos, en mi caso no es así ya que soy muy novato y me pierdo con facilidad.
    Os agradeceria si me podeis ayudar

  66. Veras el 3 de Enero realice una consulta porque no se completar el tutorial ya que mis conocimientos en este campo son muy escasos, suelo aprender viendo el código y analizando las esplicaciones y los comentarios que se hacen junto al mismo, te agradezco tu contestación que fue muy rapida y le he hechado un vistazo a los dos tutoriales que me indicas y efectivamente me suena a chino y no entiendo nada. me gustaria terminar este tutorial tuyo hasta el final ya que me seria de gran ayuda, si puedes ayudarme te lo agradeceria y si no puedes por tus ocupaciones te lo agradezco igualmente y lo entiendo.
    Un saludo Ramón.

  67. Hola, antes que nada gracias por tu tutorial que sin duda para muchos de nosotros fue una muy buena guía.
    Yo quiero consultarte respecto del archivo activar.php que a mi me está dando problemas para realizar la activación de los usuarios. Cuando se ejecuta el archivo con el id generado crea un nuevo registro pero está pasando los datos vacíos, a que se debe eso? Lo único que modifique en ese archivo fue el nombre y cantidad de los campos para la función insertarRegiAct y sus correspondientes en el «while». Agradezco de antemano tu orientación. Saludos!

  68. buenas Admin, sucede que el codigo me marcha a la perfeccion pero a la hora de hacer la activacion desde el mail, doy clik en el link, me lleva la pagina, esta se queda en blanco y finalmente reviso la tabla user, y solo aparece el autonumerico y la fecha de alta pero no aparecen los demas datos :S, no se porque no los almacena T_T.

  69. Hola, tengo un problema hace unas cuantas semanas. Quiero entrar con mi login y contraseña a mi página, para administrarla y subirle el contenido y no me deja. Ya me lo hizo hace unos meses y se soluciono solo de un día para otro, pero ahora ya pasaron casi 3 meses y no pasa nada. No se si es casualidad pero en todo lo que va del año no puedo entrar, la última vez que entre correctamente fue en los últimos días del año 2011. Mi sitio web me lo diseñaron y estaba alojado en un hosting en el cual nunca tuve problemas y hace cerca de un año que tuve que mudarlo de hosting y ahi comenzaron los problemas. Me podras dar una idea de cual es el problema?

    1. fernando .. yo lo que haría en tu caso es probar el script en local .. en caso que funcione, subirllo y si no funciona, entonces hablaría con la empresa de Hosting.

  70. buenas amigo podrias explicar mejor la parte del envio de email con phpmailer y servidor local te lo agradeceria, ya que no entiendo bien en donde debo poner o enlazar el codigo que colocas ahi. gracias

  71. estimado, tu tutorial me ha ayudado bastante con respecto a este tema, y te agradezco por eso, pero tengo un problema y no he podido solucionarlo:
    el correo llega perfecto y obviamente guarda los datos en la base de datos, pero cuando ingreso a mi correo a activar mi cuenta, me da el siguiente error:

    Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host ‘http’ (1) in /home/maha1982/public_html/prueba/activar.php on line 17
    Unknown MySQL server host ‘http’ (1)

    lo cual he probado cambiando en $servidor con el nombre de mi dominio, pero aun asi no he solucionado el problema.
    te agradeceria cualquier ayuda que me brindes, el problema se genera en el archivo activar.php

    saludos desde chile….

    1. Hombre así sin mirar el código y viendo el error, el problema es del servidor y no se si lo estas probando en local o en algun hosting, supongo que por lo que me dices es en un hosting. Haz una prueba sencilla en otro archivo distinto para hacer cualquier consulta sencilla a ver si te funciona.

  72. k onda me pudes ayudar a resolver el programa de envio de mails y la eliminacion de la tabla temporal

    estos son mis errores y nomas no las allo
    Warning: Missing argument 1 for envioMail_regis(), called in C:\xampp\htdocs\VENTAS\ususario\activar.php on line 78 and defined in C:\xampp\htdocs\VENTAS\ususario\activar.php on line 2

    Warning: Missing argument 2 for envioMail_regis(), called in C:\xampp\htdocs\VENTAS\ususario\activar.php on line 78 and defined in C:\xampp\htdocs\VENTAS\ususario\activar.php on line 2

    Warning: Missing argument 3 for envioMail_regis(), called in C:\xampp\htdocs\VENTAS\ususario\activar.php on line 78 and defined in C:\xampp\htdocs\VENTAS\ususario\activar.php on line 2

    Notice: Undefined variable: dir_correo in C:\xampp\htdocs\VENTAS\ususario\activar.php on line 4

    Notice: Undefined variable: usuario in C:\xampp\htdocs\VENTAS\ususario\activar.php on line 5

    Notice: Undefined variable: usuario in C:\xampp\htdocs\VENTAS\ususario\activar.php on line 13

    Notice: Undefined variable: enlace in C:\xampp\htdocs\VENTAS\ususario\activar.php on line 17

    Notice: Undefined variable: dir_correo in C:\xampp\htdocs\VENTAS\ususario\activar.php on line 40

    Notice: Undefined variable: usuario in C:\xampp\htdocs\VENTAS\ususario\activar.php on line 40

    Notice: Undefined variable: enlace in C:\xampp\htdocs\VENTAS\ususario\activar.php on line 40

    Warning: mail() [function.mail]: «sendmail_from» not set in php.ini or custom «From:» header missing in C:\xampp\htdocs\VENTAS\ususario\activar.php on line 40

  73. Hola A mi en lo personal me funciono de maravilla te felicito por la molestia en crearlo 😀 mas que la verdad quisiera ver la forma o que hagas otro tuto de como logear a los usuarios ya resgitrados y una pagina de bienvenida

    1. gracias cristian. La verdad es que me gustaría hacer más tutoriales de este estilo, de hecho tengo pendiente por seguir un tutorial sobre como crear un sistema de exámenes de un colegio que espero tenerlo listo algún día. De todas formas, me la apunto. Saludos.

  74. Vereis soy muy novato en esto y he seguido este magnifico tutorial hasta donde he podido, pero me falla por varios sitios y despues de un buen monton de horas no consigo hacerlo funcionar correctamente, así que termine por bajarme los ficheros ultimos del 11 de abril del 2011 y hasta ahi funciona pero no esta totalmente terminado o eso me parece a mí y ademas se han incorporado despues varias mejoras.
    Sugerencia: ¿hay alguna posibilidad de que se pongan los archivos actualizados al día de hoy para bajarselos? yo quedaria muy agradecido.
    Aclaración: no pretendo que nadie haga el trabajo para los que no sabemos pero algunas personas entendemos el funcionamiento de un código cuando lo vemos, por eso existen los tutoriales como este que nos ayudan mucho y nos facilitan el aprendizaje, pero mis conocimientos son escasos porque soy principiante y mayor y son tantos los errores que me da que seria un problema exponerlos aquí.
    gracias a todos y un saludo.

  75. hola, se muy poco de php y algo de html, segui los tutoriales pero cuando llego al 4 el primer codigo, lo pongo en una hoja de dreamwever y cuando lo subo al servidor se ve perfecto pero cuando le doy enviar al formulario, me redirige a la pagina de 000webhost con error, y si completo todo bien tambien, …. mi sitio es http://www.elrincondelcuba.com.ar

  76. disculpa se me había tenido problemas con el dns, ya lo arregle http://elrincondelcuba.com.ar…. lo que me pasa es que cuando completo el nombre (todo esto con el primer codigo que sale en el 4/8) y en la pagina dice que si lo completo bien me tedría que poner registrado con exito o algo por el estilo, pero me manda a la pagina de error de 000webhost, :S y si lo pongo mal tambien… fijate si te podes dar cuenta vos. gacias.

  77. En el código de tu página he visto que tienes esto en el formulario:

    [html]

    [/html]

    Y cuando haces clic en Registrar, te envía a una página 404 que significa que no encuentra la página.

    ¿Estas seguro de que existe esa página «formulario_1.php» que pones en el action del formulario?

  78. Hola, realmente tengo que felicitar a los usuarios y a mi mismo por haber encontrado a una persona con tanta paciencia como tu. Desde hace unos dias voy siguiendo tu tuto y me parece muy bueno, intento hacerle unas cuantas modificaciones y solo con lo que has ido comentando por aqui creo que lo poder hacer.
    Muchas gracias y sigue asi.

  79. Hola admin, necesito un poco de orientacion. resulta que cuando ejecuto el formulario username y password1 me sale por defecto admin y una clave, revise que los values eran igual a «» y que las variables tampoco tenian ningun valor. La verdad es que me gustaria poder quitar esos valores. ¿De donde crees que pueden venir? Gracias.

  80. puede ser que tu navegador tenga configurado que recuerde los formularios. Eso lo puedes cambiar.

    Por otro lado prueba a darle a acutalizar cuando se presente el formulario, si siguen los datos puestos ya me comentas de nuevo.

  81. Veronica comento:
    Hola muy buenas. Tuve un problema que ya solucioné, por si a alguien le puede servir.
    ******************************************
    Notice: Undefined variable: clave in funciones.php on line 56
    ******************************************
    Problema:
    $clave .= $semilla[$valor][$posicion];
    Solución: (eliminamos el punto que hay antes de ‘=’)
    $clave = $semilla[$valor][$posicion];

    El error de esto es que el valor de la variable $clave sera el ultimo valor escogido por el bucle y no una cadena de 20 caracteres.
    Lo mejor es inicializar la variable $clave = «»; al principio de la funcion y no quitar el punto.

    Espero les sirva de ayuda.

  82. hola a todos.

    e podido areglar esto

    Notice: Undefined variable: clave in funciones.php on line 56

    quitando el punto pero no entiendo donde hacerlo asi sin quitar el punto :

    Lo mejor es inicializar la variable $clave = «»; al principio de la funcion y no quitar el punto.

    si alguien me puede ser mas explicito al respeto.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

¡Pide tu presupuesto!

Completa los campos para poder enviarte un presupuesto

Todos y tu presupuesto son a medida y totalmente personalizados, entendemos que dos proyectos online no pueden ser iguales y que cada cliente tiene unos objetivos y necesidades muy diferentes, es por eso que para elaborar un presupuesto, necesitamos saber de ti, tu proyecto y objetivos.

Los campos marcados con (*) son obligatorios.

La comunicación enviada quedará incorporada a un fichero del que es responsable COLORDEU. Esta comunicación se utilizará exclusivamente para tratar sus datos para atender su solicitud, siempre de acuerdo al Reglamento (UE) 2016/679 (RGPD), la Ley Orgánica 15/1999 (LOPD) y el Real Decreto 1720/2007 de desarrollo de la LOPD), sobre protección de datos. Sus datos no se comunicarán a terceros, excepto por obligación legal, y se mantendrán mientras no solicite su cancelación. En cualquier momento usted puede ejercer los derechos de acceso, rectificación, portabilidad y oposición, o si procede, a la limitación y/o cancelación del tratamiento, comunicándolo por escrito, indicando sus datos personales mediante un email a hola@colordeu.es