Estoy desorientado ya que por lo poco que se de PHP, no veo nada mal en el código, pensando ademas que en dos lugares si funciona y en otro no, y de haber algún error no debería funcionar en ninguno de los tres lugares.
En la función del cambio de password, chequea que se halla tipeado correctamente el viejo password, obliga a retipear el nuevo y si no coincide lo avisa, como asi también chequea la longitud del password nuevo y también si se han completado todos los campos por lo que si alguno estuviera incompleto también lo avisa.
El problema ya entrando mas específicamente sucede que siempre me devuelve el mismo aviso
El nuevo password debe tener entre 6 y 16 caracteres.
Intentelo nuevamente.
Osea tipeo mal el viejo password me sale el aviso anterior: Tipeo correctamente el viejo password y cargo el nuevo con una longitud de por ejemplo 10 caracteres y lo retipeo correctamente y me vuelve a salir el mismo mensaje, cuando en realidad me tendría que haber realizado el cambio de password.
No entiendo que es lo y repito porque en mi pc y en un hosting si funciona y en otro no (ambos hostings no son gratuitos).
Les pego el código
El del formulario es
Código PHP :
<?php include_once('include_fns.php'); session_start(); check_auth_user(); display_password_form(); ?> <?php function display_password_form() { // muestra el formulario de cambio de password ?> <link rel="stylesheet" href="../styles.css" type="text/css"> <link rel="stylesheet" href="../css/template.css" type="text/css"> <table width="1010" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="20" rowspan="3"> </td> <td width="990"><table width="990" border="0" bgcolor="#A8A8A8" class="texts-panel-encabezado"> <tr> <td rowspan="2" width="290"><img src="../images/logo-reparo.png" border="0" /></td> <td width="440">Panel Administrativo</td> <td width="70"> </td> <td width="70"><a href="panel.php"><img src="../images/panel.png" width="50" height="50" border="0" /></a></td> <td width="120"><div align="center"><a href="logout.php"><img src="../images/logout.png" width="50" height="50" border="0" /></a></div></td> </tr> <tr> <td class="texts-panel-encabezado2">Cambio de password </td> <td> </td> <td class="texts-panel-encabezado2">Volver al Panel</td> <td class="texts-panel-encabezado2"><div align="center">Desconectarse</div></td> </tr> </table></td> </tr> <tr> <td height="60"> </td> </tr> <tr> <td> <form action="change_password.php" method="post"> <table width="500" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFEECC"> <tr> <td width="50"> </td> <td width="400"><table width=400 align="center" cellpadding=2 cellspacing=0> <tr> <td colspan="2" class="texts-panel"> </td> </tr> <tr> <td width="257" class="texts-panel">Password actual:</td> <td width="133"><input type="password" name="old_passwd" size=20 maxlength=16 /></td> </tr> <tr> <td colspan="2"> </td> </tr> <tr> <td colspan="2" class="texts-panelbold">El nuevo password debe tener entre 6 y 16 caracteres.</td> </tr> <tr> <td class="texts-panel">Nuevo password:</td> <td><input type="password" name="new_passwd" size=20 maxlength=16 /></td> </tr> <tr> <td class="texts-panel">Repita el nuevo password:</td> <td><input type="password" name="new_passwd2" size=20 maxlength=16 /></td> </tr> <tr> <td height="40" colspan=2 align="center"> </td> </tr> <tr> <td colspan=2 align="center"><input name="submit" type="submit" value="Cambiar password" /></td> </tr> <tr> <td colspan=2 align="center"> </td> </tr> </table></td> <td width="50"> </td> </tr> </table></form> </td> </tr> </table> <br /> <?php }; ?>
El resto del código es
Código PHP :
<?php include_once('include_fns.php'); session_start(); function filled_out($form_vars) { // comprueba que cada variable tiene un valor foreach ($form_vars as $key => $value) { if (!isset($key) || ($value == "")) return false; } return true; } function change_password($username, $old_password, $new_password) // cambiar la contraseña de usuario/a OLD_PASSWORD new_password // devuelve verdadero o falso { // si la contraseña anterior es correcta // cambia la contraseña con el nuevo password y devuelve true // sino devuelve false if (login($username, $old_password)) { if (!($handle = db_connect())) return false; $result = $handle->query("update writers set password = sha1('$new_password') where username = '$username'"); if (!$result) return false; // no cambiada else return true; // cambio exitoso } else echo '<table width="1010" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="20"> </td> <td width="990" class="texts-panelbold"><div align="center">El viejo password fue mal tipeado.</div></td> </tr> <tr> <td> </td> <td><div align="center"><a href="change_password_form.php"><img src="../images/back.png" width="50" height="50" border="0" /></a></div></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> </table>'; exit; return false; // el viejo password esta mal } ?> <link rel="stylesheet" href="../styles.css" type="text/css"> <link rel="stylesheet" href="../css/template.css" type="text/css"> <table width="1010" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="20" rowspan="4"> </td> <td width="990"><table width="990" border="0" bgcolor="#A8A8A8" class="texts-panel-encabezado"> <tr> <td rowspan="2" width="290"><img src="../images/logo-reparo.png" border="0" /></td> <td width="440">Panel Administrativo</td> <td width="70"> </td> <td width="70"><a href="panel.php"><img src="../images/panel.png" width="50" height="50" border="0" /></a></td> <td width="120"><div align="center"><a href="logout.php"><img src="../images/logout.png" width="50" height="50" border="0" /></a></div></td> </tr> <tr> <td class="texts-panel-encabezado2">Cambio de password </td> <td> </td> <td class="texts-panel-encabezado2">Volver al Panel</td> <td class="texts-panel-encabezado2"><div align="center">Desconectarse</div></td> </tr> </table></td> </tr> <tr> <td height="60"> </td> </tr> <tr> <td class="texts-panelbold"> <?php check_auth_user(); if (!filled_out($HTTP_POST_VARS)) { echo '<table width="1010" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="20"> </td> <td width="990" class="texts-panelbold"><div align="center">No has llenado completamente el formulario.</div></td> </tr> <tr> <td> </td> <td class="texts-panelbold"><div align="center">Por favor, intentalo nuevamente.</div></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td><div align="center"><a href="change_password_form.php"><img src="../images/back.png" width="50" height="50" border="0" /></a></div></td> </tr> </table>'; //GALLO do_html_url('admin.php', 'Back to administration menu'); exit; } else { $new_passwd = $HTTP_POST_VARS['new_passwd']; $new_passwd2 = $HTTP_POST_VARS['new_passwd2']; $old_passwd = $HTTP_POST_VARS['old_passwd']; if ($new_passwd!=$new_passwd2) echo '<table width="1010" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="20"> </td> <td width="990" class="texts-panelbold"><div align="center">Error al reingresar del nuevo passwords.</div></td> </tr> <tr> <td> </td> <td class="texts-panelbold"><div align="center">Vuelva a intentarlo con mas cuidado.</div></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td><div align="center"><a href="change_password_form.php"><img src="../images/back.png" width="50" height="50" border="0" /></a></div></td> </tr> </table>'; else if (strlen($new_passwd)>16 || strlen($new_passwd)<6) echo '<table width="1010" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="20"> </td> <td width="990" class="texts-panelbold"><div align="center">El nuevo password debe tener entre 6 y 16 caracteres.</div></td> </tr> <tr> <td> </td> <td class="texts-panelbold"><div align="center">Intentelo nuevamente.</div></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td><div align="center"><a href="change_password_form.php"><img src="../images/back.png" width="50" height="50" border="0" /></a></div></td> </tr> </table>'; else { // intento de actualización if (change_password($HTTP_SESSION_VARS['auth_user'], $old_passwd, $new_passwd)) echo '<table width="1010" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="20"> </td> <td width="990" class="texts-panelbold"><div align="center">El password fue cambiado exitosamente.</div></td> </tr> <tr> <td> </td> <td class="texts-panelbold"><div align="center">Por favor tome nota del nuevo password y guardelo en un lugar seguro.</div></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td><div align="center"><a href="panel.php"><img src="../images/panel.png" width="50" height="50" border="0" /></a></div></td> </tr> </table>'; else echo '<table width="1010" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="20"> </td> <td width="990" class="texts-panelbold"><div align="center">El password no pudo ser cambiado.</div></td> </tr> <tr> <td> </td> <td class="texts-panelbold"><div align="center">Intentelo nuevamente mas tarde.</div></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td><div align="center"><a href="panel.php"><img src="../images/panel.png" width="50" height="50" border="0" /></a></div></td> </tr> </table>'; } } //GALLO do_html_url('admin.php', 'Back to administration menu'); ?></td> </tr> <tr> <td> </td> </tr> </table>