Foros del Web » Programando para Internet » PHP »

[APORTE] Sistema De Verificacion De Correo

Estas en el tema de [APORTE] Sistema De Verificacion De Correo en el foro de PHP en Foros del Web. Aqui os dejo un sistema de verificacion de correo. Lo siguiente que aporte sera un sistema de logueo con: Captcha Baneo Sistema de Verificacion De ...
  #1 (permalink)  
Antiguo 14/08/2012, 13:35
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 4 meses
Puntos: 27
Mensaje [APORTE] Sistema De Verificacion De Correo

Aqui os dejo un sistema de verificacion de correo.
Lo siguiente que aporte sera un sistema de logueo con:
Captcha
Baneo
Sistema de Verificacion De Correo
Olvidar tu contraseña
Cuantos usuarios hay online
Todos los usuarios registrados.
Sistema de cambiar nombre,contraseña,eliminar cuenta

¿Que hace este sistema?
Este sistema cuando te registras envia un enlace a tu correo que as introducido anteriormente y desde hay activas tu cuenta.

¿Como funciona el sistema?
Cuando tu te registras en la base de dato se genera un codigo de X caracteres y despues envia el mensaje con un enlace que al hacerle clic verifica si tu email y el codigo generado son correcto y en caso verdadero en el campo Estado que tiene valor 0 se cambia por valor 1 y te lo activara.

¿Y como es la url que envia al correo?
El link que envia es el siguiente.
http://tuweb.com/validacion.php?email=tu email&key=el codigo que genera en la base de dato

¿Como se llama cada campo y/o tabla?
La base se llama web
La tabla se llama usuarios
Donde se guarda el nombre se llama Nombre
Donde se guarda la contraseña se llama Contraseña
Donde se guarda el email se llama Email
Puedes modificar tus campos por los anteriores o modificar los codigos php

Codigo de la base de dato: (Añade esto a tu base de dato)

CREATE TABLE IF NOT EXISTS `usuarios` (
`EstadoKEY` varchar(40) NOT NULL,
`CodigoKEY` varchar(40) NOT NULL,
PRIMARY KEY (`Nombre`,`Email`)
)

Codigos:

En tu registro añade esto: (Al principio del archivo)
Código PHP:
Ver original
  1. <?php
  2. $web = "tupaginaweb";
  3. $conexion = mysql_connect(".....","....","....");
  4.     $password = md5(rand(0,1000));
  5.     mysql_query("INSERT INTO usuarios(Nombre,Email,Contrasena,EstadoKEY,CodigoKEY,Baneado) VALUES ('$_POST[nombre]', '$_POST[email]', 'MD5($_POST[contrasena])', '0', '$password', '0')");
  6.     $registros = mysql_query("SELECT Email,CodigoKEY FROM usuarios WHERE nombre = '$_POST[nombre]'");
  7.     while($reg = mysql_fetch_array($registros)){
  8.     mail("$_POST[email]","Activa tu cuenta.","Hola $_POST[nombre], Bienvenido tu te as registrado en http://$web y para activar tu cuenta necesitas meterte en esta url. http://$web/validacion.php?email=$reg[Email]&key=$reg[CodigoKEY]");
  9.     }
  10. ?>

Validacion.php
Código PHP:
Ver original
  1. <?php
  2. $web = "tupaginaweb";
  3. $conexion = mysql_connect(".....","....","....");
  4. $verificacion = mysql_query("SELECT * FROM usuarios WHERE email = '$_GET[email]' AND CodigoKey = '$_GET[key]'");
  5. if ($veri = mysql_fetch_array($verificacion)){
  6.     mysql_query("UPDATE usuarios SET EstadoKEY = '1' WHERE EstadoKEY = '0'");
  7.     echo "Tu cuenta ha sido activada.";
  8.     echo '<meta http-equiv="refresh" content="2; url=index.php">';
  9. }else {
  10.     header('Location: index.php');
  11. }
  12. ?>

Última edición por PepeF; 14/08/2012 a las 14:28
  #2 (permalink)  
Antiguo 14/08/2012, 14:44
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 22 años, 5 meses
Puntos: 35
Respuesta: [APORTE] Sistema De Verificacion De Correo

No es por ser mala onda, se agradece todo aporte... pero van algunos comentarios:

1. No hay que seguir usando la extensión de mysql, mejor usar mysqli o PDO.
2. Pon mucha atención a la seguridad, esta lleno de lugares donde meter inyecciones SQL.
3. Por lo mismo de arriba, hay que validar y filtrar todo input que venga del usuario. En este caso, las variables $_POST.

En un primer vistazo rápido es lo que se me ocurre. Saludos!
__________________
Sin Ideas
  #3 (permalink)  
