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
- Tema 1: Introducción y requerimientos
- Tema 2: Instalar Appserv o Wamp
- Tema 3: Crear la base de datos
- Tema 4: Creación y validación del formulario de registro
- Tema 5: Registrar Usuarios en PHP
- Tema 6: Envío de correo para activar usuario
- Tema 7: Activación de usuairo y registro en tabla USUARIOS
- Tema 8: Finalización y posibles mejoras
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?
155 comentarios
no logro q el correo me llegue!!!!!
salu2
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
voy a revisarme el codigo porque cuando lo subi funcionaba perfectamente. Pero somos humanos jejejee, lo mismo subi la que no era.
Ya os digo algo.
Saludos.
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 🙂
muchas gracias a ti por el comentario.
jose Luis,
perdona que no te haya contestado antes. El correo es normal que no llegue, leete la ultima nota que he añadido.
muy bueno el tutorial, muy completo y muy bien explicado…Gracias por compartirlo!!
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.
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
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
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
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.
********************************
MODIFICACION EN CODIGO REQUERIDA
********************************
Ya he visto el problema que habia en el código del Tutorial.
Aqui estan las modificaciones:
mailActivacion($emailValue, $username, $url);
function mailActivacion($emailValue, $username, $url, $enlace)
$dominio = «http://www.tudominio.com/usuarios/». Esta ruta la tendréis que modificar con vuestro propio dominio.
[php]$cuerpo .= ‘Gracias por registrarte en COLORATE.
Para completar el registro tienes que confirmar que has recibido el e-mail en el siguiente enlace:
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!!
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!
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
salitros lo has intentado con el enlace que puse al final del post:
http://www.forosdelweb.com/wiki/PHP:_%C2%BFC%C3%B3mo_enviar_mail_desde_localhost_sin_servidor_smtp_local%3F
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
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
Excelente tutorial, me funciono a la perfección.
Gracias y saludos!!!
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
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'»
me da a mi que es porque no tienes el campo Nombre en la base de datos.
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!
gracias Veronica, tanto por el aporte como por la felicitación :D. Un saludo.
No olvidéis que el blog tiene página en facebook (http://www.facebook.com/COLORATE.BLOG) y alli podremos discutir sobre posts, aportar enlaces, o conocernos un poco más.
Un saludo
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
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
yo suelo usar appserv, pero le echaré un vistazo. Gracias andree
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
Facundo .. podrías decir el error en concreto?
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
Tengo el mismo problema que rodrigo
Unknown column ‘txt_Activ
Saludos
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.
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
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.
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
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!!!
Muy buen aporte Pablo. Tienes toda la razón. Esta tarde le echaré un vistazo y si va todo correcto lo modifico en los archivos.
Un saludo.
Por cierto ya está actualizado en la descarga de los ficheros el dato que apuntaba Pablo.
Pablo, te invito a nuestra Fan Page de COlorate para que puedas compartir con nosotros posibles arreglos, enlaces interesantes, etc .. –> http://www.facebook.com/COLORATE.BLOG
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?
recuerda que para hacerlo tienes que escribir la siguiente dirección:
activar.php?id=campoclavequehadejadoenlatablaUsers_Temp
Lo has probado asi?
Gracias por la invitación a la página de Facebook! Y nuevamente gracias por el tutorial.
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.
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:
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
Gracias por tu ayuda, intenté de esa manera pero igualmente me sigue indicando duplicate entry xxxx@xxxx.com key for email, sin estar ese email en la tabla usuarios.
Ya lo pude solucionar, tenia al campo email como uniquie en la tabla users_temp. Muchas gracias.
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!
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.
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.
cambia esto en el archivo activar.php
[php]
//$username = $registro[‘users_Temp’];
$username = $registro[‘usersTemp’];
[/php]
Muchas gracias, era eso lo que me fallaba, por cierto mu buen tutorial.
un saludo.
Muchisimas gracias, ahora quedó perfecto, ya funciona todo sin ningún error.
Gracias!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
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.
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.
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
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.
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 = ‘
Cuando dices que no sale nada a que te refieres?, no se activa el usuario?, no muestra ningun mensaje por pantalla? ..
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
hola paul, en realidad el que sirve para activar el mail es el archivo activar.php, no le hagas caso al activar_mail.php.
Saludos.
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.
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.
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.
edyuin, no he entendido bien ..
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
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»;
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.
antonio no entiendo muy bien lo que me quieres decir.
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?
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.
nose como hacerlo pero ma servido de ayuda muxas gracias.
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
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.
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
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
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.
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.
ya tengo una idea muxas gracias.
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.
nose por que se ma copiao mal es este el codigo:
<img src="usuarios/.jpg» width=»100″ height=»100″/>
no sale completo
PHP:
<img src="usuarios/.jpg» width=»100″ height=»100″/>
te lo envio mejor por mail que no sale entero el codigo
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..
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.
No se por q no puedo postear el codigo … :s
los archivos no los tengo localmente si no en un hostin free
hola nuevamente …..acabo de recibir el correo xD despues de dos horas T_T …..que puedo hacer para solucionar ese problema 🙂
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.
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
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.
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 ^^
@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.
Gracias por tenerlo en cuenta.
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??
echale un vistazo a esto:
Como enviar emails en PHP desde localhost
http://www.perubinario.com/2011/06/configurar-sendmail-con-wamp-en-localhost-usando-gmail
Ya me cuentas si te ha funcionado.
Grácias nuevamente, Muy interesante!
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
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.
Administrador Probe lo del sendmail en Localhost, Funciona correctamente, Gracias de nuevo maestro.
Aunque con El Mail() No me funciona y nose porque, estoy alojado en 000webhost y no hay manera de que envie el correo algo haré mal.
me alegro que te haya funcionado. Lo del host puede ser perfectamente pq tengan deshabilitada esa función.
Hola.
no puedo descargar el archivo, no sé si me puedes mandar a mi correo
olver, el archivo está bien.. Inténtalo desde este enlace
http://www.box.net/shared/0o4mzu6qpl
Gracias, ya pude descargar el archivo, me está sirviendo de mucho.
disculpa pero yo nocesito subir tu codigo a arredemo me podrias ayudar diciendome qe debo cambiar ???
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.
ya pude insertar datos en mi base de datos pero el correo no me llega??
<?php
function mailActivacion($emailValue, $username, $url, $enlace){
$dominio = "http://lozano.arredemo.org/formulario.php";
$destinatario = $emailValue;
$asunto = "Activar Usuario";
$cuerpo = '
Activar usuario
Hola’;
$cuerpo .= $username;
$cuerpo .= ‘Gracias por registrarte en COLORATE.
Para completar el registro tienes que confirmar que has recibido el e-mail en el siguiente enlace:
Activa tu usuario«;
ESE CODIGO ES EL QE CREO NO FUNCIONA BIEN PORQ EL CORREO NO IEGA
salma puede ser (y será lo más probable) que el hosting gratuito que menciones no soporte envío de e-mail en PHP.
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
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.
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
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
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.
Muy bueno !!! Gran aportación.
gracias Gon .. saludos.
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
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.
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.
puede ser problema de tu hosting con el PHP y MySQl
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…..
bueno pues me alegro, ahora venga …. a probar!!! jejeje
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
Pues este tipo de acciones se suelen hacer con CURL desde el CRON en PHP.. Seguramente esto te sonará a Chino, asi que lo mejor es que le eches un vistazo a estos tutoriales y después investigues un poco por Google:
http://www.colordeu.es/BLOG/manejar-cron-jobs-en-php
http://www.desarrolloweb.com/articulos/1744.php
Saludos.
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.
hola ramón, te envío un correo y ya me cuentas a ver si te puedo ayudar.. Lo que no te aseguro es el tiempo que puedo tardar ok?.
Saludos.
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!
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.
Intenta poner displays, es decir «echo» de las variables para saber donde se pierde el valor.
Saludos.
muchísimas gracias logre solucionarlo!
de nada .. lo has solucionado tu mismo/a
me pueden ayudar.. no viene para ‘logear’ como USER:
CONTRASEÑA: para dentrar con la cuentra creada.. eso falta me pueden ayudar
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?
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.
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
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….
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.
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
Warning 1, 2 y 3: está esperando un argumento en la función envioMail_regis(), no se si le estas pasando el e-mail o algo que te falta.
Los demás notice tal y como dice ahí, es que no has definido las variables que te indica.
Warning; mail() : Chequea esta web: http://foros.cristalab.com/sendmail-from-not-set-in-php.ini-t56622/
No puedo ayudarte mucho más sin tener le código delante.
Saludos.
si me puedes ayudar a terminar el codigo te lo agradeceria mucho…
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
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.
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.
@tomas nocetti: No existe la web que comentas.
@Unexes: que es exactamente lo que te falla?.
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
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.
En el código de tu página he visto que tienes esto en el formulario:
[html]
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.
gracias Juan .. es lo que se intenta, que todos podamos aprender unos de otros. Saludos.
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.
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.
Tienes razon. Probe con otro navegador y no me salen esos datos, tiene que ser que los recuerda. Que torpeza!!!
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.
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.