Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/07/2003, 13:47
josemi
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Creo que te has complicado con las condiciones, y todavia mas al meter el xor. Incluso me lio con los parentesis. Voy a ver si me aclaro. Tienes:

(A xor B) || (A && B)

Siendo

A: !isset($_POST['usuario'])
B: !isset($_POST['contra'])

Como es un ||, y se evalua en cortocircuito, la expresion sera cierta cuando una de las 2 condiciones sea cierta. La segunda solo es cierta cuando ambos a la vez no estan definidos (usuario y contra). Y el xor es cierto cuando "either $a or $b is TRUE, but not both", es decir, cuando A o B es true, pero no cuando A y B son true a la vez. Asi que en teoria esta bien.

Pero si lo que quieres es que redireccione cuando 'usuario' o 'contra' estan sin definir, yo creo que es mas sencillo:
Código PHP:
if (!isset($_POST['usuario']) || !isset($_POST['contra'])) { 
Aunque puede que te siga fallando. Porque estas comprobando si no estan definidas, no que si no estan vacias. Usa empty() (www.php.net/empty) en lugar de isset(). Porque si has definido el formulario asi:

<input type="text" name="usuario" value="">

$_POST['usuario'] siempre estara definida, pero con el valor que le has puesto por defecto en el value (o al menos es asi como yo lo uso).

Asi que usa empty() en lugar de isset().

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.