Antiguo 14/08/2012, 15:14
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 4 meses
Puntos: 27
Respuesta: [APORTE] Sistema De Verificacion De Correo

¿Porque usar mysqli?
Y si yo tengo los campos filtrados lo que pasa que entonces tendria que poner todo el sistema de login porque no se podria adaptar para el vuestro o seria mas dificl por eso lo he puesto hacin pero cuando saque el login con todo si tiene las filtraciones.
  #4 (permalink)  
Antiguo 14/08/2012, 15:19
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 10 meses
Puntos: 155
Respuesta: [APORTE] Sistema De Verificacion De Correo

Cita:
Iniciado por oso96_2000 Ver Mensaje
No es por ser mala onda, se agradece todo aporte... pero van algunos comentarios:

1. No hay que seguir usando la extensión de mysql, mejor usar mysqli o PDO.
2. Pon mucha atención a la seguridad, esta lleno de lugares donde meter inyecciones SQL.
3. Por lo mismo de arriba, hay que validar y filtrar todo input que venga del usuario. En este caso, las variables $_POST.

En un primer vistazo rápido es lo que se me ocurre. Saludos!
tsss que mala ondaaa iiii que gachiuuu coto, wen aporte
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #5 (permalink)  
Antiguo 14/08/2012, 15:36
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] Sistema De Verificacion De Correo

+1 a lo sugerido por oso96_2000 en cuanto a seguridad.

Cita:
Iniciado por PepeF
¿Porque usar mysqli?
En internet hay muchas discusiones al respecto y las opiniones son variadas tanto a favor como en contra, pero, básicamente, en el manual citan estas ventajas:

Cita:
La extensión mysqli contiene numerosos beneficios, siendo estas las mejoras principales respecto a la extensión mysql:

- Interfaz orientada a objetos
- Soporte para Declaraciones Preparadas
- Soporte para Múltiples Declaraciones
- Soporte para Transacciones
- Mejoradas las opciones de depuración
- Soporte para servidor empotrado

Más info en: http://www.php.net/manual/es/mysqli.overview.php
No puedo hablar en base a experiencia, porque yo pasé de la extensión mysql directamente a PDO, precisamente porque no le vi mucha utilidad a mysqli, la decisión es de cada quien.
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 14/08/2012, 15:40
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 22 años, 5 meses
Puntos: 35
Respuesta: [APORTE] Sistema De Verificacion De Correo

Cita:
Iniciado por PepeF Ver Mensaje
¿Porque usar mysqli?
Y si yo tengo los campos filtrados lo que pasa que entonces tendria que poner todo el sistema de login porque no se podria adaptar para el vuestro o seria mas dificl por eso lo he puesto hacin pero cuando saque el login con todo si tiene las filtraciones.
Puedes googlear y ver muchas razones, pero te dejo lo que la misma documentación de mysql dice:

Cita:
El uso de esta función está desaconsejado. En su lugar debería usarse la extensión MySQLi o PDO_MySQL. Véase también la guía MySQL: escoger una API y las P+F relacionadas para más información. Las alternativas a esta función incluyen:

mysqli_query()
PDO::query()
Lo mas sencillo seria decirte que por seguridad.

Que por otro lado, claro que se podría adaptar. Existen funciones como filter_var, filter_input o incluso mysql_real_escape_string (si te empecinas en usar mysql, aunque ahi aparecen las opciones para mysqli y pdo) que ayudan a eso y no dependen de como este hecho tu sistema.
__________________
Sin Ideas
  #7 (permalink)  
Antiguo 14/08/2012, 15:51
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 10 meses
Puntos: 155
Respuesta: [APORTE] Sistema De Verificacion De Correo

pues como aboganster del diablo en el mismo manual comenta

http://mx.php.net/manual/es/mysqlinfo.api.choosing.php

Se recomienda usar las extensiones mysqli o PDO_MySQL. No se recomienda usar la extensión mysql antigua para nuevos desarrollos.

para nuevos es mala idea para viejos , como dice el compañero eso de cambiar todo pues tampoco lo veo como buena practica ni buena idea
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #8 (permalink)  
Antiguo 15/08/2012, 01:48
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 4 meses
Puntos: 27
Respuesta: [APORTE] Sistema De Verificacion De Correo

Pero que yo voy a usar mysql yo quiero que opineis el sistema de verificacion de correo.
  #9 (permalink)  
Antiguo 15/08/2012, 02:25
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 22 años, 5 meses
Puntos: 35
Respuesta: [APORTE] Sistema De Verificacion De Correo

Cita:
Iniciado por PepeF Ver Mensaje
Pero que yo voy a usar mysql yo quiero que opineis el sistema de verificacion de correo.
Ya te di mi opinión :) ve por las buenas practicas. Deja el uso de funciones/extensiones que no son recomendadas, vela por la seguridad. La idea no es mala, pero la ejecución puede ser mejor ;)

No te empecines en usar mysql, de verdad. PDO es realmente una maravilla para usarlo, el código queda, en mi opinión, mas limpio.
__________________
Sin Ideas
  #10 (permalink)  
Antiguo 15/08/2012, 03:11
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 4 meses
Puntos: 27
Respuesta: [APORTE] Sistema De Verificacion De Correo

pero si todo el mundo utiliza mysql no?
  #11 (permalink)  
Antiguo 15/08/2012, 05:52
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] Sistema De Verificacion De Correo

Si te refieres al motor de base de datos... NO!, algunos usan PostgreSQL, otros SQLite, otros MSSQL, etc.

Si te refieres a la extensión de PHP... TAMPOCO!, algunos ya migramos a PDO, otros a mysqli y tal vez aún muchos sigan con mysql, pero si te fijas en el índice del foro, ahí está un tema que da una razón de peso para cambiar: en un futuro ya no habrá soporte para la extensión mysql y sugieren pasar a mysqli o PDO.

Si te sientes incómodo trabajando con objetos o preparando consultas, bien puedes usar mysqli en la misma forma que ahora usas mysql:

mysqli_connect() - Para establecer una conexión
mysqli_query() - Para ejecutar una consulta
mysqli_fetch_array() - Leer un registro devuelto por la consulta

No es tan difícil, sólo agregas la i después de mysql y listo.

No olvides consultar el manual por si algo no funciona como esperas: http://mx2.php.net/manual/es/mysqli.query.php
__________________
- León, Guanajuato
- GV-Foto
  #12 (permalink)  
Antiguo 15/08/2012, 05:59
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 4 meses
Puntos: 27
Respuesta: [APORTE] Sistema De Verificacion De Correo

Todo lo que tengo de mysql con remplazar mysql por mysqli listo?

Esque no quiero usar mysqli orientado a objeto pero esto no es orientado a objeto no?

mysqli_connect() - Para establecer una conexión
mysqli_query() - Para ejecutar una consulta
mysqli_fetch_array() - Leer un registro devuelto por la consulta
  #13 (permalink)  
Antiguo 15/08/2012, 06:24
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] Sistema De Verificacion De Correo

Y si lees el manual?... ahí te dejé el enlace.
__________________
- León, Guanajuato
- GV-Foto
  #14 (permalink)  
Antiguo 15/08/2012, 06:24
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 16 años, 4 meses
Puntos: 139
Respuesta: [APORTE] Sistema De Verificacion De Correo

Hola PepeF,


Cita:
Iniciado por PepeF Ver Mensaje
Y si yo tengo los campos filtrados lo que pasa que entonces tendria que poner todo el sistema de login
Código PHP:
Ver original
  1. mysql_query("INSERT INTO usuarios(Nombre,Email,Contrasena,EstadoKEY,CodigoKEY,Baneado) VALUES ('$_POST[nombre]', '$_POST[email]', 'MD5($_POST[contrasena])', '0', '$password', '0')");
Aqui claramente se nota que no estas filtrando los input, si te fijas lo estas introduciendo tal cual como llegan, es muy facil hacerle un XSS o un SQL Injection.

2- No tienes manejo de excepción de errores ni en la extensiones de MYSQL ni en el envió del correo.

3- No validas los correos no vale solo con validarlo desde JS.

4-
Código PHP:
Ver original
  1. $registros = mysql_query("SELECT Email,CodigoKEY FROM usuarios WHERE nombre = '$_POST[nombre]'");
  2.     while($reg = mysql_fetch_array($registros)){
  3.     mail("$_POST[email]","Activa tu cuenta.","Hola $_POST[nombre], Bienvenido tu te as registrado en http://$web y para activar tu cuenta necesitas meterte en esta url. http://$web/validacion.php?email=$reg[Email]&key=$reg[CodigoKEY]");
  4.     }
Para que usas while si se supone que solo vas a obtener los datos de un usuario no de varios.

Los colegas te recomiendan la extensión mysqli o PDO no por mal, más bien esto le agrega un valor a tu aporte ya que hace que tu script sea escalable y reutilizable ejemplo ya hoy en día se habla de la programación POO yo como programador POO no puedo lamentablemente utilizar tu script, ahora mismo de la manera en que está diseñado muy poco profesionales agregaría a su repositorio tu script ya que es un script orientado al antiguo PHP.


La idea de estas críticas no son destructivas, te ayudan bastante a mejorar ese mismo script. Estoy seguro que de estas críticas vas a sacar cosas nuevas.

Saludos!
  #15 (permalink)  
Antiguo 15/08/2012, 06:36
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 4 meses
Puntos: 27
Respuesta: [APORTE] Sistema De Verificacion De Correo

