el problema es que si el usuario sí existe y el email también da ambos por válidos cuando tiene que ser que no para no duplicar usuario o multicuenta.
si el usuario no existe pero el email sí da también ambos por válidos
y si el usuario sí existe pero el email no también da ambos por válidos.
no encuentro el error, no entiendo por qué a la hora de comparar valores pasados por form y valores de SELECT lo da todo por válido.
este es mi objeto al completo, es todo lo que hay en el documento he comentado los if concretos que no comparan correctamente los valores.
Gracias!
<?php
class Validar extends Conectar
{
private $arr = array();
private $salida = array();
public function datos_usuarios($usuarioc, $emailc, $passwdc, $passwd2c)
{
// consulto usuario y email de usuarios
// conciden a la vez el usuario y el email
// o coincide solo el usuario
// o coincide solo el email
$validacion="SELECT usuario, email, passwd FROM usuarios where (usuario='".$usuarioc."' AND email='".$emailc."')
OR (usuario='".$usuarioc."') OR (email='".$emailc."')";
//si no encuentra el usuario y la contraseña entonces es que se puede registrar
if(!empty($validación))
{
$this->salida['true'] = true;
}
$result_conexion=Conectar::connect($validacion);
//asigno los valores a un array con bucle while
while($validacion=mysql_fetch_array($result_conexion))
{
$this->arr[] = $validacion;
}
/*var_dump($this->arr);
echo "<br>";
print_r($emailc);
echo "<br>";*/
//var_dump($this->arr['email']);
//comparo los valores $usuario, $passwd y $email del usuario
////////////////////////////////////
//buscando coincidencias de usuario
////////////////////////////////////
foreach($this->arr as $usuario=>$valor)
{
//#######################################################################
//aquí el primer problema, se cumpla o no la condición siempre va al else
//#######################################################################
if($usuarioc == $valor)
{
$this->salida['usuario'] = "El usuario ya existe <br>";
}
else
{
$this->salida['usuario'] = "Usuario correcto <br>";
}
}
//////////////////////////////////
//buscando coincidencias de email
//////////////////////////////////
foreach($this->arr as $email=>$valor)
{
//#############################################################################
//aquí está el segundo problema, se cumpla o no la condición siempre va al else
//#############################################################################
if($emailc == $valor)
{
$this->salida['email'] = "El E-mail ya existe <br>";
}
else
{
$this->salida['email'] = "E-mail es correcto <br>";
}
}
///////////////////////////
//validando la contraseña
///////////////////////////
//si $passwd y $passwd2 no coinciden
if($passwdc !== $passwd2c)
{
$this->salida['passwd'] = "Las contraseñas no coinciden <br>";
}
else
{
$this->salida['passwd'] = "Contraseña válida <br>";
}
//si la contraseña es insegura (inferior a 6 caracteres)
if(strlen($passwdc) < 6)
{
$this->salida['passwd2'] = "La contraseña tiene menos de 6 caracteres <br>";
}
else
{
$this->salida['passwd2'] = "La contraseña tiene 6 o más caracteres <br>";
}
////////////////////////////
//devuelve el array
////////////////////////////
return $this->salida;
}
}
?>