IF en cascada no funciona...

Hola muy buenas.
Estoy desarrollando una simple pagina de recuperación de contraseñas, en el cual el usuario debe introducir su correo electrónico y php verifica si existe o no, lo cual si existe le lleva al siguiente apartado que es que le muestre la pregunta que el usuario hizo a la hora de registrarse y con su debida respuesta. Hasta aquí todo funciona bien, el problema llega cuando introduce la respuesta y valida el formulario, aquí la pagina se me reinicia y no continua. Mi código es simple y de principiante, podrías ayudarme a resolver este enigma por favor.:
El código mio es:

<!DOCTYPE HTML>
<html>
<head>
<title>Recuperaci&oacute;n de Contrase&ntilde;a para Socios</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="blockbg">
<h2 align="center">Recuperar Contrase&ntilde;a</h2>
<hr />
<div id="getmail" style="display: block;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<form method="POST">
<tr><td width="30%"><h3>Introduce tu Correo Electronico</h3></td><td><input type="text" size="30" maxlength="40" name="email" /></td></tr>
<tr><td colspan="2"><input type="submit" value="Validar" name="submit_mail" /></td></tr>
</form></table></div>
<?
Require('config.php');
if(isset($_POST['submit_mail'])){
 $count=0;
 $check = mysql_query("SELECT * FROM usuarios_socios WHERE email = '{$_POST['email']}'");
 while($row = mysql_fetch_object($check)){
 $count++;
 $result = $row;
 }
 if($count==1){
 $pregunta = $result->pregunta;
 $respuesta = $result->respuesta;
 $usuario = $result->usuario;
 $id = $result->id;
 echo "<script type\"text/javascript\">document.getElementById('getmail').style.display='none';</script>";
 echo "<div id=\"getansw\" style=\"display: none;\">
 <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
 <form method=\"POST\">
 <tr><td colspan=\"2\"><h2>$pregunta</h2></td></tr>
 <tr><td width=\"30%\"><h3>Respuesta:</h3></td><td><input type=\"text\" size=\"30\" maxlength=\"30\" name=\"answ\" /></td></tr>
 <tr><td colspan=\"2\"><input type=\"submit\" value=\"Validar\" name=\"submit_answ\" /></td></tr>
 </form></table></div>";
 echo "<script type=\"text/javascript\">document.getElementById('getansw').style.display='block';</script>";
 if(isset($_POST['submit_answ'])){
 if($respuesta==$_POST['answ']){
 echo "<script type=\"text/javascript\">document.getElementById('getansw').style.display='none';</script>";
 echo "<div id=\"getpass\" style=\"display: none;\">
 <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
 <form method=\"POST\">
 <tr><td width=\"30%\"><h3>Nueva Contrase&ntilde;a</h3></td><td><input type=\"password\" size=\"30\" maxlength=\"20\" name=\"pass\" /></td></tr>
 <tr><td colspan=\"2\"><input type=\"submit\" value=\"Guardar\" name=\"submit_pass\" /></td></tr>
 </form></table></div>";
 echo "<script type=\"text/javascript\">document.getElementById('getpass').style.display='block';</script>";
 if(isset($_POST['submit_pass'])){
 mysql_query("UPDATE usuarios_socios SET password = '{$_POST['pass']} WHERE id = '$id'");
 echo "<script type=\"text/javascript\">alert('Tu nueva contraseña se ha guardado correctamente ".ucwords($usuario)."');
 window.close();</script>";
 }
 }else{
 echo "<script type=\"text/javascript\">alert('La respuesta es incorrecta'); return false;</script>";
 }
 }
 }else{
 echo "<script type=\"text/javascript\">alert('El Correo Electronico introducido no existe');</script>";
 }
}
?>
</div>
</body>
</html>

a partir del if(isset($_POST['submit_answ'])) no funciona, la cosa es que quiero que todo se haga en la misma pagina, osea, que en el form no redireccione a otra pagina.
Un saludo, espero tu respuesta.

3 respuestas

Respuesta
1

¿Cuándo dices que no funciona es que no se ejecuta o que no llega allí?

Yo te reconedaria recoger las variables de $:POST en variables normales "$submit_answ, $submit_pass"

Y verificar con un var_dump() si esta rellenar, de manera que puedas saber si el problema esta en el código o en el formulario que envía las variables, o que en su defecto las recoges mal.

Si me dieras todo el código, podría decirte, pero en principio no le veo errores grandes que puedan ser derivados edel código, puede que las variables que recojas no este bien o que las condicionales nunca se cumplan.

a lo que me refiero es a que no ejecuta el código a partir de $_POST['submit_answ'] directamente se reinicia (vuelve al principio), y el código que publique es todo el código que he escrito.

Parece que el código esta bien, de todas formas, pásame un fichero en el que pueda hacer pruebas, exporta tu table y/o BBDD para que pueda hacerte un par de pruebas.

De todas formas es un poco lio de código, muchas cosas tienes metidas en "echo" cuando realmente no es necesario ya que puedes usar EOT o echo sin escapar las comillas dobles.

Un echo puede ser de este tipo

echo "<div class='prueba'><a href='milink.php'>Este es mi Link</a></div>

Por lo que simplificas mucho el código y te quitas de problemas ya que a lo mejor lo que te falla es el javascript

Respuesta
1

He analizado un poco tu código y creo que se lo que te pasa.

Por lo que veo, estas intentando que un usuario ponga su email, una vez lo introduce le debe salir la pregunta y cuando la responde le debe pedir nueva contraseña etc..

El problema que creo que tienes, es que controlas un post que al enviar (recargar) no está enviando el "submit_tail", y entonces no entra en nada una vez envias la pregunta.

El caso es que cuando envías un formulario, este envía el valor de los input que contenga, no de todos los formularios de la página. En tu caso el formulario que tiene el campo necesario apra que empiece todo el proceso, se queda arriba.

Soluciones: O bien planteas que cada input que se agregue, sea al mismo formulario todo, creo que usando solo el primero y cerrandolo al final de todo bastaría, o bien usa ajax y separa los procesos, es lo que yo haría realmente.

Espero haberte ayudado, si me equivoco en el planteamiento dimelo

Suerte!

Wtf no vi la fecha de posteo, no se como la web sugiere esto...

Respuesta
-1

En los videos de http://www.dreamweaver-tutoriales.com explicamos cómo hacer esto paso a paso.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas