Foros del Web » Programando para Internet » PHP »

Ayudad Editar sistema de autenticacion de usuario

Estas en el tema de Ayudad Editar sistema de autenticacion de usuario en el foro de PHP en Foros del Web. Este script me lo genero dreamweaver l oque quiero es colocar cuando se a iniciadio sesion el tipico mensajito de Hola ya as iniciado sesion ...
  #1 (permalink)  
Antiguo 02/11/2007, 10:14
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Ayudad Editar sistema de autenticacion de usuario

Este script me lo genero dreamweaver l oque quiero es colocar cuando se a iniciadio sesion el tipico mensajito de Hola ya as iniciado sesion o algo asi
Código PHP:
<?php
//initialize the session
if (!isset($_SESSION)) {
  
session_start();
}
// ** Logout the current user. **
$logoutAction $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset(
$_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
  
$logoutAction .="&"htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_GET['doLogout'])) &&($_GET['doLogout']=="true")){
  
//to fully log out a visitor we need to clear the session varialbles
  
$_SESSION['MM_Username'] = NULL;
  
$_SESSION['MM_UserGroup'] = NULL;
  
$_SESSION['PrevUrl'] = NULL;
  unset(
$_SESSION['MM_Username']);
  unset(
$_SESSION['MM_UserGroup']);
  unset(
$_SESSION['PrevUrl']);
    
  
$logoutGoTo "index.php";
  if (
$logoutGoTo) {
    
header("Location: $logoutGoTo");
    exit;
  }
}
?>
<?php 
require_once('Connections/BasedeDatos.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}
?><?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  
session_start();
}

$loginFormAction $_SERVER['PHP_SELF'];
if (isset(
$_GET['accesscheck'])) {
  
$_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset(
$_POST['User'])) {
  
$loginUsername=$_POST['User'];
  
$password=md5($_POST['Contraseña']);
  
$MM_fldUserAuthorization "CARGO";
  
$MM_redirectLoginSuccess "index.php";
  
$MM_redirectLoginFailed "index.php";
  
$MM_redirecttoReferrer false;
  
mysql_select_db($database_BasedeDatos$BasedeDatos);
      
  
$LoginRS__query=sprintf("SELECT NOMBRE_USUARIO, PASSWORD, CARGO FROM usuarios WHERE NOMBRE_USUARIO=%s AND PASSWORD=%s",
  
GetSQLValueString($loginUsername"text"), GetSQLValueString($password"text")); 
   
  
$LoginRS mysql_query($LoginRS__query$BasedeDatos) or die(mysql_error());
  
$loginFoundUser mysql_num_rows($LoginRS);
  if (
$loginFoundUser) {
    
    
$loginStrGroup  mysql_result($LoginRS,0,'CARGO');
    
    
//declare two session variables and assign them
    
$_SESSION['MM_Username'] = $loginUsername;
    
$_SESSION['MM_UserGroup'] = $loginStrGroup;          

    if (isset(
$_SESSION['PrevUrl']) && false) {
      
$MM_redirectLoginSuccess $_SESSION['PrevUrl'];    
    }
    
header("Location: " $MM_redirectLoginSuccess );
  }
  else {
    
header("Location: "$MM_redirectLoginFailed );
  }
}
?>
Este linksito me creo para cerrar sesion entonces tambien lo que quiero es que en caso de que ya haya cerrado sesion este link no se vea

Código HTML:
<a href="<?php echo $logoutAction ?>">Cerrar sesion</a> 
Gracias por su ayuda.
  #2 (permalink)  
Antiguo 02/11/2007, 10:20
Avatar de TolerantX  
Fecha de Ingreso: marzo-2006
Ubicación: Guadalajara, México.
Mensajes: 408
Antigüedad: 18 años, 1 mes
Puntos: 10
Re: Ayudad Editar sistema de autenticacion de usuario

En index.php pon algo así

Código PHP:

if ( isset($_SESSION['MM_Username']) ) echo "Hola ".$_SESSION['MM_Username']; 
Y el link para desconectar

Código PHP:
if ( isset($_SESSION['MM_Username']) ) echo '<a href="'.$logoutAction.'">Cerrar sesion</a>'
__________________
TolerantX
http://tolerantx.com
Linux User #385226
  #3 (permalink)  
Antiguo 02/11/2007, 12:04
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Re: Ayudad Editar sistema de autenticacion de usuario

Listo men si me funciono el codigo. Otra pregunta este codigo es el que me restringe el acceso a cada pagina.

Como hago para definir cuando realmente existe el usuario y la contraseña es correcta pero no pertenece al perfil deseado

Algo asi como el usuario no pertenece al perfil que puede acceder a esta pagina

Gracias


