elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Consulta de logueo y manejo de usuarios
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Consulta de logueo y manejo de usuarios  (Leído 3,543 veces)
DiTeN

Desconectado Desconectado

Mensajes: 83


Ver Perfil
Consulta de logueo y manejo de usuarios
« en: 23 Enero 2011, 15:50 pm »

Estimado foristas,

Les dejo una duda a ver si alguien me guia para evacuarla, resulta que casi ya he terminado un sistema con php y mysql, pero ahora lo que me quita el sueño es el manejo de usuarios, se que hay mucho por ahi, pero no se cual aplicar o sea o lo que me resulte un poco mas simple, debido a que soy un usuario novato, y es mi primer sistema de mediano porte con php y en linea, mi idea primaria, debido a que estoy con poco tiempo tambien era simplemente desviar a los usuarios a distintas carpetas (aunque eso suena un poco desprolijo no ??? :huh: )bueno, en resumen, lo otro que habia pensado, era luego de la consulta, ir pagina por pagina haciendo un get, pero seria muchisimo trabajo...y mas alla de q no estoy muy seguro de como hacerlo, osea tendria q llevarlo web a web???

Bueno espero me den una ayuda en este gran foro, q siempre me ha dado una mano,

Saludos!


En línea

.:Snifer:.

Desconectado Desconectado

Mensajes: 74


Ver Perfil
Re: Consulta de logueo y manejo de usuarios
« Respuesta #1 en: 23 Enero 2011, 23:03 pm »

Hola no se si este te sirva es el que casi en todos los proyectos que realizo lo uso.


Inicio de Sesion

En mi caso manejo un Header por area por ejemplo de la Administracion,

Carpeta: Adminis -> header.php

Código
  1. <?php
  2. //initialize the session
  3. if (!isset($_SESSION)) {
  4. }
  5.  
  6. // ** Logout the current user. **
  7. $logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
  8. if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
  9.  $logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
  10. }
  11.  
  12. if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
  13.  //to fully log out a visitor we need to clear the session varialbles
  14.  $_SESSION['MM_Username'] = NULL;
  15.  $_SESSION['MM_UserGroup'] = NULL;
  16.  $_SESSION['PrevUrl'] = NULL;
  17.  unset($_SESSION['MM_Username']);
  18.  unset($_SESSION['MM_UserGroup']);
  19.  unset($_SESSION['PrevUrl']);
  20.  
  21.  $logoutGoTo = "../Pizzeria_Elis/index.php"; /// SI NO SE LOGUEA VUELVE A CAMBIARIAS
  22.  
  23.  
  24.  if ($logoutGoTo) {
  25.    header("Location: $logoutGoTo");
  26.    exit;
  27.  }
  28. }
  29. ?>
  30. <?php
  31. if (!isset($_SESSION)) {
  32. }
  33. $MM_authorizedUsers = "1"; /// aQUI ES DOND SE DA EL PERMISO EN MI CASO 1
  34. $MM_donotCheckaccess = "false";
  35.  
  36. // *** Restrict Access To Page: Grant or deny access to this page
  37. function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
  38.  // For security, start by assuming the visitor is NOT authorized.
  39.  $isValid = False;
  40.  
  41.  // When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
  42.  // Therefore, we know that a user is NOT logged in if that Session variable is blank.
  43.  if (!empty($UserName)) {
  44.    // Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
  45.    // Parse the strings into arrays.
  46.    $arrUsers = Explode(",", $strUsers);
  47.    $arrGroups = Explode(",", $strGroups);
  48.    if (in_array($UserName, $arrUsers)) {
  49.      $isValid = true;
  50.    }
  51.    // Or, you may restrict access to only certain users based on their username.
  52.    if (in_array($UserGroup, $arrGroups)) {
  53.      $isValid = true;
  54.    }
  55.    if (($strUsers == "") && false) {
  56.      $isValid = true;
  57.    }
  58.  }
  59.  return $isValid;
  60. }
  61.  
  62. $MM_restrictGoTo = "../Pizzeria_Elis/index.php";
  63. if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {  
  64.  $MM_qsChar = "?";
  65.  $MM_referrer = $_SERVER['PHP_SELF'];
  66.  if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
  67.  if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0)
  68.  $MM_referrer .= "?" . $QUERY_STRING;
  69.  $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
  70.  header("Location: ". $MM_restrictGoTo);
  71.  exit;
  72. }
  73. ?>
  74.  
  75.  

