Foros del Web » Programando para Internet » PHP »

Script de "Forgot Password" me da un error

Estas en el tema de Script de "Forgot Password" me da un error en el foro de PHP en Foros del Web. Hola amigos, tengo un script para enviar la contraseña de un usuario por mail, la lee de MySQL y luego la envía. Ejecuté el script ...
  #1 (permalink)  
Antiguo 05/08/2009, 18:43
 
Fecha de Ingreso: octubre-2008
Mensajes: 165
Antigüedad: 15 años, 5 meses
Puntos: 12
Script de "Forgot Password" me da un error

Hola amigos, tengo un script para enviar la contraseña de un usuario por mail, la lee de MySQL y luego la envía.

Ejecuté el script en localhost y me funcionó, me envía el dato que necesito. El problema es que al querer adaptarlo a mi sitio web ya no me funciona. No sé que estaré haciendo mal.

Ojalá puedan ayudarme, por favor, les agradezco su atención y valiosa ayuda.

Los scripts originales son:

Formulario:

<div align="center">Si ha olvidado su contrase&ntilde;a:</div>
<table width="80%" border="0" cellpadding="3" cellspacing="1" align="center">
<tr>
<td width="50%" align="right" valign="top"><strong>Ingrese su email : </strong></td>
<td width="50%" align="left" valign="top"><form name="form1" method="post" action="enviar_pass.php">
<input name="email_to" type="text" id="mail_to" size="25">
<input type="submit" name="Submit" value="Enviar">
</form>
</td>
</tr>
</table>

Archivo enviar_pass.php

<?

// Receiving variables
@$pfw_ip= $_SERVER['REMOTE_ADDR'];
@$email = addslashes($_POST['email_to']);

include("conn.php");

// table name
$tbl_name=members;

// retrieve password from table where e-mail = $email_to([email protected])
$sql="SELECT password FROM $tbl_name WHERE email='$email'";
$result=mysql_query($sql);

// if found this e-mail address, row must be 1 row
// keep value in variable name "$count"
$count=mysql_num_rows($result);

// compare if $count =1 row
if($count==1){

$rows=mysql_fetch_array($result);

// keep password in $your_password
$your_password=$rows['password'];

// ---------------- SEND MAIL FORM ----------------

//Sending auto respond Email to visitor
$pfw_header = "From: [email protected]\n"
. "Reply-To: [email protected]\n";
$pfw_subject = "Su contraseña";
$pfw_email_to = "$email";
$pfw_message = "Su contraseña es \n $your_password";
@mail($pfw_email_to, $pfw_subject ,$pfw_message ,$pfw_header ) ;

echo("<br /><br /><p align='center'><font face='Verdana' size='4' color='#008000'>Se ha enviado su password a <br /> $email</font></p>");

}

// else if $count not equal 1
else {
echo "No fue encontrada su direccion de E-mail en nuestra Base de Datos<br />
<a href='javascript:history.back()'> Regresar</a>";
}
?>

Ahora bien este es el script que trato de colocar en mi sitio, con los valores necesarios para mi base de datos:

El formulario.html es igual al anterior

<!--Inicia Formulario para contraseña olvidada-->
<div align="center">Si has olvidado tu contrase&ntilde;a:<br /><br />

</div>
<table width="80%" border="0" cellpadding="3" cellspacing="1" align="center">
<tr>
<td width="50%" align="right" valign="top"><strong>Ingres&aacute; tu email : </strong></td>
<td width="50%" align="left" valign="top"><form name="form1" method="post" action="enviar_pass.php">
<input name="email_to" type="text" id="mail_to" size="25">
<input type="submit" name="Submit" value="Enviar">
</form>
</td>
</tr>
</table>
<!--Termina Formulario para contraseña olvidada-->



Este es el archivo enviar_pass.php

<!--Inicia Enviar contraseña olvidada-->
<?

// Receiving variables
@$pfw_ip= $_SERVER['REMOTE_ADDR'];
@$email = addslashes($_POST['email_to']);

require_once('Connections/conn1.php');

// Recuperando la contraseña
$sql="SELECT contrase FROM amigos WHERE email='$email'";
$result=mysql_query($sql);

// if found this e-mail address, row must be 1 row
// keep value in variable name "$count"
$count = mysql_num_rows($result);

// compare if $count =1 row
if($count==1){

$rows=mysql_fetch_array($result);

// keep password in $your_password
$your_password=$rows['contrase'];

// ---------------- SEND MAIL FORM ----------------

//Sending auto respond Email to visitor
$pfw_header = "From: [email protected]\n"
. "Reply-To: [email protected]\n";
$pfw_subject = "Su contraseña";
$pfw_email_to = "$email";
$pfw_message = "Su contraseña es \n $your_password";
@mail($pfw_email_to, $pfw_subject ,$pfw_message ,$pfw_header ) ;

echo("<br /><br /><p align='center'><font face='Verdana' size='4' color='#008000'>Se ha enviado su password a <br /> $email</font></p>");

}

// else if $count not equal 1
else {
echo "No fue encontrada su direccion de E-mail en nuestra Base de Datos<br />
<a href='javascript:history.back()'> Regresar</a>";
}


?>
<!--Termina Enviar contraseña olvidada-->


El error que me sale es:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\misitio_v2\enviar_pass.php on line 73
No fue encontrada su direccion de E-mail en nuestra Base de Datos
Regresar

Me olvidaba, la contraseña no está encriptada.

Bueno espero me ayuden. Gracias.
  #2 (permalink)  
Antiguo 05/08/2009, 19:16
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: Script de "Forgot Password" me da un error

Si la consulta falla, $result no sera un recurso valido; agrega al final de cada consulta or die(mysql_error()) para saber cual es el problema.

Código php:
Ver original
  1. $sql="SELECT contrase FROM amigos WHERE email='$email'";
  2. $result=mysql_query($sql) or die(mysql_error());

Supongo que falla porque:
1- No existe la tabla amigos
2- El campo contrase no existe en la tabla
3- $email puede estar vacio
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 05/08/2009, 19:19
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 16 años, 11 meses
Puntos: 292
Respuesta: Script de "Forgot Password" me da un error

Hay una forma de contar registros con COUNT() ... AS variable
__________________
Salu2!
  #4 (permalink)  
Antiguo 05/08/2009, 19:47
 
Fecha de Ingreso: octubre-2008
Mensajes: 165
Antigüedad: 15 años, 5 meses
Puntos: 12
Gracias Triby por tu respuesta.

Esta es parte de la base de datos a donde apunta

Código PHP:
CREATE TABLE IF NOT EXISTS `amigos` (
  `
idint(10unsigned NOT NULL auto_increment,
  `
contrasevarchar(40collate utf8_spanish_ci NOT NULL,
  `
nombresvarchar(100collate utf8_spanish_ci NOT NULL,
  `
apellidosvarchar(100collate utf8_spanish_ci NOT NULL,
  `
promocionvarchar(30collate utf8_spanish_ci NOT NULL,
  `
emailvarchar(60collate utf8_spanish_ci NOT NULL,
  `
direccionvarchar(200collate utf8_spanish_ci NOT NULL,
  `
telefonovarchar(20collate utf8_spanish_ci NOT NULL,
  `
estado_civilvarchar(20collate utf8_spanish_ci NOT NULL,
  `
ocupacionvarchar(200collate utf8_spanish_ci NOT NULL,
  `
graduadovarchar(100collate utf8_spanish_ci NOT NULL,
  `
publicarenum('s','n'collate utf8_spanish_ci NOT NULL default 'n',
  `
fechatimestamp NOT NULL default CURRENT_TIMESTAMP,
  
PRIMARY KEY  (`id`)
ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci AUTO_INCREMENT=958 ;

--
-- 
Volcar la base de datos para la tabla `amigos`
--

INSERT INTO `amigos` (`id`, `contrase`, `nombres`, `apellidos`, `promocion`, `email`, `direccion`, `telefono`, `estado_civil`, `ocupacion`, `graduado`, `publicar`, `fecha`) VALUES
(14'molina99''Jorge R.''Molina M.''1999''[email protected]''5a. ave. ''55555555''Casado''Comerciante''Bachiller en CC. y LL.''s''2007-06-21 20:45:35'); 
Le he agregado

Código PHP:
$result=mysql_query($sql) or die(mysql_error()); 
y me salio:

No database selected

Luego le quite el la línea donde hace la conexión a la Base de Datos y le puse

Código PHP:
$db_host="localhost"// Host name
$db_username="disweb"// Mysql username
$db_password="disweb_pass"// Mysql password
$db_name="exalumnos2"// Database name

//Connect to server and select databse.
mysql_connect("$db_host""$db_username""$db_password")or die("cannot connect to server");
mysql_select_db("$db_name")or die("cannot select DB"); 
y ahora solo me sale:

No fue encontrada su direccion de E-mail en nuestra Base de Datos
Regresar

Ya me funciona el script, gracias Triby por orientarme. Registré un nuevo usuario, y solicité la contraseña y me la ha enviado.

Última edición por GatorV; 05/08/2009 a las 21:41
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




La zona horaria es GMT -6. Ahora son las 02:52.