Pues es complicado saberlo revisando 83 líneas de código que no he hecho. Lo he tabulado para organizar y aclarar el código un poco, te lo pego aquí y pregunto unas cuestiones dependiendo del número de línea:
<?php
//Incluimos datos de conexión
include('conexion.php');
// Si están vacíos el campo
if (!isset($_SESSION['nombre_usuario']) && empty($_POST['usuario'])) {
echo "
<script>alert('Faltan por rellenar el usuario y la contraseña.')
history.back(1);
</script>";
} else {
if ($_POST['usuario']) {
// Comprobacion del envio del nombre de usuario y clave.
$usuario=$_POST['usuario'];
$clave=$_POST['clave'];
$encriptada=md5($_POST['clave']); // Encriptamos la clave.
if ($clave==NULL) {
echo "Error: El campo de clave esta vacio.";
} else {
//Consultamos si el nombre del usuario
$consultausuariocliente=conexion("SELECT nombre_usuario FROM clientes WHERE nombre_usuario = '$usuario'");
$validarcliente = mysql_num_rows($consultausuariocliente);
//Si no existe ese usuario, volverá al formulario
if($validarcliente<0|$validarencargado<0){
echo "
<script>alert('No existe usuario')
history.back(1);
</script>";
}
if($validarcliente>0){
// Consultamos la clave del usuario introducido, validamos el nombre de usuario si es cliente
// y la comparamos.
$comprobarcliente= conexion("SELECT nombre_usuario,contrasenha FROM clientes WHERE nombre_usuario = '$usuario'");
$datoscliente= mysql_fetch_array($comprobarcliente);
if($datoscliente['contrasenha'] != $encriptada) {
echo "
<script>alert('Login Incorrecto')
history.back(1);
</script>";
} else {
$informacioncliente= conexion("SELECT * FROM clientes WHERE nombre_usuario = '$usuario'");
$datoscl= mysql_fetch_array($informacioncliente);
$_SESSION["nombre_usuario"] = $datoscl['nombre_usuario'];
$_SESSION["email"] = $datoscl['email'];
echo "
Te has identificado correctamente ".$_SESSION['nombre_usuario'].",
ya puedes acceder a tu <a href=\"cliente.php\" />página de cliente</a>.";
}
}
//Consultamos si el nombre del usuario
$consultausuarioencargado=conexion("SELECT nombre_usuario FROM encargados WHERE nombre_usuario = '$usuario'");
$validarencargado = mysql_num_rows($consultausuarioencargado);
if($validarencargado>0){
// Consultamos la clave del usuario introducido, validamos el nombre de usuario si es encargado
// y la comparamos.
$comprobarencargado= conexion("SELECT nombre_usuario,contrasenha FROM clientes WHERE nombre_usuario = '$usuario'");
$datosencargado= mysql_fetch_array($comprobarencargado);
if($datosencargado['contrasenha'] != $encriptada) {
echo "
<script>alert('Login Incorrecto')
history.back(1);
</script>";
} else {
// Esta todo correcto asi que guardamos el nombre y email en sesiones para luego mostrarlas.
$informacionencargado = conexion("SELECT * FROM encargados WHERE nombre_usuario = '$usuario'");
$datosen = mysql_fetch_array($informacion);
$_SESSION["nombre_usuario"] = $datos['nombre_usuario'];
$_SESSION["email_usuario"] = $datos['email'];
echo "
Te has identificado correctamente ".$_SESSION['nombre_usuario'].",
ya puedes acceder a tu <a href=\"administracion.php\" />pagina de encargado</a>.";
}
}
}
}
}
//Cerramos la base de datos
mysql_close();
?>
Línea 35, en el IF con dos condiciones "concatenadas", creo que no está bien escrito, en vez de poner "|", pon "OR" o "||", revisa esto:
http://www.forosdelweb.com/f18/puede-po ... if-613132/
En ese mismo punto estás preguntando en la condición el valor de $validarencargado, cuando no está declarado todavía hasta la línea 71, asi que obviamente solo depende de la primera variable, te sobra la segunda instrucción.
Otra pregunta, ¿en la tabla clientes están todos los usuarios no? Tanto encargados como usuarios normales. Sino no tiene sentido lo que haces.
Supongo que el campo 'contrasenha' de las tablas incluye la clave encriptada, sino es imposible que te coincida con tus comparaciones.
Para saber el punto en el que vaya tendrás que ir probando, por ejemplo, en la línea 49 compruebas si coincide la contraseña, pues haz encima del echo esto:
echo $datoscliente['contrasenha'];
Con la de encargado igual, con ello comprobarás si recibes correctamente las contreñas para compararlas.
Salu2.