Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: chinosf en 14 Mayo 2010, 05:08 AM

Título: login dependiendo del usuario
Publicado por: chinosf en 14 Mayo 2010, 05:08 AM
buenas, nesecito ayuda a ver si es posible, nesecito hacer un login(ya lo tengo hecho) pero que cada usuario cuando se conecta se redireccione a una pagina osea no solo pagina sino tambien folder por ejemplo usuario1 seria /usuario1/datos,  usuario2 /usuario2/datos. La idea es que las direcciones esten en la base de datos asi cuando se loguean automaticamente se redireccione el caso es que todos son administradores y no invitados etc si me ayudarán se los agradezco mucho
Título: Re: login dependiendo del usuario
Publicado por: chinosf en 15 Mayo 2010, 04:05 AM
Saludos

les cuento para que lo tengo como 'tips' a mano talvez les sirva para otras personas
que ya hice una forma para redireccionar a las personas cuando se loguee  y es de la siguiente manera:

primero hacemos la validacion de usuarios

if(trim($_POST["usuario"]) != "" && trim($_POST["password"]) != "" )
{
   
   $usuario = strtolower(htmlentities($_POST["usuario"], ENT_QUOTES));
   $password = $_POST["password"];
   $result = mysql_query('SELECT password, usuario, id, url FROM                        usuarios  WHERE usuario=\''.$usuario.'\'');
   
        if($row = mysql_fetch_array($result)){
      
        if($row["password"] == $password){
   $_SESSION["k_username"] = $row['usuario'];
   
como si es cierto antes de poner la pagina donde queremos que vaya hacemos una variable con la direccion guardada en la base de datos

        $_SESSION["url"]= $row['url']
        $url=$_SESSION["url"]
asi de esta manera simplemente le damos la dirección al header (en mi caso es mas complejo por utilizo el include ya que utilizo una pagina como base)
     
       header ('Location:'.$url );

con eso paso la dirección si es verdadero el login sin problemas me costo pero se logro espero que le ayude a alguien más y hasta tambien corregirme si he puesto algun comando malo pero creamen que si funciona

saludos a la comunidad desde Costa Rica







Título: Re: login dependiendo del usuario
Publicado por: miadagio en 15 Mayo 2010, 20:23 PM
 io lo ago de otra forma definiendo perfiles.
por ejemplo en la base de datos el usuario tiene un tipo y dependiendo del tipo es deribado a su pagina correspondiente. cabe decir que para cada perfil debi contruir un menu con las vistas que solo queria que el viera y en cada inicio de pagina tener la validacion del login y del perfil.

<?php
 session_start
();
 require(
'clases/user.class.php');
 
$rut $_POST["rut_f1"];
 
$objUser= new User;
 
$cant=$objUser->u_con($rut);
 
$uss=mysql_num_rows($cant);
 if (
$_POST["oculto_f1"]==1){
 $con mysql_connect("localhost","root","libertad") or die (mysql_error());
 mysql_select_db("bd_sc",$con);
 $pass $_POST["pass_f1"];
  if(
$uss>0){
   echo'<<script type="text/javascript">alert("Esta cuenta esta siendo usada");location.href="index.php";</script>';
   }else{
$sql="select count(*) val from user_sis where id_user='$rut' and pass_user='$pass'"/*cuento los usuarios en la base de datos que tengan el id igual al ingresado */
$sql2="select tipo_user from user_sis where id_user='$rut'"// selecciono el tipo de empleado
        
$sql3="insert into user_conect(id_user_sis) values('$rut')";
$tipo=mysql_fetch_array(mysql_query($sql2,$con)) or die (mysql_error()); //ejecuto la consulta 
$fila=mysql_fetch_array(mysql_query($sql,$con));
if($fila["val"]>0){ //busco si hay mas de cero que coinsida
 mysql_query($sql3,$con);
           
if ($tipo[0]=="ADMINISTRADOR"){
 $_SESSION['log']=$rut//creo una sesion con el rut del usuario
                 
$_SESSION['tipouser']=$tipo[0]; //creo una variable que almacena el tipo de usuario
          echo'<script type="text/javascript">alert("usuario identificado");location.href="administrador/index.php";</script>';
}
if ($tipo[0]=="COMERCIAL"){
 $_SESSION['log']=$rut;
                 
$_SESSION['tipouser']=$tipo[0];
         echo'<script type="text/javascript">alert("usuario identificado");location.href="comercial/index.php";</script>';
}
if ($tipo[0]=="TECNICO"){
  $_SESSION['log']=$rut;
                  
$_SESSION['tipouser']=$tipo[0];
         echo'<script type="text/javascript">alert("usuario identificado");location.href="tecnico/tecnico.php";</script>';
       }
}else{
 echo'<script type="text/javascript">alert("el usuario o contraseña no coinciden");location.href="index.php";</script>';
error_reporting(E_ALL);
}
 }
}  
?>
Título: Re: login dependiendo del usuario
Publicado por: scorpion01 en 18 Mayo 2010, 23:38 PM
tambien se me ocurre... no podrias hacer digamos una tabla diferente para cada uno, digamos una en la que solo pongas los admistradores y en otra donde vayan lo usuarios comunes por asi decirlo, es algo que se me ocurre y asi cuando ingrese con su user y pass que primero compare una tabla y si no que se salte a la otra (eso seria cuando ya esten registrados en la web claro esta, porque se supone que tu decides diferenciar a los users que quieras). tambien para no estar haciendo esto manual y toda la onda directamente desde la base de datos puedes crear un archivo php en el cual puedas borrar datos de una tabla (usuarios comunes) y pasar solamente el user y pass a la tabla de admins (solo ocuparias la funcion UPDATE para actualizar datos)

Salu2

Título: Re: login dependiendo del usuario
Publicado por: n3fisto en 11 Junio 2010, 18:28 PM
Mira lo que yo hago es lo siguiente hace mucho tiempo que tengo este codigo no se de quien sera, ni quien lo hizo lo unico hice algunos cambios y lo uso para mis proyectos
Código (php) [Seleccionar]


<?php require_once('../Control/conexiones/Coneccion_Apl.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  if (
PHP_VERSION 6) {
    
$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;
}
}

mysql_select_db($database_apl$apl);
$query_Apl_Login_Usuario "SELECT * FROM usuarios ORDER BY nivel ASC";
$Apl_Login_Usuario mysql_query($query_Apl_Login_Usuario$apl) or die(mysql_error());
$row_Apl_Login_Usuario mysql_fetch_assoc($Apl_Login_Usuario);
$totalRows_Apl_Login_Usuario mysql_num_rows($Apl_Login_Usuario);
?>

<?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['usuario'])) {
  
$loginUsername=$_POST['usuario'];
  
$password=$_POST['password'];
  
$MM_fldUserAuthorization "nivel";
  
$MM_redirectLoginSuccess "../Control/Administrador/inicio.php";
  
$MM_redirectLoginSuccess2 "../Control/Socio/inicio.php";
  
$MM_redirectLoginSuccess3 "../Control/Supervisor/inicio.php";
  
$MM_redirectLoginFailed "index.php";
  
$MM_redirecttoReferrer false;
  
mysql_select_db($database_apl$apl);
  

  
$LoginRS__query=sprintf("SELECT usuario, clave, nivel FROM usuarios WHERE usuario=%s AND clave=%s",
  
GetSQLValueString($loginUsername"text"), GetSQLValueString($password"text")); 
   
  
$LoginRS mysql_query($LoginRS__query$apl) or die(mysql_error());
  
$loginFoundUser mysql_num_rows($LoginRS);
  if (
$loginFoundUser) {
    
    
$loginStrGroup  mysql_result($LoginRS,0,'nivel');
    
    
//declare two session variables and assign them
    
$_SESSION['MM_Username'] = $loginUsername;
    
$_SESSION['MM_UserGroup'] = $loginStrGroup;       

    if (isset(
$_SESSION['PrevUrl']) && false) {
      
$MM_redirectLoginSuccess $_SESSION['PrevUrl'];
    }
       if(
$loginStrGroup==1) { header("Location: " $MM_redirectLoginSuccess ); }
  if($loginStrGroup==2) { header("Location: " $MM_redirectLoginSuccess2 ); }
  if($loginStrGroup==3) { header("Location: " $MM_redirectLoginSuccess3 ); }
  }
  else {
    
header("Location: "$MM_redirectLoginFailed );
  }
}
?>



En esta linea de codigo se le da el nivel que puede acceder

Código (php) [Seleccionar]
$loginStrGroup  = mysql_result($LoginRS,0,'nivel'); En este caso el nivel es 0 como todo usuario puede se admite el ingreso.

Código (php) [Seleccionar]
$loginStrGroup  = mysql_result($LoginRS,[b]1[/b],'nivel');
En el caso de un admin o lo que se de se cambia el nivel

Código (php) [Seleccionar]
<?php
mysql_free_result
($Apl_Login_Usuario);
?>

Al final de la  pagina.

Pagina del Administrador.

Código (php) [Seleccionar]

<?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
if (!isset($_SESSION)) {
  
session_start();
}
$MM_authorizedUsers "1";
$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;
}
?>




En este punto de codigo se define, cual es el nivel de acceso

Código (php) [Seleccionar]
$MM_authorizedUsers = "1";
$MM_donotCheckaccess = "false";

Espero que te ayude