Hola, estoy realizando un trabajo para la carga de novedades o noticias por parte de mi cliente. Tiene además la posibilidad de cambiar el password con el cual se accede al panel de carga de noticias. Lo he probado en mi pc (en la cual tengo instalado el APACHE), y también en dos hostings distintos (Los dos hosting no son gratuitos) y en los tres lugares funciona perfectamente, salvo cuando intento cambiar el password. He aquí mi problema, en mi pc como en uno de los hosting, el cambio de password funciona correctamente, pero en el otro hosting no.
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">&nbsp;</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">&nbsp;</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>&nbsp;</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">&nbsp;</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">&nbsp;</td>
           <td width="400"><table width=400 align="center" cellpadding=2 cellspacing=0>
             <tr>
               <td colspan="2" class="texts-panel">&nbsp;</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">&nbsp;</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">&nbsp;</td>
             </tr>
             <tr>
               <td colspan=2 align="center"><input name="submit" type="submit" value="Cambiar password" /></td>
             </tr>
             <tr>
               <td colspan=2 align="center">&nbsp;</td>
             </tr>
           </table></td>
           <td width="50">&nbsp;</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">&nbsp;</td>
    <td width="990" class="texts-panelbold"><div align="center">El viejo password fue mal tipeado.</div></td>
  </tr>
  <tr>
    <td>&nbsp;</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>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</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">&nbsp;</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">&nbsp;</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>&nbsp;</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">&nbsp;</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">&nbsp;</td>
    <td width="990" class="texts-panelbold"><div align="center">No has llenado completamente el formulario.</div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td class="texts-panelbold"><div align="center">Por favor, intentalo nuevamente.</div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</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">&nbsp;</td>
    <td width="990" class="texts-panelbold"><div align="center">Error al reingresar del nuevo passwords.</div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td class="texts-panelbold"><div align="center">Vuelva a intentarlo con mas cuidado.</div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</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">&nbsp;</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>&nbsp;</td>
    <td class="texts-panelbold"><div align="center">Intentelo nuevamente.</div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</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">&nbsp;</td>
    <td width="990" class="texts-panelbold"><div align="center">El password fue cambiado exitosamente.</div></td>
  </tr>
  <tr>
    <td>&nbsp;</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>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</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">&nbsp;</td>
    <td width="990" class="texts-panelbold"><div align="center">El password no pudo ser cambiado.</div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td class="texts-panelbold"><div align="center">Intentelo nuevamente mas tarde.</div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</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>&nbsp;</td>
     </tr>
   </table>