Foros del Web » Programando para Internet » PHP »

PHP OO Sensibilidad Mayusculas/Minusculas Login

Estas en el tema de Sensibilidad Mayusculas/Minusculas Login en el foro de PHP en Foros del Web. Buenas noches amigos de Foros del Web , en esta oportunidad vengo a pedir de su ayuda , espero me puedan ayudar. Lo que sucede ...
  #1 (permalink)  
Antiguo 15/04/2014, 00:11
Avatar de nexus44  
Fecha de Ingreso: octubre-2012
Ubicación: Piura
Mensajes: 108
Antigüedad: 11 años, 6 meses
Puntos: 1
Exclamación Sensibilidad Mayusculas/Minusculas Login

Buenas noches amigos de Foros del Web , en esta oportunidad vengo a pedir de su ayuda , espero me puedan ayudar.

Lo que sucede he realizado un login de 3 niveles de acceso funciona perfecto , el problema esta , en como "Verificar la sensibilidad de palabras , entre un password con letra mayuscula y el resto por igual"

Ejemplo:

Usuario : Admin - Password: HOLa

Para que me deje accesar , debe estar escrito tal y como estan los datos en la parte superior , si es lo contrario me marque error.

Como creen que podria realizarlo , espero me puedan dar una mano con esto !

GRACIAS DE ANTE MANO

Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3.  
  4.  
  5. if(!empty($_POST['enviar'])){
  6.  
  7.         $usuario=$_POST['usuario'];
  8.         $password=$_POST['password'];
  9.         $nivel=$_POST['nivel'];
  10.        
  11.         if($nivel=='1'){
  12.         $a=mysql_query("SELECT * FROM administrativo WHERE adm_codigo='".$usuario."' and adm_clave='".$password."'");
  13.         if(mysql_num_rows($a)!=0){
  14.        
  15.          $_SESSION['adm_codigo']=$usuario;
  16.  
  17.              
  18.           header("Location: administracion.php?cod=$usuario");
  19.          
  20.         }
  21.         else
  22.         {
  23.             header("Location: index.php?errorusuario=si");
  24.        
  25.         }
  26.        
  27.             }
  28.            
  29.            
  30.                 if($nivel=='2'){
  31.         $a=mysql_query("SELECT * FROM docentes WHERE doc_codigo='".$usuario."' and doc_clave='".$password."'");
  32.         if(mysql_num_rows($a)!=0){
  33.        
  34.          $_SESSION['doc_codigo']=$usuario;
  35.  
  36.          
  37.           header("Location: docente.php?cod=$usuario");
  38.        
  39.         }
  40.         else
  41.         {
  42.             header("Location: index.php?errorusuario=si");
  43.        
  44.         }
  45.        
  46.             }
  47.            
  48.                         if($nivel=='3'){
  49.         $a=mysql_query("SELECT * FROM alumno WHERE alucodigo='".$usuario."' and alu_clave='".$password."'");
  50.         if(mysql_num_rows($a)!=0){
  51.        
  52.          $_SESSION['alucodigo']=$usuario;
  53.    
  54.           header("Location: estudiantes.php?cod=$usuario");
  55.        
  56.         }
  57.         else
  58.         {
  59.             header("Location: index.php?errorusuario=si");
  60.        
  61.         }
  62.        
  63.             }
  64.  
  65. }
  66.  
  67.  
  68.  
  69. ?>
__________________

"Nuestra capacidad se aleja de la Humanidad"
  #2 (permalink)  
Antiguo 15/04/2014, 00:45
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Sensibilidad Mayusculas/Minusculas Login

Tan solo tiene que decirle si usuario tal cual se registro es igual a DB o usuario es minusculas igual a DB, ejemplo:

Código PHP:
Ver original
  1. <?php
  2.  
  3. if($usuario != user_db || strtolower($usuario) != user_db) {
  4.  
  5. echo 'Usuario no encontrado';
  6.  
  7. }else {
  8.  
  9. echo 'Usuario encontrado con minusculas o tal cual se registro';
  10.  
  11. }
  12.  
  13. ?>

Espero que te sirva, un saludo.
  #3 (permalink)  
Antiguo 15/04/2014, 11:02
Avatar de nexus44  
Fecha de Ingreso: octubre-2012
Ubicación: Piura
Mensajes: 108
Antigüedad: 11 años, 6 meses
Puntos: 1
Respuesta: Sensibilidad Mayusculas/Minusculas Login

Gracias por responder , lo acabo de probar y no me funcionan sabiendo que la instrucción strtolower esta convirtiendo a minúsculas , por lo manto si tengo un password = adMiN .

Que otra solucion me podria dar? quise intentarlo hacer con la instruccion trim.
__________________

"Nuestra capacidad se aleja de la Humanidad"
  #4 (permalink)  
Antiguo 15/04/2014, 11:24
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Sensibilidad Mayusculas/Minusculas Login

Por principio de cuentas, no uses los datos tal cual los recibes del formulario, pueden meterte código malicioso. Luego, si encriptas o haces hash al password, éste logrará el efecto de ser sensible a mayúsculas / minúsculas.

Finalmente si a tu tabla en el campo de usuario le pones el atributo 'binary' igualmente hará la búsqueda sensible.
  #5 (permalink)  
Antiguo 15/04/2014, 11:34
fiu
 
Fecha de Ingreso: diciembre-2006
Ubicación: Barcelona
Mensajes: 128
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Sensibilidad Mayusculas/Minusculas Login

Hola, yo diría que debes tener la base de datos en latin1_swedish_ci o utf_general_ci o loquesea_ci, lo que significa Case Insensitive, así que al preguntarle directamente en la consulta si alu_clave='HOla', pues aunque en el campo tu veas 'hoLA' al no ser sensive a mayusculas te va a decir que es correcto.
Una solución podría ser cambiar la tabla o el campo a una colacion terminada de _cs o _bin, o quizá haya alguna función de mysql que respete las mayusculas incluso en una colación _ci. También podrías pasar el valor de la base de datos a una variable antes de compararla a ver si así te lo respeta, pero sería una carga innecesaria i mucho código creo yo.

EDIT: acabo de leer lo de ocp001a i sería mejor que lo que yo dije xD

Etiquetas: mayusculas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:49.