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
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
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);
}
}
}
?>
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
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
<?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
$loginStrGroup = mysql_result($LoginRS,0,'nivel');
En este caso el nivel es 0 como todo usuario puede se admite el ingreso.
$loginStrGroup = mysql_result($LoginRS,[b]1[/b],'nivel');
En el caso de un admin o lo que se de se cambia el nivel
<?php
mysql_free_result($Apl_Login_Usuario);
?>
Al final de la pagina.
Pagina del Administrador.
<?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
$MM_authorizedUsers = "1";
$MM_donotCheckaccess = "false";
Espero que te ayude