Recuoerar contraseña

Hola,

Tengo un problema con el codigo para recuperar la contraeña, no se si puede ser cosa del servidor que al ser gratuito no puedo tener correo, pero creo que el codigo php deberia de funcionar aunque luego no envie el correo.

Codigo php:
<?php

include "configuracion.php";

if(!empty($_POST['username'])){
$username = htmlspecialchars($_POST['username']);
$username = stripslashes($_POST['username']);
$username = strip_tags($username);
$username = htmlentities($username);}

//conexion base de datos
mysql_connect($server, $db_user, $db_pass)
or die ("No se pudo conectar con mysql porque ".mysql_error());

//seleccionar base datos
mysql_select_db($database)
or die ("No se pudo seleccionar la base de datos porque ".mysql_error());

//selecionar tabla
$check = "select * from $table WHERE username = '".mysql_real_escape_string($username)."';";
$result = mysql_query($check)
or die ("No se pudo seleccionar tabla porque ".mysql_error());
while ($qry = mysql_fetch_array($result)) {
//echo "$qry[correo eliminado]";
//echo "$qry";

$sendto = $qry[correo eliminado];

$mymail = "$sendto";
$cc = 'Requested Password';
$FrOm = "$sendto";
$BoDy = '';
$BoDy .= "Dear ";
$BoDy .= htmlspecialchars($_POST['username']);
$BoDy .= stripslashes($_POST['username']);
$BoDy .= strip_tags($BoDy);
$BoDy .= htmlentities($BoDy);
$BoDy .= "\n";
$BoDy .= "\n";
$BoDy .= "Forgotten password request";
$BoDy .= "\n";
$BoDy .= 'La solicitud se hizo para volver a enviar su contraseña a esta dirección, si no has solicitado este pedido contraseña, por favor informe al administrador del sitio web';
$BoDy .= "\n";
$BoDy .= "\n";
$BoDy .= 'Su contraseña es:';
$BoDy .= "\n";
$BoDy .= $qry;
$BoDy .= "\n";

$send = mail("$mymail", "$cc", "$BoDy", "From: $FrOm");
if($send)
{
echo "Un Correo electrónico se ha enviado con éxito a su dirección del correo electrónico con su contraseña olvidada, por favor permita un tiempo al correo electrónico para llegar..<br><br><a href='identif icarse.html'>Identificarse</a>";
}
}
?>

Yo lo probe al principio de sonseguir este codigo, la verdad no lo entiendo, pero cuando lo probe si me salia el mensaje del "echo" (Aun que no enviaba el email) y ahora sin embargo no me sale nada del "else", por eso no se si esta bien el codigo, o como siempre ando toqueteando igual lo averiado.

Gracias

Un saludo
Hola Jeyn.

Como bien has dicho Jeyn, al ser gratuito tu servidor posiblemente no tengas la posibilidad de usar la función mail() de PHP, ya que las empresas que ofrecen dicho servicio gratuito, pretenden así salvaguardarse de cualquier acción legal que se recurra contra ellos.

Recuerda lo que se habló en seguridad PHP + bases de datos, debemos desconfiar de los usuarios (Esto lo dijo serverdns). Los usuarios que "contratan" dicho host, pueden "contratarlo" para fines poco éticos o delictivos como realizar envío de spam, virus por e-mail, etc... Así que lo más seguro es que tengas desabilitada dicha función de PHP.

Y claro... si la función mail() no te funciona, el else que decís, no te devolverá ningún mensaje, ya que el else solo mostrará el mensaje si el e-mail se ha enviado.
Pienso, comparto, aprendo, luego creo
ok, para publicar codigo php se coloca dentro de : [ PHP]

Ahora bien, veo que te tomaste muy enserio lo de seguridad en las variables, eso es bueno pero aveces inecesario, he modificado un poco tu codigo, no lo probe, quizas tenga errores de escritura, pruebalo y haber que pasa:

<?php
/*////////////////////////////////////////////
// Codigos Y Funciones Utilies En PHP       //
// Sitio Web: http://www.serverdns.us       //
// Soporte Tecnico: [correo eliminado]    //
////////////////////////////////////////////*/