Pero yo voy a usar mysqli pero seguire con php porque phpo es orientado a objeto y yo no quiero eso.
  #16 (permalink)  
Antiguo 15/08/2012, 09:40
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 10 meses
Puntos: 155
Respuesta: [APORTE] Sistema De Verificacion De Correo

Cita:
Iniciado por PepeF Ver Mensaje
Pero yo voy a usar mysqli pero seguire con php porque phpo es orientado a objeto y yo no quiero eso.
si conoces la orientación a objetos ?
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #17 (permalink)  
Antiguo 15/08/2012, 09:41
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 4 meses
Puntos: 27
Respuesta: [APORTE] Sistema De Verificacion De Correo

Si lo conosco ¿Por?
  #18 (permalink)  
Antiguo 15/08/2012, 09:45
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 10 meses
Puntos: 155
Respuesta: [APORTE] Sistema De Verificacion De Correo

Cita:
Iniciado por PepeF Ver Mensaje
Si lo conosco ¿Por?
digo me suena raro , amenos que llegue linuz aquí y me ponga una arrastrada de aquellas , el uso de la orientación a objetos te ahorra mucha chamba , ademas de que te hace un código mas mantenible y modular aun con mysqli se puede orientar a objetos al igual que se podía con mysql
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #19 (permalink)  
Antiguo 15/08/2012, 09:46
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 4 meses
Puntos: 27
Respuesta: [APORTE] Sistema De Verificacion De Correo

si pero es muchisimo mas dificil.
  #20 (permalink)  
Antiguo 15/08/2012, 09:54
 
Fecha de Ingreso: agosto-2012
Ubicación: Santiago
Mensajes: 124
Antigüedad: 12 años, 4 meses
Puntos: 60
Respuesta: [APORTE] Sistema De Verificacion De Correo

Cita:
Iniciado por PepeF Ver Mensaje
Pero yo voy a usar mysqli pero seguire con php porque phpo es orientado a objeto y yo no quiero eso.
Eres terco.
Mysqli tiene funciones para ser utilizadas en POO y otras para no. La puedes utilizar exactamente igual a como ahora utilizas mysql_ pero sólo agregando una i.

Y si dices que todo el mundo usa mysql_ es porque es el primero que aprende, pero a la vez tiene que aprender sobre seguridad, porque es lo más inseguro que existe. En cambio con mysqli es mucho más seguro, pero ojo, tampoco hay que despreocuparse de eso.

Vee el lado positivo, no tendrías que aprender tanto sobre cómo escapar las cadenas antes una consulta... como veo que te da pereza hasta leer el manual...
__________________
~~Aprendiendo.
Become a Programmer, Moth*rf*cker
  #21 (permalink)  
Antiguo 15/08/2012, 09:56
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 4 meses
Puntos: 27
Respuesta: [APORTE] Sistema De Verificacion De Correo

Que noo que yo ya lo lei lo que digo que si mira mi post veras que he usado mysqli (El nuevo post que he mejorado).

Yo desde que me dijieron mysqli empeze a investigar y lo estoy usando pero digo que me quedare con php y no pasare a poo
  #22 (permalink)  
Antiguo 15/08/2012, 10:02
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 10 meses
Puntos: 155
Respuesta: [APORTE] Sistema De Verificacion De Correo

Cita:
Iniciado por PepeF Ver Mensaje
si pero es muchisimo mas dificil.

jejeje cuando te toque estar haciendo cambios o mejoras veras que el hacerlo con orientacion a objetos hubiera sido mas fácil
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #23 (permalink)  
Antiguo 15/08/2012, 11:06
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 4 meses
Puntos: 27
[APORTE] Sistema De Logeo Con Baneo Y Mucho Mas [APORTE]

¿Que tiene de nuevo este sistema que no tenga el anterior publicado?
A En el registro tiene los siguientes filtro:
1- El usuario debe tener como minimo 4 caracteres.
2- Las contraseñas deben tener como minimo 5 caracteres.
3- Autentificacion del Nombre y Email (Si existen el Nombre y el Email).
4- No puedes dejar ningun campo en blanco.
5- El correo tiene que tener @ y .
6- Las contraseñas tienen que coincidir.
7- El Captcha tiene que ser correcto.

B Tiene el Sistema De Verificacion De Correo que te envian el correo cuando te has registrado correctamente.

C Para entrar al login tiene que Activar La Cuenta si no, no podras.

D Desde la base de dato puedes Banear a un usuario (Denegarle el acceso al login).

E Tiene un sistema de ¿Olvidastes La Contraseña? funciona de la siguiente manera:
Tu pones tu correo y te envian un mensaje con un enlace y al meterte en el enlace puedes cambiar la contraseña.

