Enviar una contraseña aleatoria a un usuario por email
Hola, me podría ayudar alguien en la siguiente cuestión??, tengo una página php que lo que hace es enviar una nueva contraseña a un usuario si éste la olvida, en la BDs de usuario guardo el campo email, asi que el usuario lo que tiene que hacer es escribir el email en una caja de texto, y el administrador buscará el email en la BDs hasta que lo encuentre y una vez encontrado generará una contraseña aleatoria (aqui es donde tengo el problema) y se la enviará al email del usuario en cuestión.
Muchas gracias de antemano.
Muchas gracias de antemano.
Esta muy interesante tu sistema, de hecho, yo quiero hacer un generador de claves.
Mira, lo que tenia pensado hacer es un arreglo con los posibles caracteres a usar en la clave y luego generar un ciclo que te de n numero de caracteres, por ejemplo 8, de forma aleatoria.
Si tienes problemas con la sintaxis del random, checa la pagina de php, esta exelente ese manual.
Si quieres, podemos ir armando el script entre todos usando este foro.
Espero te sirva este post.
Mira, lo que tenia pensado hacer es un arreglo con los posibles caracteres a usar en la clave y luego generar un ciclo que te de n numero de caracteres, por ejemplo 8, de forma aleatoria.
Si tienes problemas con la sintaxis del random, checa la pagina de php, esta exelente ese manual.
Si quieres, podemos ir armando el script entre todos usando este foro.
Espero te sirva este post.
talvez esto les puede servir:
<?php
//generador de password con minusculas, mayusculas y numeros
function minmaynum($pass){
$valid_characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$chars_length = strlen($valid_characters) - 1;
for ($i=1;$i<=7;$i++)
{
$pass .= $valid_characters[mt_rand(0, $chars_length)];
}
return $pass;
}
?>
script para enviar el email: enviaremail.php
<?php
//generando el password
include 'generadorpass.php'; // Se incluye la libreria en la cual esta la funcion
$sword=minnum($pass); // Se llama la funcion con la variable que se requiere y se asigna a la variable $sword
$swordcrypt=md5($sword);// esto encripta el password para que lo introduscan encriptado en su bd
//*************************envio del correo de confirmacion de ingreso***************************************
$asunto="Confirmacion de ingreso a tuportal.com";
$mensaje="
<HTML>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2600.0" name=GENERATOR>
<STYLE>
</STYLE>
</HEAD>
<BODY BGCOLOR=#FFFBDF>
Hola, este es tu nuevo password para ingresar a nuestro portal:".$sword."
</BODY>
</HTML>
";
$headers = "MIME-Version: 1.0rn";
$headers .= "Content-type: text/html; charset=iso-8859-1rn";
//dirección del remitente
$headers .= "From: [email protected]";
//direcciones que recibirán copia oculta
$headers .= "Bcc: [email protected]";
//solicitud de lectura
$headers .="Disposition-notification-to: [email protected]";
//prioridad del mensaje
$headers .="X-Priority: 1rn";
//prioridad del mensaje
$para="$email";
$headers .="X-MSMail-priority: Highrn";
mail($para,$asunto,$mensaje,$headers);
?>
script de consulta si existe el usuario: solicitudpass.php
<?php
include '../cgi-bin/dbconection.php'; // parametros de conexion con la base de datos
include '../cgi-bin/variablespost.php'; // script que recoge todas las variables post en este caso seria el email al cual se enviar el password
$Query = "SELECT * from users where email='$email'";
$Results = mysql_db_query($DBName,$Query);
if ($Row = mysql_fetch_array($Results))
{
include 'enviarmail.php';
include 'actualizarpass.php'
}
else
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Untitled</TITLE>
<META NAME="Author" CONTENT="tgp">
<META NAME="Robots" CONTENT="none">
<META HTTP-EQUIV="Expires" CONTENT="Sun, 22 Mar 1998 16:18:35 GMT">
<META NAME="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Refresh" CONTENT="4; URL=recobrapass.php">
</HEAD>
<BODY BGCOLOR="#FFB164" LINK="#FF8000" VLINK="#FF8000" ALINK="#FF8000" BGPROPERTIES="fixed">
<BR><BR><BR><BR>
<DIV ALIGN="center">
<FONT FACE="Arial" COLOR="#FFFFFF" SIZE="2">Lo sentimos pero tu email no esta registrado.</FONT><BR>
<BR></DIV>
</BODY>
</HTML>
<?php
die();
}
?>
script para actualizar el password: actualizarpass.php
<?php
include '../cgi-bin/dbconection.php';
global $DBName,$DBLink;
$Query="update users set password=$swordcrypt where email='$email'";
?>
script para recoger todas las variables posteadas: variablespost.php
<?php
// se recogen todas las variables del formulario
foreach($_POST as $nombre_campo => $valor)
{
$asignacion = "$" . $nombre_campo . "="" . $valor . "";";
eval($asignacion);
}
?>
script de verificacion de ingreso a su pagina: login.php
<?php
$sword = md5($_POST['sword']); // convierte el password enviado por el formulario en un password encriptado que se verificara en la base de datos
include '../cgi-bin/dbconection.php';
global $DBName,$DBLink;
$Query = "SELECT * from users where email='$email' and sword='$sword'";
$Results = mysql_db_query($DBName,$Query);
if ($Row = mysql_fetch_array($Results))
{
// cualquier tipo de codigo que necesite para el usuario cuando ya entro
}
else
{
// cualquier codigo que diga que no se encontro registro o que no coinciden los datos enviados
}
?>
formulario de entrada: loginform.php
<?php
// yo aqui inicio una sesion
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<META HTTP-EQUIV="Expires" CONTENT="Sun, 22 Mar 1988 16:18:35 GMT">
<META NAME="Pragma" CONTENT="no-cache">
<html>
<head>
<title>Login form</title>
<script language="javascript">
function chequeo() {
if (form.email.value == ""){
alert("Por favor ingrese tu email"); form.email.focus();
return;
}
if (form.sword.value == ""){
alert("Por favor ingrese su password"); form.sword.focus();
return;
}
document.form.submit()
}
</SCRIPT>
<BODY BACKGROUND="../imagenes/mainbg.gif" BGCOLOR="#FFFFFF" LINK="#2D6BF5" VLINK="#E64E1D" ALINK="#3BB23B" BGPROPERTIES="fixed">
<DIV ALIGN="center">
<form name="form" action="login.php" method="post" >
<p class="Titulo"> </p>
<p class="Titulo">Bienvenido</p>
<table border="0" align="center">
<TR>
<TD colspan="2" align="center"><img src="../imagenes/botones/data_encrypted_md_wht.gif" width="130" height="91" align="center">
</TD>
</TR>
<tr>
<td><strong>email</strong></td>
<td><input type="text" name="email" size="10" maxlength="28"></td>
</tr>
<tr>
<td><strong>Password</strong></td>
<td><input type="password" name="sword" size="10" maxlength="7"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="button" value="Ingresar" onClick="chequeo()">
</td>
</tr>
</table>
</form>
</body>
</html>
el formulario de solicitud de envio de password puede ser igual solo quitan el campo de donde se introduce la clave y redireccionan el formulario hacia solicitudpass.php
pueda ser quele falte algo de codigo html pero espero que les sirva y les de una idea... ya que es algo que me rompio un poco la cabeza se los comparto...
saludos desde Guatemala...
<?php
//generador de password con minusculas, mayusculas y numeros
function minmaynum($pass){
$valid_characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$chars_length = strlen($valid_characters) - 1;
for ($i=1;$i<=7;$i++)
{
$pass .= $valid_characters[mt_rand(0, $chars_length)];
}
return $pass;
}
?>
script para enviar el email: enviaremail.php
<?php
//generando el password
include 'generadorpass.php'; // Se incluye la libreria en la cual esta la funcion
$sword=minnum($pass); // Se llama la funcion con la variable que se requiere y se asigna a la variable $sword
$swordcrypt=md5($sword);// esto encripta el password para que lo introduscan encriptado en su bd
//*************************envio del correo de confirmacion de ingreso***************************************
$asunto="Confirmacion de ingreso a tuportal.com";
$mensaje="
<HTML>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2600.0" name=GENERATOR>
<STYLE>
</STYLE>
</HEAD>
<BODY BGCOLOR=#FFFBDF>
Hola, este es tu nuevo password para ingresar a nuestro portal:".$sword."
</BODY>
</HTML>
";
$headers = "MIME-Version: 1.0rn";
$headers .= "Content-type: text/html; charset=iso-8859-1rn";
//dirección del remitente
$headers .= "From: [email protected]";
//direcciones que recibirán copia oculta
$headers .= "Bcc: [email protected]";
//solicitud de lectura
$headers .="Disposition-notification-to: [email protected]";
//prioridad del mensaje
$headers .="X-Priority: 1rn";
//prioridad del mensaje
$para="$email";
$headers .="X-MSMail-priority: Highrn";
mail($para,$asunto,$mensaje,$headers);
?>
script de consulta si existe el usuario: solicitudpass.php
<?php
include '../cgi-bin/dbconection.php'; // parametros de conexion con la base de datos
include '../cgi-bin/variablespost.php'; // script que recoge todas las variables post en este caso seria el email al cual se enviar el password
$Query = "SELECT * from users where email='$email'";
$Results = mysql_db_query($DBName,$Query);
if ($Row = mysql_fetch_array($Results))
{
include 'enviarmail.php';
include 'actualizarpass.php'
}
else
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Untitled</TITLE>
<META NAME="Author" CONTENT="tgp">
<META NAME="Robots" CONTENT="none">
<META HTTP-EQUIV="Expires" CONTENT="Sun, 22 Mar 1998 16:18:35 GMT">
<META NAME="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Refresh" CONTENT="4; URL=recobrapass.php">
</HEAD>
<BODY BGCOLOR="#FFB164" LINK="#FF8000" VLINK="#FF8000" ALINK="#FF8000" BGPROPERTIES="fixed">
<BR><BR><BR><BR>
<DIV ALIGN="center">
<FONT FACE="Arial" COLOR="#FFFFFF" SIZE="2">Lo sentimos pero tu email no esta registrado.</FONT><BR>
<BR></DIV>
</BODY>
</HTML>
<?php
die();
}
?>
script para actualizar el password: actualizarpass.php
<?php
include '../cgi-bin/dbconection.php';
global $DBName,$DBLink;
$Query="update users set password=$swordcrypt where email='$email'";
?>
script para recoger todas las variables posteadas: variablespost.php
<?php
// se recogen todas las variables del formulario
foreach($_POST as $nombre_campo => $valor)
{
$asignacion = "$" . $nombre_campo . "="" . $valor . "";";
eval($asignacion);
}
?>
script de verificacion de ingreso a su pagina: login.php
<?php
$sword = md5($_POST['sword']); // convierte el password enviado por el formulario en un password encriptado que se verificara en la base de datos
include '../cgi-bin/dbconection.php';
global $DBName,$DBLink;
$Query = "SELECT * from users where email='$email' and sword='$sword'";
$Results = mysql_db_query($DBName,$Query);
if ($Row = mysql_fetch_array($Results))
{
// cualquier tipo de codigo que necesite para el usuario cuando ya entro
}
else
{
// cualquier codigo que diga que no se encontro registro o que no coinciden los datos enviados
}
?>
formulario de entrada: loginform.php
<?php
// yo aqui inicio una sesion
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<META HTTP-EQUIV="Expires" CONTENT="Sun, 22 Mar 1988 16:18:35 GMT">
<META NAME="Pragma" CONTENT="no-cache">
<html>
<head>
<title>Login form</title>
<script language="javascript">
function chequeo() {
if (form.email.value == ""){
alert("Por favor ingrese tu email"); form.email.focus();
return;
}
if (form.sword.value == ""){
alert("Por favor ingrese su password"); form.sword.focus();
return;
}
document.form.submit()
}
</SCRIPT>
<BODY BACKGROUND="../imagenes/mainbg.gif" BGCOLOR="#FFFFFF" LINK="#2D6BF5" VLINK="#E64E1D" ALINK="#3BB23B" BGPROPERTIES="fixed">
<DIV ALIGN="center">
<form name="form" action="login.php" method="post" >
<p class="Titulo"> </p>
<p class="Titulo">Bienvenido</p>
<table border="0" align="center">
<TR>
<TD colspan="2" align="center"><img src="../imagenes/botones/data_encrypted_md_wht.gif" width="130" height="91" align="center">
</TD>
</TR>
<tr>
<td><strong>email</strong></td>
<td><input type="text" name="email" size="10" maxlength="28"></td>
</tr>
<tr>
<td><strong>Password</strong></td>
<td><input type="password" name="sword" size="10" maxlength="7"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="button" value="Ingresar" onClick="chequeo()">
</td>
</tr>
</table>
</form>
</body>
</html>
el formulario de solicitud de envio de password puede ser igual solo quitan el campo de donde se introduce la clave y redireccionan el formulario hacia solicitudpass.php
pueda ser quele falte algo de codigo html pero espero que les sirva y les de una idea... ya que es algo que me rompio un poco la cabeza se los comparto...
saludos desde Guatemala...