Foro de elhacker.net

Programación => 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.

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

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

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

Código
  1. $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
  1. <?php
  2. mysql_free_result($Apl_Login_Usuario);
  3. ?>
Al final de la  pagina.

Pagina del Administrador.

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 = "../index.php";
  22.  if ($logoutGoTo) {
  23.    header("Location: $logoutGoTo");
  24.    exit;
  25.  }
  26. }
  27. ?>
  28. <?php
  29. if (!isset($_SESSION)) {
  30. }
  31. $MM_authorizedUsers = "1";
  32. $MM_donotCheckaccess = "false";
  33.  
  34. // *** Restrict Access To Page: Grant or deny access to this page
  35. function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
  36.  // For security, start by assuming the visitor is NOT authorized.
  37.  $isValid = False;
  38.  
  39.  // When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
  40.  // Therefore, we know that a user is NOT logged in if that Session variable is blank.
  41.  if (!empty($UserName)) {
  42.    // Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
  43.    // Parse the strings into arrays.
  44.    $arrUsers = Explode(",", $strUsers);
  45.    $arrGroups = Explode(",", $strGroups);
  46.    if (in_array($UserName, $arrUsers)) {
  47.      $isValid = true;
  48.    }
  49.    // Or, you may restrict access to only certain users based on their username.
  50.    if (in_array($UserGroup, $arrGroups)) {
  51.      $isValid = true;
  52.    }
  53.    if (($strUsers == "") && false) {
  54.      $isValid = true;
  55.    }
  56.  }
  57.  return $isValid;
  58. }
  59.  
  60. $MM_restrictGoTo = "../index.php";
  61. if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {  
  62.  $MM_qsChar = "?";
  63.  $MM_referrer = $_SERVER['PHP_SELF'];
  64.  if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
  65.  if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0)
  66.  $MM_referrer .= "?" . $QUERY_STRING;
  67.  $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
  68.  header("Location: ". $MM_restrictGoTo);
  69.  exit;
  70. }
  71. ?>
  72.  
  73.  

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

Código
  1. $MM_authorizedUsers = "1";
  2. $MM_donotCheckaccess = "false";
Espero que te ayude