F Tiene un Sistema De Ajustes y podras cambiar tu nombre, cambiar tu contraseña y eliminar tu cuenta.

G Y por ultimo tiene un sistema para saber cuantas personas hay conectadas (Hay X Usuarios Conectados).

¿Cuantos archivos tienes y como se llaman?
Tiene 7 Archivos y 2 carpetas
En total tiene 10 archivos.

1- index.php
2- logout.php
3- registro.php
4- validacion.php
5- tuweb.php (Este es el archivo donde puedes poner toda tu pagina web pero con el codigo que hay dentro)
6- opciones.php
7- forgout.php
En la carpeta Captcha
8- captcha.php
En la carpeta Config
9- conectar.php
10- online.php

¿En que lenguaje esta programado?
Esta programado en PHP y MYSQL

¿Explicacion?
Crea una carpeta en donde vayas a poner el login llamada captcha Y Descargate este archivo y copia la carpeta resources dentro de la carpeta captcha creada anteriormente.

URL: [URL="http://code.google.com/p/cool-php-captcha/"]Descarga este archivo[/URL]

Codigo:
Forgout.php
Código PHP:
Ver original
  1. <?php
  2. include ("config/conectar.php");
  3. ?>
  4. <?php
  5. if(isset($_POST['enviar'])){
  6.     $forgout = mysql_query("SELECT Nombre,CodigoKEY FROM usuarios WHERE Email = '$_POST[email]'");
  7.     while($for = mysql_fetch_array($forgout)){
  8.     mail("$_POST[email]","Recupera tu contraseña","Hola $for[Nombre], ¿Se te ha olvidado tu contraseña? NO TE PREOCUPES aqui podras cambiar tu contraseña http://localhost/validacion.php?correo=$_POST[email]&codigokey=$for[CodigoKEY]");
  9.     echo "Te hemos enviado un correo a tu direccion $_POST[email] Y desde alli podras cambiar tu contraseña";
  10.     }
  11. }
  12. ?>
  13. <form action="" method="post">
  14.   Introduzca tu email: <br> <input name="email"><br>
  15.   <input name="enviar" type="submit">
  16. </form>


Index.php
Código PHP:
Ver original
  1. <?php
  2. include ("config/conectar.php");
  3. ?>
  4.  
  5. <?php
  6. /* Sistema de verificacion del email y de la contraseña */
  7. if(isset($_POST['enviar'])){
  8. $validar = mysql_query("SELECT Email,Contrasena FROM usuarios WHERE Email = '$_POST[email]' AND Contrasena = '$_POST[contrasena]'");
  9.     if($vali = mysql_fetch_array($validar)){
  10.     $email = $vali['Email'];
  11.     setcookie("login","$email");
  12.     header('Location: index.php');
  13.     }else{
  14.     echo "Los datos no son correcto";
  15.     }
  16. }
  17. /* End Sistema de verificacion del email y de la contraseña */
  18. ?>
  19.  
  20. <?php
  21. /* Sistema de baneo y de activar cuenta */
  22. if($_COOKIE['login']){
  23. $baneado = mysql_query("SELECT EstadoKEY,Baneado FROM usuarios WHERE Email = '$_COOKIE[login]'");
  24.     while($bane = mysql_fetch_array($baneado)){
  25.         if($bane['Baneado'] == "1"){
  26.         echo "Estas baneado";
  27.         }elseif($bane['EstadoKEY'] == "1"){
  28.         echo "Tu cuenta no esta activada !Activala¡";
  29.         }else{
  30.         include ("config/online.php");
  31. /* End Sistema de baneo y de activar cuenta */
  32.  
  33. ?>
  34.  
  35. Bienvenido a la web, Si quieres <a href="logout.php">Desconectar</a>
  36. <a href="opciones.php">Entra a opciones</a>
  37.  
  38. <?php
  39.         }
  40.     }
  41. }else{
  42. ?>
  43.  
  44. <form action="" method="post">
  45.   Email: <br> <input name="email">
  46.   Contraseña: <input type="password" name="contrasena">
  47.   <input type="submit" name="enviar" value="Iniciar session">
  48. </form>
  49. <a href="registro.php">Registrate</a>
  50. <a href="forgout.php">¿Olvidastes tu contraseña?</a>
  51.  
  52. <?php
  53. }
  54. ?>


Logout.php
Código PHP:
Ver original
  1. <?php
  2. setcookie("login");
  3. header('Location: index.php');
  4. ?>