require("configuracion.php");

if(!empty($_POST['username'])){
$username = htmlspecialchars($_POST['username']);
$username = stripslashes($username);
$username = strip_tags($username);
$username = htmlentities($username);

//conexion base de datos
if(!$conexion=mysql_connect($server, $db_user, $db_pass)){
echo "No se pudo conectar con mysql porque ".mysql_error();
exit;
}
//seleccionar base datos
if(!mysql_select_db($database)){
echo "No se pudo seleccionar la base de datos porque ".mysql_error();
exit;
}
//selecionar tabla
$consulta=mysql_real_escape_string("select email,password from $table WHERE username='$username'");
$resultado=mysql_query($consulta,$conexion) or die ("No se pudo seleccionar tabla porque ".mysql_error());
if($datos=mysql_fetch_array($resultado)){
$para=$datos['email'];
$titulo='Tu Contraseña';
$mensaje="Hola $username \n\n";
$mensaje.="Pedido De Recuperacion De Contraseña\n";
$mensaje.="La solicitud se hizo para volver a enviar su contraseña a esta dirección, si no has solicitado este pedido contraseña,
por favor informe al administrador del sitio web \n\n";
$mensaje.="Su contraseña es: ".$datos['password']."\n";

if(!isset($SERVER_NAME)){$SERVER_NAME=$_SERVER['SERVER_NAME'];}
$uniq_id = md5(uniqid(time()));
$cabeceras .= "MIME-Version: 1.0\r\n";
$cabeceras .= "Content-type: text/html; charset=iso-8859-1\r\n";
$cabeceras .= "Message-ID: <$uniq_id@$SERVER_NAME>\r\n";
$cabeceras .= "From: No Responder<[correo eliminado]>\r\n";
$cabeceras .= "To: $username<$para>\r\n";

if(mail($para,$titulo,$mensaje,$cabeceras)){
echo "Un Correo electrónico se ha enviado con éxito a su dirección del correo electrónico con su contraseña olvidada, por favor permita un tiempo al correo electrónico para llegar..<br><br><a href=\"identificarse.html\">Identificarse</a>";
}else{
echo "Error al tratar de enviar tu contraseña, intenta otra vez.";
}
}
}

?>
Ok lo probare, pero ya cuando coja el servidor normal, bueno que no sea gratuito y me permita los emails.

Y eso que me as puesto es lo mismo que lo que yo he puesto?

Ya he dicho antes que no lo entendia lo cogi de un tutorial, pero me parece mas sencillo lo que tu as puesto. O por lo menos mas corto.

Por lo demas creo que ya esta mas o menos la pagina para subirla, ahora me toca enredar en el foro a ver si le cojo el truco.

Una pregunta ya que estamos, aun que se que no es de este post, me he descargado el phpBB3, es aconsejable o mejor el phpBB2. Lo quisiera sencillo, como todos me imagino.

Muchas gracias por vuestra ayuda.

un saludo
Ah! perdon se me olvidaba, la contraseña va encriptada con md5() el usuario que recibiria?

Su contraseña?

O la contraseña encriptada?

Si la recoje de la bse de datos recoge la encriptacion, y eso no le valdria para identificarse, no?

No se si eso seria valido, por eso pregunto

Aqui no se acaba nunca, siempre salen cosas nuevas

Miremoslo por el lado positivo, asi se aprende.

Gracias de nuevo
en efecto, el sistema tomara la contraseña tal y como esta guardada en la base de datos, si esta encriptada, sera imposible enviarle la contraseña original, lo que deberas hacer sera cambiarla, por una generada aleatoriamente y enviarsela al usuario, y pedirle que la cambie por una de su agrado.
Jeyn, siempre puedes crear un sistema el cual genere una nueva contraseña. Luego el usuario con dicha contraseÑa podrá cambiarla cuando entre a su panel de control. Ahora mismo estoy escribiendo desde mi BB, así que me es muy difícil echarte una mano con dicho código. Cuando vuelva al PC le damos leña al fuego, o bien sercerdns podría echar una manita :)