Suponiendo que el formuario html envía los datos de forma correcta, seria interesante ver que hace la función "limpiar" dado que sale de la verificación en el primer paso, como si los datos no fueran correctos igual yo modificaría un poco el codigo.
Código PHP:
if(!empty($_POST['usuario']) and !empty($_POST['password'])){
$usuario=limpiar($_POST['usuario']);
$contra=limpiar($_POST['password']);
$pa=mysql_query("SELECT * FROM docente WHERE usuario='$usuario'");
$row=mysql_fetch_array($pa));
$hash = password_hash($row['contrasena'], PASSWORD_DEFAULT);
if($row['usuario'] != '' && password_verify($contra, $hash))) {
if($row['estado']=='s'){
$nombre=$row['nombre_docente'];
$nombre=explode(" ", $nombre);
$nombre=$nombre[0];
$_SESSION['user_name']=$nombre;
$_SESSION['tipo_user']=$row['tipo'];
$_SESSION['cod_user']=$row['usuario'];
echo mensajes('Bienvenido<br>'.$row['nombre_docente'].' '.$row['apePa_docente'].''.$row['apeMa_docente'].' ','verde').'<br>';
echo '<center><img src="img/ajax-loader.gif"></center><br>';
echo '<meta http-equiv="refresh" content="2;url=pagina-acceso-restringido.php">';
}else{
echo mensajes('Usted no se encuentra Activo en la base de datos<br>Consulte con su Administrador de Sistema','rojo');
}
}else{
echo mensajes('Usuario y Contraseña Incorrecto<br>','rojo');
echo '<center><a href="login.php" class="btn"><strong>Intentar de Nuevo</strong></a></center>';
}
}else{
echo ' <input type="text" name="usuario" class="input-block-level" placeholder="Documento" autocomplete="off" required>
<input type="password" name="password" class="input-block-level" placeholder="Password" autocomplete="off" required>
<div align="right"><button class="btn btn-large btn-primary" type="submit"><strong>Entrar</strong></button></div>';