Opciones.php
Código PHP:
Ver original
  1. <?php
  2. include ("config/conectar.php");
  3. ?>
  4.  
  5. <?php
  6. /* Sistema de baneo y de activar cuenta */
  7. if($_COOKIE['login']){
  8. $baneado = mysql_query("SELECT EstadoKEY,Baneado FROM usuarios WHERE Email = '$_COOKIE[login]'");
  9.     while($bane = mysql_fetch_array($baneado)){
  10.         if($bane['Baneado'] == "1"){
  11.         echo "Estas baneado";
  12.         }elseif($bane['EstadoKEY'] == "1"){
  13.         echo "Tu cuenta no esta activada !Activala¡";
  14.         }else{
  15.         include ("config/online.php");
  16. /* End Sistema de baneo y de activar cuenta */
  17.  
  18. ?>
  19.  
  20. <?php
  21. if($_GET['opciones'] == ""){
  22. echo '
  23. Aqui tienes varias opciones.<br>
  24. 1- <a href="?opciones=nombre">Cambiar nombre</a><br>
  25. 2- <a href="?opciones=contrasena">Cambiar contraseña</a><br>
  26. 3- <a href="?opciones=eliminar">Eliminar mi cuenta</a><br>';
  27. }
  28. ?>
  29.  
  30. <?php
  31. if($_GET['opciones'] == "nombre"){
  32.     if(isset($_POST['enviar'])){
  33.         if(strlen($_POST['nombrenuevo']) <= "3"){
  34.         echo "El nombre tiene que tener como minimo 4 caracteres.";
  35.         }else{
  36.         mysql_query("UPDATE usuarios SET Nombre = '$_POST[nombrenuevo]' WHERE Email = '$_COOKIE[login]'");
  37.         echo "<font color='green'>Tu nuevo nombre es <b>$_POST[nombrenuevo]</b></font>";
  38.         }
  39.     }
  40. echo '
  41. <a href="?">Atras</a>
  42. <form action="" method="post">
  43.  Nombre nuevo: <br> <input name="nombrenuevo">
  44.  <input name="enviar" type="submit">
  45. </form>';
  46. }
  47. if($_GET['opciones'] == "contrasena"){
  48.     if(isset($_POST['enviar'])){
  49.         if(strlen($_POST['contrasenanueva']) <= "4"){
  50.         echo "La contraseña tiene que tener como minimo 5 caracteres.";
  51.         }else{
  52.         mysql_query("UPDATE usuarios SET Contrasena = '$_POST[contrasenanueva]' WHERE Email = '$_COOKIE[login]'");
  53.         echo "<font color='green'>Tu nueva contraseña es <b>$_POST[contrasenanueva]</b></font>";
  54.         }
  55.     }
  56. echo '
  57. <a href="?">Atras</a>
  58. <form action="" method="post">
  59.  Contrasena Nueva: <br> <input name="contrasenanueva">
  60.  <input name="enviar" type="submit">
  61. </form>';
  62. }
  63. if($_GET['opciones'] == "eliminar"){
  64.     if(isset($_POST['enviar'])){
  65.     mysql_query("DELETE FROM usuarios WHERE Email = '$_COOKIE[login]'");
  66.     setcookie("login");
  67.     header('Location: index.php');
  68.     }
  69. echo '
  70. <a href="?">Atras</a>
  71. <form action="" method="post">
  72. <input name="enviar" type="submit" value="Eliminar mi cuenta">
  73. </form>';
  74. }
  75. ?>
  76.  
  77. <?php
  78.         }
  79.     }
  80. }else{
  81. header('Location: index.php');
  82. }
  83. ?>


Sigo el post mas abajo. (Porque no me cabe)
  #24 (permalink)  
Antiguo 15/08/2012, 11:06
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 4 meses
Puntos: 27
Respuesta: [APORTE] Sistema De Logeo Con Baneo Y Mucho Mas [APORTE]

