Tengo una base de datos y a la hora de registrar en ella el tipico login, distingue entre mayúsculas y minúsculas, es decir, que podría crear dos usuarios llamados "Aitor" y "aitor" sin problema.
<?php
if(isset($_POST['user']) && strlen($_POST['user'])>0 &&
isset($_POST['password']) && strlen($_POST['password'])>0 &&
isset($_POST['password2']) && strlen($_POST['password2'])>0 &&
isset($_POST['email']) && strlen($_POST['email'])>0){
if($_POST['password'] == $_POST['password2']){
$user = $_POST['user'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$email = $_POST['email'];
if (!isset($_REQUEST['showemail'])){$showemail = false;}else{$showemail = true;}
try {
$con = new PDO('mysql:host=***********;dbname=**********', "****", "******");
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$nombre_repetido = $con->query('SELECT USER FROM registro');
$usuario_repetido = false;
foreach($nombre_repetido as $row){
if($row[0] == $user){
$usuario_repetido = true;
break;}
}
if($usuario_repetido == false){
$return = $con->query("INSERT INTO registro (USER,PASSWORD,EMAIL,SHOWEMAIL)
VALUES ('$user','$password','$email','$showemail')");
header("Location:Registrado.php");
}else{header("Location:Existente.php");}
}catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}}else{
header("Location:Diferente.php");
}
}else{
header("Location:index.php");
}
?>
¿Qué falla?
EDIT:
He hecho la siguiente estupidez para saber que es lo que está fallando:
<?php
$user = "casa";
$comparar = "caSa";
if($user === $comparar)
{echo 'Misma palabra';}else{echo 'No es la misma palabra';}
?>
El resultado:
No es la misma palabra.
De modo qué, tenemos que la culpa la tiene el if, que no lo compara bien. (En verdad si lo compara bien, pero no como yo quiero) ¿alguna idea?
VUELVO A EDITAR:
SOLUCIÓN: Usar la función strnatcasecmp http://php.net/manual/es/function.strnatcasecmp.php (http://php.net/manual/es/function.strnatcasecmp.php) tal que así
if(strnatcasecmp($row[0], $user) == 0){
(...)
}