Comunidad de diseño web y desarrollo en internet online

validación de varios usuarios

Citar            
MensajeEscrito el 04 Nov 2010 01:27 am
Mi problema es el siguiente, tengo una paginita de usuario y contraseña la cual tiene un detalle que solo me valida un usuario nada mas y quiero ponerle mas usuarios, este es el codigo

<?php
class login {
// Inicia sesion
public function inicia($tiempo=3600, $usuario=NULL, $clave=NULL) {
if ($usuario==NULL && $clave==NULL) {
// Verifica sesion
if (isset($_SESSION['idusuario'])) {
//echo "Estas logeado";
} else {
// Verifica cookie
if (isset($_COOKIE['idusuario'])) {
// Restaura sesion
$_SESSION['idusuario']=$_COOKIE['idusuario'];
} else {
// Si no hay sesion regresa al login
header( "Location: index.php" );
}
}
} else {
$this->verifica_usuario($tiempo, $usuario, $clave);
}
}
// Verifica login
private function verifica_usuario($tiempo, $usuario, $clave) {
if ($usuario=="grandreu" && $clave=="quintareal") {
// Si la clave es correcta
$idusuario=$this->codificar_usuario($usuario);
setcookie("idusuario", $idusuario, time()+$tiempo);
$_SESSION['idusuario']=$idusuario;
header( "Location: pass/home.php" );
} else {
// Si la clave es incorrecta
header( "Location: index.php?error=1" );
}
}
// Codifica idusuario
private function codificar_usuario($usuario) {
return md5($usuario);
}
}
?>

como veran solo admite un usuario, por cierto esta validación la saque de aqui y me a funcionado perfecto, espero me pueda ayudar con lo mas simple posible, saludos :roll:

Por diepdrako

12 de clabLevel



 

México

firefox
Citar            
MensajeEscrito el 04 Nov 2010 03:06 am
pues me pareció bastante interesante este código, y de hecho creo que lo usaré en algún lado xD

No se hasta qué punto entiendes el código que has puesto, o si nada mas lo copiaste y pegaste. De hecho, tiene un cierto grado de complejidad, entenderlo al 100% no va a ser fácil si no se está familiarizado con el lenguaje. De todas maneras, para lograr lo que pides (poner mas de una combinación de usuario y contraseña para acceder) basta entender una sola parte, es la línea #25:

Código PHP :

if ($usuario=="grandreu" && $clave=="quintareal") { //<---- AQUIIIII!!!!!1
      // Si la clave es correcta
      $idusuario=$this->codificar_usuario($usuario);
      //..... y todo lo demás 
} else {
      // Si la clave es incorrecta
      header( "Location: index.php?error=1" );
}


Lo que ahí dice es "si el usuario es grandreu y la clave es quintareal, entonces ES VERDADERO". Esa parte es la importante, cómo lograr que sea verdadero ese pedacito. Dependiendo de la cantidad de usuarios que quiera dar acceso, si serán muchos y deben editar ellos mismos sus preferencias, lo mejor siempre será guardar esos datos, encriptados, en una base de datos. Pero si lo deseado es algo más "casero" puede funcionar tal y como lo lleva hasta el momento, con un arreglito:

Código PHP :

   private function verifica_usuario($tiempo, $usuario, $clave) {
      $acceso = false; //esta variable controlará el acceso
      //se genera un array asociativo que guarda como nombre de variable el nombre de usuario
      //y los valores como las contraseñas. Ojo con la coma al final!
      $lista_usuarios = array(
         "usuario1" => "contraseña1",
         "usuario2" => "contraseña2",
         "usuario3" => "contraseña3");
      
      //a continuación se hace un ciclo que recorra todo el array.
      for($lista_usuarios as $clave => $valor){
         //comparamos los nombres de las variables con los nombres de usuarios
         //y los valores con las claves
         if($usuario==$clave && $valor==$clave){
            //si hay coincidencias, se da acceso poniendo la variable en true
            //y se rompe el ciclo con el "break"
            $acceso = true;
            break;
         }
      }
      
      if ($acceso) {
         // Si la clave es correcta
         $idusuario=$this->codificar_usuario($usuario);
         setcookie("idusuario", $idusuario, time()+$tiempo);
            //....  todo lo demás


De hecho, tal vez exista algo mas sencillo pero yo tampoco soy experto en php... hasta acá me llega el conocimiento :p

Por gosunkugi

Claber

251 de clabLevel

1 tutorial

Genero:Masculino  

Kuri - frontend dev - XueZhongWen!

safari
Citar            
MensajeEscrito el 04 Nov 2010 03:11 am
RELOL!! que pena me equivoqué de la manera mas vil :shock: hay dos variables con el mismo nombre dentro del ciclo... he cambiado $clave por $nombre y ahora si todos felices

Código PHP :

for($lista_usuarios as $nombre => $valor){
         //comparamos los nombres de las variables con los nombres de usuarios
         //y los valores con las claves
         if($usuario==$nombre && $valor==$clave){
            //si hay coincidencias, se da acceso poniendo la variable en true
            //y se rompe el ciclo con el "break"
            $acceso = true;
            break;
         }
      }

Por gosunkugi

Claber

251 de clabLevel

1 tutorial

Genero:Masculino  

Kuri - frontend dev - XueZhongWen!

safari
Citar            
MensajeEscrito el 04 Nov 2010 11:40 am
K tal, gracias por la ayuda y la atención, pero no jala mira

<?php
class login {
// Inicia sesion
public function inicia($tiempo=3600, $usuario=NULL, $clave=NULL) {
if ($usuario==NULL && $clave==NULL) {
// Verifica sesion
if (isset($_SESSION['idusuario'])) {
//echo "Estas logeado";
} else {
// Verifica cookie
if (isset($_COOKIE['idusuario'])) {
// Restaura sesion
$_SESSION['idusuario']=$_COOKIE['idusuario'];
} else {
// Si no hay sesion regresa al login
header( "Location: index.php" );
}
}
} else {
$this->verifica_usuario($tiempo, $usuario, $clave);
}
}
// Verifica login
private function verifica_usuario($tiempo, $usuario, $clave) {
$acceso = false; //esta variable controlará el acceso
//se genera un array asociativo que guarda como nombre de variable el nombre de usuario
//y los valores como las contraseñas. Ojo con la coma al final!
$lista_usuarios = array(
"usuario1" => "1",
"usuario2" => "2",
"usuario3" => "contraseña3");

//a continuación se hace un ciclo que recorra todo el array.
for($lista_usuarios as $nombre => $valor){
//comparamos los nombres de las variables con los nombres de usuarios
//y los valores con las claves
if($usuario==$nombre && $valor==$clave){
//si hay coincidencias, se da acceso poniendo la variable en true
//y se rompe el ciclo con el "break"
$acceso = true;
break;
}
}
if ($acceso) {
// Si la clave es correcta
$idusuario=$this->codificar_usuario($usuario);
setcookie("idusuario", $idusuario, time()+$tiempo);
//.... todo lo demás
$_SESSION['idusuario']=$idusuario;
header( "Location: pass/home.php" );
} else {
// Si la clave es incorrecta
header( "Location: index.php?error=1" );
}
}
// Codifica idusuario
private function codificar_usuario($usuario) {
return md5($usuario);
}
}
?>

Por diepdrako

12 de clabLevel



 

México

firefox
Citar            
MensajeEscrito el 04 Nov 2010 11:45 am
La verdad como lo mencionaste, soy mas que novato en esto, intente varias formas de validar un acceso a una pagina, y esta fue la que me funciono, ya que no se nada de base de datos ni php igual si existe otra manera pero que me permita tener varios usuarios yo feliz

y otra vez gracias por todo

Por diepdrako

12 de clabLevel



 

México

firefox
Citar            
MensajeEscrito el 04 Nov 2010 02:03 pm
ummm al parecer todo anda bien... cómo se comporta el código? qué error sale? la verdad este código lo modifiqué y no lo ensaye :p ahorita no puedo ensayarlo pero de seguro en estos próximos días lo necesitaré xD pero bueno, mi pregunta es, ¿cuál es el error? simplemente no ingresa o sale un error de php? ¿puedes compartirme la URL de donde lo sacaste para yo mirar en qué contexto está?

Por gosunkugi

Claber

251 de clabLevel

1 tutorial

Genero:Masculino  

Kuri - frontend dev - XueZhongWen!

safari
Citar            
MensajeEscrito el 04 Nov 2010 02:28 pm
La verdad de donde los saque no lo recuerdo, pero los subire a mi servidor para que puedas checar el error

http://www.quintarealsales.com/prueba/index.php

Y te dejo tambein una url con un zip para los archivos que en realidad solo es un archivo el que hace la validación, pero te los dejo

http://www.quintarealsales.com/prueba/login.zip

Saludos y gracias nuevamente!

Por diepdrako

12 de clabLevel



 

México

firefox
Citar            
MensajeEscrito el 05 Nov 2010 05:04 am
compañero no tendo la menor idea que pueda ser :( el error dice que "expecting ';' in D:\Hosting\6246717\html\quintarealsales\prueba\login.class.php on line 56" lo cual dice que hace falta un ; cerca de la línea 56, pero yo he revisado en local y me ha funcionado ok. Revisa tu propio código si le hace falta algún ; En php es vital finalizar cada línea con un punto y coma, salvo por los cierres de corchete. Si hace falta uno, el código no funcionará y mostrará un error tal cual el que se presenta.

Por gosunkugi

Claber

251 de clabLevel

1 tutorial

Genero:Masculino  

Kuri - frontend dev - XueZhongWen!

safari

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.