Registro.php
Código PHP:
Ver original
  1. <?php
  2. include ("config/conectar.php");
  3. ?>
  4. <br><font color="red">
  5. <?php
  6. if(isset($_POST['enviar'])){
  7.     if(strlen($_POST['nombre']) <= "3"){
  8.     echo "El usuario debe tener como mínimo 4 caracteres.";
  9.     }else{
  10.     if(strlen($_POST['contrasena']) <= "4"){
  11.     echo "Las contraseñas tienes que tener como minimo 5 caracteres";
  12.     }else{
  13.     $registros = mysql_query("SELECT nombre FROM usuarios WHERE Nombre = '$_POST[nombre]'");
  14.     if($reg = mysql_fetch_array($registros)){
  15.     echo "El usuario ya existe";
  16.     }else{
  17.     $registros = mysql_query("SELECT email FROM usuarios WHERE Email = '$_POST[email]'");
  18.     if($reg = mysql_fetch_array($registros)){
  19.     echo "El email ya existe";
  20.     }else{
  21.     if($_POST['nombre'] == "" | $_POST['email'] == "" | $_POST['contrasena'] == "" | $_POST['contraseña2'] == "" | $_POST['captcha'] == ""){
  22.     echo "Rellena todos los campos en blanco";
  23.     }else{
  24.     if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
  25.     echo "El correo es incorrecto";
  26.     }else{
  27.     if($_POST['contrasena'] <> $_POST['contraseña2']){
  28.     echo "Las contraseñas no coinciden";
  29.     }else{
  30.     if (!empty($_REQUEST['captcha'])) {
  31.         if (empty($_SESSION['captcha']) || trim(strtolower($_REQUEST['captcha'])) != $_SESSION['captcha']) {
  32.         echo "Captcha incorrecto.";
  33.         $request_captcha = htmlspecialchars($_REQUEST['captcha']);
  34.     }else{
  35.     $CodigoKEY = SHA1(rand(0,100000000));
  36.     $Contraseña = MD5($_POST['contrasena']);
  37.     mysql_query("INSERT INTO usuarios(Nombre,Email,Contrasena,EstadoKEY,CodigoKEY,Baneado,Ip) VALUES ('$_POST[nombre]', '$_POST[email]', '$Contraseña', '1', '$CodigoKEY', '0', '$_SERVER[REMOTE_ADDR]')");
  38.     $registros = mysql_query("SELECT Email,CodigoKEY FROM usuarios WHERE Nombre = '$_POST[nombre]'");
  39.     while($reg = mysql_fetch_array($registros)){
  40.     mail("$_POST[email]","Activa tu cuenta.","Hola $_POST[nombre], Bienvenido tu te as registrado en http://localhost y para activar tu cuenta necesitas meterte en esta url. http://localhost/validacion.php?email=$reg[Email]&key=$reg[CodigoKEY]");
  41.     }
  42.     echo "<font color='green'>Registro Correcto</font>";
  43.     echo "<meta http-equiv='refresh' content='1; url=index.php'>";
  44.     }}}}}}}}}
  45. }
  46. ?></font>
  47. <form action="" method="post">
  48.   Nombre: <br> <input name="nombre" minlength="1" maxlength="15"><br>
  49.   Email: <br> <input name="email"><br>
  50.   Contraseña: <br> <input name="contrasena" type="password"><br>
  51.   Vuelve a escribir la contraseña: <br> <input name="contraseña2" type="password"><br>
  52.  
  53. <! // Captcha >
  54. Codigo de activacion: <br>
  55. <img src="captcha/captcha.php" id="captcha" /><br>
  56. <a href="#" onclick="
  57.     document.getElementById('captcha').src='captcha/captcha.php?'+Math.random();
  58.     document.getElementById('captcha-form').focus();"
  59.     id="change-image">¿No entiendes? Cambiar imagen.</a><br>
  60.     <input type="text" name="captcha" id="captcha-form" autocomplete="off" /><br>
  61. <! // End Captcha >
  62.  
  63.   <input name="enviar" type="submit">
  64. </form>
  65.  
  66. <a href="index.php">Inicia Sesion</a>

Tuweb.php
Código PHP:
Ver original
  1. <?php
  2. include ("config/conectar.php");
  3. ?>
  4.  
  5. <?php
  6. /* Sistema de baneo y de activar cuenta */
  7. if($_COOKIE['login']){
  8. $baneado = mysql_query("SELECT EstadoKEY,Baneado FROM usuarios WHERE Email = '$_COOKIE[login]'");
  9.     while($bane = mysql_fetch_array($baneado)){
  10.         if($bane['Baneado'] == "1"){
  11.         echo "Estas baneado";
  12.         }elseif($bane['EstadoKEY'] == "1"){
  13.         echo "Tu cuenta no esta activada !Activala¡";
  14.         }else{
  15.         include ("config/online.php");
  16. /* End Sistema de baneo y de activar cuenta */
  17.  
  18. ?>
  19.  
  20. ///////////////////////////////
  21. Aqui el contenido de tu web.
  22. ///////////////////////////////
  23.  
  24. <?php
  25.         }
  26.     }
  27. }else{
  28. header('Location: index.php');
  29. }
  30. ?>