Código PHP:
<?php
if (!isset($_SESSION)) {
  
session_start();
}
$MM_authorizedUsers "3";
$MM_donotCheckaccess "false";

// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers$strGroups$UserName$UserGroup) { 
  
// For security, start by assuming the visitor is NOT authorized. 
  
$isValid False

  
// When a visitor has logged into this site, the Session variable MM_Username set equal to their username. 
  // Therefore, we know that a user is NOT logged in if that Session variable is blank. 
  
if (!empty($UserName)) { 
    
// Besides being logged in, you may restrict access to only certain users based on an ID established when they login. 
    // Parse the strings into arrays. 
    
$arrUsers Explode(","$strUsers); 
    
$arrGroups Explode(","$strGroups); 
    if (
in_array($UserName$arrUsers)) { 
      
$isValid true
    } 
    
// Or, you may restrict access to only certain users based on their username. 
    
if (in_array($UserGroup$arrGroups)) { 
      
$isValid true
    } 
    if ((
$strUsers == "") && false) { 
      
$isValid true
    } 
  } 
  return 
$isValid
}

$MM_restrictGoTo "../../index.php";
if (!((isset(
$_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers$_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {   
  
$MM_qsChar "?";
  
$MM_referrer $_SERVER['PHP_SELF'];
  if (
strpos($MM_restrictGoTo"?")) $MM_qsChar "&";
  if (isset(
$QUERY_STRING) && strlen($QUERY_STRING) > 0
  
$MM_referrer .= "?" $QUERY_STRING;
  
$MM_restrictGoTo $MM_restrictGoTo$MM_qsChar "accesscheck=" urlencode($MM_referrer);
  
header("Location: "$MM_restrictGoTo); 
  exit;
}
?>
  #4 (permalink)  
Antiguo 02/11/2007, 12:11
Avatar de TolerantX  
Fecha de Ingreso: marzo-2006
Ubicación: Guadalajara, México.
Mensajes: 408
Antigüedad: 18 años, 1 mes
Puntos: 10
Re: Ayudad Editar sistema de autenticacion de usuario

Ese código que pusiste hace precisamente lo que deseas

En
Código PHP:
$MM_authorizedUsers "3"
Le estás diciendo que solo tiene acceso el usuario con el nivel 3, o grupo 3.

Y si no pertenece a dicho permiso lo rediccionará a esta ruta
Código PHP:
$MM_restrictGoTo "../../index.php"
Espero que esa sea tu duda, porque no entendí muy bien:P
__________________
TolerantX
http://tolerantx.com
Linux User #385226
  #5 (permalink)  
Antiguo 02/11/2007, 13:10
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Re: Ayudad Editar sistema de autenticacion de usuario

Si tiene razon pero entonces ayudeme con otra cosita. Como modifico el primer codigo que le di para que en caso que el usuario no tenga perfil deseado no lo deje iniciar sesion.

Me explico. tengo 3 paginas principales una de administrador otra de auxiliar y otra de supervisor. En cada una coloco ese c+odigo pero lo que quiero es que por ejemplo si el usuario es auxiliar solo se pueda loguiar en la pagina de auxiliar y en las otras dos por mas que el usuario y la contrsaeña esten correctos no lo dejen.

Creo que tambien toca matar la sesion automaticamente cuando cambie del index de administrador al de auxiliar "por ejemplo" porqeu apareceria como si ya hubiera abierto sesion y accederia a todo.

mejor dicho usted sabe mas que yo deesto , ayudeme con este detalle y no lo molesto mas.

Gracias de nuevo

Última edición por helacer; 02/11/2007 a las 13:33
  #6 (permalink)  
Antiguo 02/11/2007, 16:50
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Re: Ayudad Editar sistema de autenticacion de usuario

Solo coloco esto para revivir el mensaje antes de que muera sin haber recibido to da la ayuda.

Gracias , favor si saben no vayan a dejar de colaborarme
  #7 (permalink)  
Antiguo 02/11/2007, 16:57
Avatar de TolerantX  
Fecha de Ingreso: marzo-2006
Ubicación: Guadalajara, México.
Mensajes: 408
Antigüedad: 18 años, 1 mes
Puntos: 10
Re: Ayudad Editar sistema de autenticacion de usuario

Lo que puedes hacer es con la misma página de logueo al ser correcto el usuario y contraseña redireccionar a X página según el tipo de usuario, obvio dicha página estará restringida solo para ese tipo de usuario.

El nivel de acceso, permisos o tipo de usuario quiero creer que se guarda en la variable $_SESSION['MM_UserGroup'], es cuestion de que adaptes el código que tienes a lo que necesitas.
__________________
TolerantX
http://tolerantx.com
Linux User #385226
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 16:15.