Y para el cierre de Sesion en el mismo Header

Código
  1. <a href="<?php echo $logoutAction ?>" class="enlacenav"></a>
  2. <a href="<?php echo $logoutAction ?>" class="enlacenav">Usuario :
  3. <?=$_SESSION["nom"]?>
  4. (salir)</a>
  5.  


Esto me basta que tenga en uno ya que llamo el header y dentro de el su menu que es distinto para cada Usuario.


Este es en mi index.php ... Es decir donde pueden loguearse.


index.php

Código
  1. <?php require_once('Connections/apl.php'); ?>
  2. <?php
  3. if (!function_exists("GetSQLValueString")) {
  4. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
  5. {
  6.  if (PHP_VERSION < 6) {
  7.    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  8.  }
  9.  
  10.  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  11.  
  12.  switch ($theType) {
  13.    case "text":
  14.      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  15.      break;    
  16.    case "long":
  17.    case "int":
  18.      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  19.      break;
  20.    case "double":
  21.      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
  22.      break;
  23.    case "date":
  24.      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  25.      break;
  26.    case "defined":
  27.      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  28.      break;
  29.  }
  30.  return $theValue;
  31. }
  32. }
  33.  
  34. mysql_select_db($database_Apl, $Apl);
  35. $query_Activos_Login_Usuario = "SELECT * FROM usuarios ORDER BY nivel ASC";
  36. $Apl_Login_Usuario = mysql_query($query_Activos_Login_Usuario, $Apl) or die(mysql_error());
  37. $row_Activos_Login_Usuario = mysql_fetch_assoc($Apl_Login_Usuario);
  38. $totalRows_Activos_Login_Usuario = mysql_num_rows($Apl_Login_Usuario);
  39. ?>
  40. <?php
  41. // *** Validate request to login to this site.
  42. if (!isset($_SESSION)) {
  43. }
  44.  
  45. $loginFormAction = $_SERVER['PHP_SELF'];
  46. if (isset($_GET['accesscheck'])) {
  47.  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
  48. }
  49. /// LOS PERMISOS QUE LLEGO A DAR
  50. if (isset($_POST['usuario'])) {
  51.  $loginUsername=$_POST['usuario'];
  52.  $password=$_POST['password'];
  53.  $MM_fldUserAuthorization = "nivel";
  54.  $MM_redirectLoginSuccess = "../index.php";
  55.  $MM_redirectLoginSuccess2 = "../Cajero/index.php";
  56.  $MM_redirectLoginSuccess3 = "../Almacen/index.php";
  57.  $MM_redirectLoginSuccess4 = "../Cocina/index.php";
  58.  $MM_redirectLoginSuccess5 = "../Repartidor/index.php";
  59.  $MM_redirectLoginFailed = "index.php";
  60.  
  61.  $MM_redirecttoReferrer = false;
  62.  mysql_select_db($database_Apl, $Apl);
  63.  
  64.  $LoginRS__query=sprintf("SELECT usuario, clave, nivel FROM usuarios WHERE usuario=%s AND clave=%s",
  65.  GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));
  66.  
  67.  $LoginRS = mysql_query($LoginRS__query, $Apl) or die(mysql_error());
  68.  $loginFoundUser = mysql_num_rows($LoginRS);
  69.  if ($loginFoundUser) {
  70.  
  71.    $loginStrGroup  = mysql_result($LoginRS,0,'nivel');
  72.  
  73.    //declare two session variables and assign them
  74.    $_SESSION['MM_Username'] = $loginUsername;
  75.    $_SESSION['MM_UserGroup'] = $loginStrGroup;      
  76.  
  77.    if (isset($_SESSION['PrevUrl']) && false) {
  78.      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
  79.    }
  80.      if($loginStrGroup==1) { header("Location: " . $MM_redirectLoginSuccess ); }
  81.  if($loginStrGroup==2) { header("Location: " . $MM_redirectLoginSuccess2 ); }
  82.  if($loginStrGroup==3) { header("Location: " . $MM_redirectLoginSuccess3 ); }
  83.      if($loginStrGroup==4) { header("Location: " . $MM_redirectLoginSuccess4 ); }
  84.      if($loginStrGroup==5) { header("Location: " . $MM_redirectLoginSuccess5 ); }
  85.  }
  86.  else {
  87.    header("Location: ". $MM_redirectLoginFailed );
  88.  }
  89. }
  90. ?>
  91.  

