login dependiendo del usuario

Iniciado por chinosf, 14 Mayo 2010, 05:08 AM

0 Miembros y 1 Visitante están viendo este tema.

chinosf

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

chinosf

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








miadagio

 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);
}
 }
}  
?>

scorpion01

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


n3fisto

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