Validacion.php
Código PHP:
Ver original
  1. <?php
  2. include ("config/conectar.php");
  3. ?>
  4. <?php
  5. $verificacion = mysql_query("SELECT * FROM usuarios WHERE Email = '$_GET[email]' AND CodigoKey = '$_GET[key]'");
  6. if ($veri = mysql_fetch_array($verificacion)){
  7.     mysql_query("UPDATE usuarios SET EstadoKEY = '0' WHERE Email = '$_GET[email]'");
  8.     echo "Tu cuenta ha sido activada Inicia Sesion.";
  9.     echo "<meta http-equiv='refresh' content='2; url=index.php'>";
  10. }
  11. ?>
  12. <?php
  13. $verificacion = mysql_query("SELECT * FROM usuarios WHERE Email = '$_GET[correo]' AND CodigoKEY = '$_GET[codigokey]'");
  14. if($validar = mysql_fetch_array($verificacion)){
  15.     if(isset($_POST['enviar'])){
  16.         if(strlen($_POST['contraseñanueva']) <= "4"){
  17.         echo "La contraseña debe tener como minimo 5 digitos.";
  18.         }else{
  19.         mysql_query("UPDATE usuarios SET Contrasena = '$_POST[contraseñanueva]' WHERE Email = '$_GET[correo]'");
  20.         }
  21.     }
  22. echo'
  23. <form action="" method="post">
  24.  Tu nueva contraseña: <br> <input name="contraseñanueva">
  25.  <input name="enviar" type="submit">
  26. </form>';
  27. }else{
  28. header('Location: index.php');
  29. }
  30. ?>


Config/Conectar.php
Código PHP:
Ver original
  1. <?php
  2. $conexion = mysql_connect("..........","............","...........");
  3. mysql_select_db("...............");
  4. ?>


Config/Online.php
Código PHP:
Ver original
  1. <?php
  2. include ("conectar.php");
  3. ?>
  4. <?php
  5. $time = 1;
  6. $date = time();
  7. $ip = $_SERVER['REMOTE_ADDR'];
  8. mysql_query("delete from online where Fecha < $limite");
  9. $resp = mysql_query("select * from online where Ip='$ip'");
  10. if(mysql_num_rows($resp) != 0) {
  11. mysql_query("update online set Fecha='$date' where Ip='$ip'");
  12. }
  13. else {
  14. mysql_query("insert into online (Fecha,IP) values ('$date','$ip')");
  15. }
  16. $query = "SELECT * FROM online";
  17. $resp = @mysql_query($query) or die(mysql_error());
  18. $usuarios = mysql_num_rows($resp);
  19. if($usuarios > 1 || $usuarios == 0){
  20. echo("Hay ");
  21. }else{
  22. echo("Hay ");
  23. }
  24. if($usuarios == 0){
  25. echo("no ");
  26. }else{
  27. echo($usuarios." ");}
  28. if($usuarios > 1 || $usuarios == 0){
  29. echo("usuarios en línea.");
  30. }else{
  31. echo("usuario en línea.");
  32. }
  33. ?>

¿Que tablas hay que añadir en la base de dato?
En la base de dato tienes que añadir estas dos tabla.

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `online` (
  2.   `Fecha` VARCHAR(40) NOT NULL,
  3.   `Ip` VARCHAR(40) NOT NULL,
  4.   PRIMARY KEY (`Fecha`,`Ip`)
  5. )
  6.  
  7. CREATE TABLE IF NOT EXISTS `usuarios` (
  8.   `Nombre` VARCHAR(40) NOT NULL,
  9.   `Email` VARCHAR(40) NOT NULL,
  10.   `Contrasena` VARCHAR(40) NOT NULL,
  11.   `EstadoKEY` VARCHAR(40) NOT NULL,
  12.   `CodigoKEY` VARCHAR(40) NOT NULL,
  13.   `Baneado` VARCHAR(40) NOT NULL,
  14.   `Ip` VARCHAR(40) NOT NULL,
  15.   PRIMARY KEY (`Nombre`,`Email`)
  16. )

El proximo aporte lo creare en MYSQLI

Última edición por PepeF; 15/08/2012 a las 11:14
  #25 (permalink)  
Antiguo 08/05/2013, 04:11
 
Fecha de Ingreso: septiembre-2011
Ubicación: España
Mensajes: 118
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: [APORTE] Sistema De Verificacion De Correo

Nada ya se que el tema esta antiguo, pero dejo mi opinion, por si es la acertada o puede valer de ayuda

PePEF a mi me pasa igual que para mi POO es mas dificil,
De todas formas segire como tu programando en texto plano usando mysql y demas

Cuando en un futuro se tenga que utilizar POO si o si pues habra que intentar dar el salto, ya dijo tb solo programo por hobby por no aburrirme cuando no tengo que hacer.

Solo unos apuntes es mejor q las validaciones sean con javascript (yo tampoco en tiendo javascript pero en internet ahy script de copiar y pegar)

Y nada por segurida utiza mejor sessiones, son mas seguras y ocupan muy poco espacio en el servidor

Eso fue asi por encima lo que he visto, espero que te sea de ayuda

Saludos

Etiquetas: email, mysql, mysql+db, mysql+php, php+base+de+datos+array, php+db, php+email, php+formulario, php+password, sistema, aportes, validar
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 2 personas




La zona horaria es GMT -6. Ahora son las 03:00.