y LO MAS IMPORTANTE EL FORM DE LOGIN:

Código
  1. <form action="<?php echo $loginFormAction; ?>" method="post" id="ingreso">
  2.  
  3.             <table width="100" border="0">
  4.               <tr>
  5.                 <td width="84" class="inserta_tablas1"><strong>Usuario:</strong></td>
  6.                 <td width="57"><input name="usuario" type="text" id="usuario" size="10" /></td>
  7.               </tr>
  8.               <tr>
  9.                 <td class="inserta_tablas1"><strong>Contrase&ntilde;a:</strong></td>
  10.                 <td><input name="password" type="password" id="password" size="10" /></td>
  11.               </tr>
  12.               <tr>
  13.                 <td class="inserta_tablas1">&nbsp;</td>
  14.                 <td><span class="inserta_tablas1">
  15.                   <input type="submit" name="button" id="button" value="Enviar" class="boton" onClick="return Ingreso();"/>
  16.                 </span></td>
  17.               </tr>
  18.             </table>
  19. </div>


La tabla que se usa es la siguiente:

Código
  1. --
  2. -- Estructura de tabla para la tabla `usuarios`
  3. --
  4.  
  5. CREATE TABLE IF NOT EXISTS `usuarios` (
  6.  `usuario` CHAR(100) COLLATE utf8_bin NOT NULL COMMENT 'Nombre de usuario',
  7.  `clave` CHAR(10) COLLATE utf8_bin NOT NULL COMMENT 'Clave de Usuario',
  8.  `nivel` INT(1) NOT NULL DEFAULT '1',
  9.  PRIMARY KEY (`usuario`)
  10. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=FIXED;
  11.  
  12.  

Cualquier duda me avisas...

Saludos :P


En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Consulta de logueo y manejo de usuarios
« Respuesta #2 en: 24 Enero 2011, 00:17 am »

Primero formula tus ideas y lo que te falte hacer o no sepas como hacerlo en PHP ps pregunta.

@.:Snifer:. no pegues códigos asi, quizás le des mas preguntas que no tenga que ver con el tema actual.

@DiTeN si estas leyendo un manual, lo mas seguro lo que estas pidiendo este en el manual.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
.:Snifer:.

Desconectado Desconectado

Mensajes: 74


Ver Perfil
Re: Consulta de logueo y manejo de usuarios
« Respuesta #3 en: 24 Enero 2011, 00:37 am »

No es eso men yo solo lo hago por colaborar nada mas ok, y pues en parte si tienes razon no me di cuenta.. q puede ser q tenga aun mas dudas..


XD Saludos :P
En línea

DiTeN

Desconectado Desconectado

Mensajes: 83


Ver Perfil
Re: Consulta de logueo y manejo de usuarios
« Respuesta #4 en: 24 Enero 2011, 11:38 am »

Muchas gracias Snifer, ese codigo y esas consultas mas  o menos las entiendo bien, lo q si sigue siendo mi duda, es si en cada php que tengo creado en el proyecto tengo q llamar a ese header??? y a la funcion....
En línea

.:Snifer:.

Desconectado Desconectado

Mensajes: 74


Ver Perfil
Re: Consulta de logueo y manejo de usuarios
« Respuesta #5 en: 24 Enero 2011, 12:31 pm »

Pues si mira te explico yo creo 2 headers uno para el admin otros para el cajero un ejemplo.

El admin que permisos tiene.

BD - USUARIOS - PLANTILLA-CAJA-PRODUCTOS VENTAS-

Ese seria su menu,y en el le doy el acceso de 1 asi que en cada php que tenga el administrador hago un require de su header..

El cajero:

Producots.Caja

Su menu otro header dando el nivel de 2.. y a todos su Header espero averme explicado bien.. me indicas si pudiste resolver tu problema

Saludos :P
En línea

DiTeN

Desconectado Desconectado

Mensajes: 83


Ver Perfil
Re: Consulta de logueo y manejo de usuarios
« Respuesta #6 en: 24 Enero 2011, 13:05 pm »

Muy bien, esa parte del acceso la entiendo, ahora lo q no tengo muy claro, es como llevas los datos del usuario luego que hace su login, osea de pagina en pagina?? mas alla del header, o de la func q llamas, en algun lado tenes q llevar los datos del usuario q ingreso en el login y chequeaste en la primera web??  lo llevas mediante "Get"???? page por page??
gracias, Saludos!
En línea

.:Snifer:.

Desconectado Desconectado

Mensajes: 74


Ver Perfil
Re: Consulta de logueo y manejo de usuarios
« Respuesta #7 en: 24 Enero 2011, 15:43 pm »

Código
  1. $loginStrGroup  = mysql_result($LoginRS,0,'nivel');

Esta parte del code es la que verifica en realidad al llevar el header se ahce la verificacion..
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Consulta de logueo y manejo de usuarios
« Respuesta #8 en: 24 Enero 2011, 22:40 pm »

Muy bien, esa parte del acceso la entiendo, ahora lo q no tengo muy claro, es como llevas los datos del usuario luego que hace su login, osea de pagina en pagina?? mas alla del header, o de la func q llamas, en algun lado tenes q llevar los datos del usuario q ingreso en el login y chequeaste en la primera web??  lo llevas mediante "Get"???? page por page??
gracias, Saludos!

Se usan Cookies o Sesiones

Cita de: cookie
Una cookie (pronunciado [ˈkʊ.ki]; literalmente galleta) es un fragmento de información que se almacena en el disco duro del visitante de una página web a través de su navegador, a petición del servidor de la página. Esta información puede ser luego recuperada por el servidor en posteriores visitas. En ocasiones también se le llama "huella".

Las sesiones son similares, la diferencia  es que los datos se guardan en el servidor y el cliente usa un indentificador que se usa para llamar una sesion guardada en el servidor.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Tutos: obtener datos y manejo de windows con c#... tuto_1: manejo de procesos
Scripting
tongoxcore 2 9,390 Último mensaje 21 Julio 2008, 23:44 pm
por Zaraki_lkenpachi
Consulta sobre manejo de memoria en Linux
GNU/Linux
jos3 1 3,418 Último mensaje 22 Febrero 2011, 05:55 am
por Foxy Rider
consulta sobre Funciones de manejo de errores [c++] « 1 2 »
Programación C/C++
xkiz ™ 10 7,150 Último mensaje 11 Octubre 2011, 06:24 am
por Karman
Consulta manejo de archivo. Función fwrite()
Programación C/C++
Torino10 2 2,372 Último mensaje 12 Mayo 2012, 02:36 am
por Torino10
Consulta crear web con posts de usuarios
Desarrollo Web
germandc 2 1,981 Último mensaje 21 Julio 2013, 17:10 pm
por #!drvy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines