Foros del Web » Programando para Internet » PHP »

Busqueda en array asociativo

Estas en el tema de Busqueda en array asociativo en el foro de PHP en Foros del Web. Buenas noches a todos! Tengo el siguiente array asociativo creado: Código PHP: $usuarios_contraseñas  = array     (          "administrador"  =>  "1234" ,           "albert"  =>  "trebla" , ...
  #1 (permalink)  
Antiguo 17/01/2009, 15:55
 
Fecha de Ingreso: febrero-2008
Mensajes: 76
Antigüedad: 16 años, 2 meses
Puntos: 0
Busqueda en array asociativo

Buenas noches a todos!

Tengo el siguiente array asociativo creado:

Código PHP:
$usuarios_contraseñas = array
    (
        
"administrador" => "1234"
        
"albert" => "trebla",
        
"usuari" => "xxx"
    
);

// "usuario" => "contraseña" 
...como puedo hacer una busqueda con un "foreach"...que busque un nombre de usuario ($usuarioFormulario) dentro del array, y si lo encuentra, que mire si su contraseña es la que toca ($contraseñaFormulario).

MUCHAS GRACIAS! :) saludos!
  #2 (permalink)  
Antiguo 17/01/2009, 16:01
 
Fecha de Ingreso: enero-2009
Ubicación: Mexico
Mensajes: 99
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: Busqueda en array asociativo

Yo intentaría algo así:

Código PHP:
$usuarios_contrasenas = Array();

$usuario = new StdClass();
$usuario->nombre 'Nombre';
$usuario->conrasena 'xxx';
$usuarios_contrasenas[$usuario->nombre] = $usuario;

$usuario = new StdClass();
$usuario->nombre 'Nombre 2';
$usuario->conrasena 'xxx';
$usuarios_contrasenas[$usuario->nombre] = $usuario;

$usuario = new StdClass();
$usuario->nombre 'Nombre 3';
$usuario->conrasena 'xxx';
$usuarios_contrasenas[$usuario->nombre] = $usuario;

...

if ( isset(
$usuarios_contrasenas[$_REQUEST['nombre']])&&$usuarios_contrasenas[$_REQUEST['nombre']]->contrasena==$_REQUEST['contrasena']] )
    {
    
//Login Correcto
    


Última edición por codecweb98; 17/01/2009 a las 16:02 Razón: Correción
  #3 (permalink)  
Antiguo 17/01/2009, 16:12
 
Fecha de Ingreso: febrero-2008
Mensajes: 76
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Busqueda en array asociativo

Muchas gracias por tu rápida respuesta codecweb98, pero lo tengo que hacer con el array que ya está creado con esa estructura...

en vez de posición 0, valor x....es posición "nombreUsuario" valor "contraseña"...y se tendría que hacer una búsqueda posición a posición con un foreach, y cuando encontrase una, que mirara el valor...

alguien tiene alguna idea de cómo hacerlo?

GRACIAS!
  #4 (permalink)  
Antiguo 17/01/2009, 16:34
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Busqueda en array asociativo

Código PHP:
foreach($usuarios_contrasenas as $user => $pass) {
  if(
$tuUser == $user && $tuPass == $pass) {
    
$ok TRUE;
  }

PD: No uses ñ en el nombre de una variable.
  #5 (permalink)  
Antiguo 17/01/2009, 17:02
 
Fecha de Ingreso: febrero-2008
Mensajes: 76
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Busqueda en array asociativo

muchas gracias Ronruby, esto es exactamente lo que tenía que hacer

he hecho:

Código PHP:
foreach($usuaris_contrasenyes as $usariArray => $contrasenyaArray)
    {
        if(
$usuari == $usuariArray && $contrasenya == $contrasenyaArray)  
        {
            
$validacio true;
            echo 
"Usuari Validat Correctament...entrant a l'àrea restringida!";
        } 
    } 
...sin embargo al entrar con un usuario y contraseña que existan en el array, no me muestra el echo! la pantalla sale toda blanca...:S

SALUDOS!
  #6 (permalink)  
Antiguo 17/01/2009, 17:05
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Busqueda en array asociativo

Asegurate de que las variables $usuari y $contrasenya estan tomando sus valores correctamente (Que probablemente provienen de un formulario).
  #7 (permalink)  
Antiguo 17/01/2009, 17:14
 
Fecha de Ingreso: febrero-2008
Mensajes: 76
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Busqueda en array asociativo

Hago esto al principio de la página...y me las coge correctamente (porque dentro creo alguna cookie y me lo hace bien)

Código PHP:
$usuari $_POST['usuari'];
    
$contrasenya $_POST['contrasenya']; 
...pero al mirar si esta este usuario y contraseña en el array, en teoría no lo hace...porque sino me mostraría el echo (que lo he puesto para comprobar si lo hago bien, luego cuando funcione voy a dejar solo la variable $validacio, que la voy a consultar desde una pagina "secreta", y si está a true, voy a mostrar el contenido secreto, si está a false voy a mostrar error).

GRACIAS! ...alguna solucion?
  #8 (permalink)  
Antiguo 17/01/2009, 17:20
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Busqueda en array asociativo

He hecho una prueba y funciona bien.

Asegurate que las variables estan bien. No crees una "cookie", haz un echo.

Código PHP:
$array = array(
                
'jaja' => 'jeje',
                
'jojo' => 'juju',
                
'hola' => 'adios'
);

$user 'hola';
$pass 'adios';

foreach(
$array as $usuario => $password) {
    if(
$user == $usuario && $pass == $password) {
        
$validacion TRUE;
        echo 
'si';
        break;
    }

  #9 (permalink)  
Antiguo 18/01/2009, 07:48
 
Fecha de Ingreso: febrero-2008
Mensajes: 76
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Busqueda en array asociativo

Funciona, SOLUCIONADO!

muchas gracias Ronruby!
  #10 (permalink)  
Antiguo 18/01/2009, 10:59
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Busqueda en array asociativo

No es necesario realizar un ciclo para verificar eso. Basta usar in_array() o isset() y luego comparar el password:

Código PHP:
$array = array(
                
'jaja' => 'jeje',
                
'jojo' => 'juju',
                
'hola' => 'adios'
);

$user 'hola';
$pass 'adios';

if(isset(
$array[$user]) && $pass == $array[$user]) {
    
$validacion TRUE;
    echo 
'si';

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 05:29.