Autentificación PHP para múltiples usuarios usando MySQL

  • Por
  • 10 de febrero de 2003
  • Valoración:
  • 76 Comentarios
  • Scripts en PHP
Página PHP que necesitaríamos para realizar un acceso restringido por clave y contraseña para múltiples usuarios, donde cada uno tenga unos datos de acceso propios, que se guardan en la base de datos.
Vamos a ver las páginas PHP que necesitaríamos para realizar un acceso restringido por clave y contraseña para múltiples usuarios, donde cada uno tenga unos datos de acceso propios.

Nota: Este artículo viene a complementar el manual Sistema Autentificación en PHP. De hecho, en este artículo sólo vamos a tratar la página que recoge los datos del usuario (su nombre y contraseña) y comprueba si son correctos, redireccionando a la aplicación segura (si los datos se corresponden con algún usuario de la base de datos), o a la página de entrada (si los datos no correspondían con ningún usuario registrado).


Lo primero es recordar el esquema de páginas del sistema de autentificación propuesto. Lo podemos ver en el artículo Funcionamiento del sistema de autentificación en PHP. Nosotros vamos a tratar de colocar aquí un código para la página "compruebo datos"

La base de datos

La base de datos que vamos a utilizar contendrá una tabla para los usuarios, donde cada uno dispondrá, al menos, de dos campos: un nombre de usuario y una contraseña, los dos de tipo texto.

Tabla usuario
Nombre del campo Tipo del campo
nombre_usuario Texto
clave_usuario Texto

En una base de datos de usuarios, el nombre de usuario debería ser un valor único, irrepetible para otro usuario, es decir, no podremos tener dos usuarios con el mismo nombre. Por esta razón, el campo nombre_usuario podría ser la clave principal de la tabla, aunque también podríamos haber creado un campo adicional, llamado por ejemplo id_usuario, de tipo autonimérico y colocarlo como clave principal.

Para conseguir no insertar dos usuarios con el mismo nombre de usuario, a la hora de insertarlos en la tabla, comprobaremos que no haya ningún usuario ya introducido con el nombre de usuario que se pretende insertar. Este paso, aunque importante, no lo vamos a ver, pues sólo nos vamos a centrar en decidir si un usuario puede entrar o no en la aplicación, suponiendo que los usuarios se encuentran ya insertados en la base de datos.

En el ejemplo suponemos que utilizamos una base de datos MySQL, sin embargo, cualquier tipo de base de datos podrá servir para unos objetivos como los que nos proponemos.

El funcionamiento del script

El script que se utilizará para decidir si un usuario puede o no entrar en la aplicación es muy sencillo. Simplemente hace una llamada a la base de datos para comprobar si los datos de autentificación escritos por el visitante (usuario y contraseña) corresponden con los de algún usuario. En caso de que así sea, se permite la entrada y de no ser así, se deniega.

Nota: Este script fue comentado en una versión simplificada en el artículo Control de los datos de autentificación en PHP, englobado dentro del manual Sistema de autentificación PHP

Lo primero sería abrir una conexión con la base de datos y seleccionar la base con la que hemos de trabajar.

//conecto con la base de datos
$conn = mysql_connect("servidor","usuario","password");
//selecciono la BBDD
mysql_select_db("nombre_bbdd",$conn);


Un segundo paso es construir una sentencia SQL que nos permita comprobar si existe o no un usuario con los datos de autentificación introducidos. Utilizamos una simple sentencia SELECT, sobre la tabla de usuarios, donde se extraen usuarios que tengan el mismo nombre de usuario y la contraseña introducidos en la página de acceso.

//Sentencia SQL para buscar un usuario con esos datos
$ssql = "SELECT * FROM usuario WHERE nombre_usuario='$usuario' and clave_usuario='$contrasena'";

//Ejecuto la sentencia
$rs = mysql_query($ssql,$conn);


Si esa sentencia SELECT responde con algún registro encontrado, sabremos que existe un usuario donde sus datos de autentificación corresponden perfectamente con los introducidos. En ese caso podremos realizar las acciones encaminadas a permitir el acceso. Por el contrario, si la sentencia SELECT no encuentra ningún registro, sabremos que no existe un usuario con los datos de autentificación introducidos y por lo tanto, deberemos realizar las acciones encaminadas a restringir el acceso.

if (mysql_num_rows($rs)!=0){
    //usuario y contraseña válidos
    //defino una sesion y guardo datos
    session_start();
    session_register("autentificado");
    $autentificado = "SI";
    header ("Location: aplicacion.php");
}else {
    //si no existe le mando otra vez a la portada
    header("Location: index.php?errorusuario=si");
}


Las acciones para restringir o permitir el acceso son exatamente iguales a las que veníamos utilizando en el script de control sin utilizar la base de datos. Así que no vamos a comentarlas más, sino que os referimos al artículo donde las explicamos.

El código completo del ejemplo sería el siguiente.

<?
//conecto con la base de datos
$conn = mysql_connect("servidor","usuario","password");
//selecciono la BBDD
mysql_select_db("nombre_bbdd",$conn);

//Sentencia SQL para buscar un usuario con esos datos
$ssql = "SELECT * FROM usuario WHERE nombre_usuario='$usuario' and clave_usuario='$contrasena'";

//Ejecuto la sentencia
$rs = mysql_query($ssql,$conn);

//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa conbinación usuario/contraseña
if (mysql_num_rows($rs)!=0){
    //usuario y contraseña válidos
    //defino una sesion y guardo datos
    session_start();
    session_register("autentificado");
    $autentificado = "SI";
    header ("Location: aplicacion.php");
}else {
    //si no existe le mando otra vez a la portada
    header("Location: index.php?errorusuario=si");
}
mysql_free_result($rs);
mysql_close($conn);
?>


Nota: Es importante destacar que esta página no debería contener ningún tipo de texto antes de la apertura de código PHP, ni tan siquiera saltos de línea. Esto es debido a que al final se realiza una redirección y este tipo de instrucciones solamente se puede ejecutar si no se ha escrito todavía ningún carácter en el cuerpo. Para ser más específicos, este es el error que obtenemos si escribimos antes en la página de enviar las cabeceras:

Warning: Cannot add header information - headers already sent by (output started at /htdocs/ejemplos/autentif-php_bbdd/control.php:2) in /htdocs/ejemplos/autentif-php_bbdd/control.php on line 26


Otra posibilidad de codificación

Previamente a la publicación de este artículo, Hector Varón, un lector de DesarrolloWeb.com, nos mandó un código de control que es básicamente el mismo que hemos explicado nosotros aunque con algunas diferencias que lo hacen interesante para su publicación.

Lo incluimos para que los interesados lo puedan descargar, y desde aquí mandamos nuestros agradecimientos a Hector.

Descargar otra posibilidad de código.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Comentarios

joca

15/5/2003
hola. Mas que un comentario es una pregunta. Vuestro articulo me ha servido de mucha ayuda pero tengo una duda sobre algo que quiero hacer. En lugar de que abra siempre la misma pagina ¿se podría hacer que dependiendo de la primera letra del nombre del usuario abra una pagina determinada.?

RESPUESTA

Pues claro que puedes!! sólo necesitas programar el script... Lo que no creo que hagamos es programartelo nosotros. Si acaso te diré que deberías obtener la primera letra del nombre de usuario con las funciones de string de PHP y luebo disponer de alguna estructura de datos de tipo Array o similar que relacione esa letra con una URL donde redirigir al usuario.

Otra idea, que sí me parece más interesante como para publicar algún día un artículo, es guardar en la tabla de usuarios (en la base de datos MySQL) un campo con la URL donde dirigir al visitante cuando se autentifica. Entonces, al comprobar que el usuario es correcto recogeríamos ese dato de la tabla y redirigiríamos al usuario a dicho lugar.

Nosferatu

01/10/2003
Creo que la solucion al caso es bastante sencilla.

1) Deberías crear una fila mas en la base de datos, donde almacenarías la pagina de redirección de cada usuario.

2) Una vez autentificado el usuario y con la variable de sesión establecida, lo redireccionas a una pagina intermedia que lo única función que tendría seria re-ubicar al usuario.
En esa pagina podrías consultar por medio de la variable de sesión a la base de datos para obtener la dirección para enviar al visitante.
Funcion header junto con el resultado de la consulta a mysql.

Actualmente estoy utilizando un script de este tipo en mi empresa, pero por cuestiones de privacidad no puedo publicar el código, pero déjame decirte que no es para nada difícil, quizás necesites sentarte a leer un poco mas sobre el tema... es la única forma de mejorar.

*** Desde ya agradezco a los redactores del articulo, ya que me fue de mucha utilidad en mis principios. Muy buen trabajo muchachos, sigan así.

Eduardo

16/1/2004
Me parece muy acertado este tipo de codificación que han colocado en su web, para que los principiantes de PHP puedan adecuarse y practicar bastante este programa....los felicitito

kraledin

26/1/2004
Hola a todos
realice el script que ustedes dieron aqui, todo esta bien solo que cuando lo cargo por primera vez me dice que tengo lo siguiente:

Notice: Undefined index paso(es la variable qu edeclaro) in C:\...\seguridad.php on line 2

Warning: Cannot modify header information - headers alredy sent by (output started at .. c:\...\seguridad.php:2) in c:\inetpub\..\seuridad.php on line 4.

pero si vuelvo a cargar la pagina de nuevo si carga la pagina correctamente dandole paso al usuario...

de atemano gracias..

Jose Corbacho

02/2/2004
Creo que el manuel es muy bueno... pero cuando empiezas a profundizar faltan algunas cosillas:

Sería interesante poner algo de información para evitar la inyección de código SQL (addslashes() , mysql_espace_string() o otros medios) en las entradas del usuario. Y por otra parte sería conveniente almacenar las contraseñas en la BD en formato MD5 ( md5() ) para evitar que si alguien tiene acceso a la base de datos no conozca las contraseñas de los usuarios.

Un saludo

Bernardo

28/4/2004
Hola amigos, en primer lugar felicidades a todos los creadores de la web y a aquellos que con sus comentarios ayudan a que sigamos mejorando día a día. Bien, la solución que propongo para redireccionar a un usuario que hace login en nuestra página a una zona en concreto de nuestro sitio es la siguiente: en primer lugar crearemos un campo en nuestra tabla de la base de datos, donde almacenaremos información acerca del archivo al que se quiere redireccionar (p.e. podria almacenarse: aplicacion.php para un usuario, lo_que_sea.php para otro usuario ...). Nos vamos a control.php y ponemos lo siguiente:

if (mysql_num_rows($rs)!=0){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
session_register("autentificado");
//autentificado sería una variable de sesión
//en la instrucción que sigue lo que se está haciendo es cargar el identificador de sesión
//en la variable de sesión, para comprobar a posteriori en seguridad.php si puedo o no
//autorizar el paso al individuo que lo solicita
$autentificado=session_id();
//con la función: mysql_fetch_row lo que se pretende es cargar los valores de los campos de
//una determinada fila, a los cuales se puede acceder luego como si de una matriz se tratara
$row = mysql_fetch_row($rs);
//el campo que he insertado en la tabla es el último de un total de 11, de ahí que acceda
//a la posición 10, ya que empezamos a contar de 0
header ("Location: $row[10]");
}else{
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si");
}
mysql_free_result($rs);
mysql_close($conn);
?>


Os he puesto la parte de código que nos interesa de control.php

Un saludo a todos.

AraDaen

26/9/2004
estaba probando los ejemplos del artículo, y, una vez cerrada la sesion, a pesar de ello, si retrocedo en el navegador, todavia puedo acceder a la pagina de la aplicacion. :(

RESPUESTA

Yo creo que lo que estás viendo son páginas en la caché del navegador. Si recargas la página, con F5 o CTRL+F5, deberían saltar las alertas de seguridad e informarte que tienes cerrada la sesión.

Javier A.

31/12/2004
Hola a todos.

Para evitar la inyección de código SQL en nuestra consulta (consulta que utilizamos para válidar si tiene acceso o no), podemos reemplazar los caracteres ",',/, y = por nada o un espacio en blanco usando las funciones que php tiene para ello:

//Evitando la inyección de código SQL
//Javier A. 31 DIC 04
$usuarioseguro=str_replace("\","",$_POST['usuario']); $usuarioseguro=str_replace("'","",$usuarioseguro); $usuarioseguro=str_replace("/","",$usuarioseguro); $usuarioseguro=str_replace(""","",$usuarioseguro); $usuarioseguro=str_replace("=","",$usuarioseguro);
//Creamos la sentencia SQL
$sql="SELECT contrasena FROM usuarios WHERE usuario='".$usuarioseguro."'";

Espero que os sirva.

Saludos.

Rodrigo

16/2/2005
hola
¿si un usuario a ingresado correctamente, por lo tanto a iniciado una sesion como se puede hacer para que no tenga acceso a otras paginas seguras de otros usuarios?
¿ para cada usuario hay que hacer un archivo de autentificacion distinto?

Gracias

omar

25/2/2005
una pregunta y si solamente tengo acceso a los nombres de los usuarios, y la contraseña se encuntra en otra lado(restringido)?; las sesiones pertenecen a un dominio, la idea era capturar la sesion y contraseña cuando se loguea en window, se puede?, gracias

Yovany

25/4/2005
Pienso que deberias de incriptar las contraseñas antes de guardarlas en la base de datos.

Juanma

24/5/2005
wenas yo ice todo tal y como ponia en el manual, incluso segui la otra posibilidad que hay, y todo funciona mu bien, el problema es q tengo puesto 3 usuarios, y solo tiene acceso el 1º de la lista de la tabla, que puedo acer pliz?

mafer

27/7/2005
esta muy bueno el articulo sobre todo para principiantes pero queria saber porque si lo estoy probando con mi base de datos (bd) siempre me dice que los datos son incorrectos aun sabiendo que el scrip de la conexion esta bien y lo unico que hice fue cambiarle los nombres de: tabla y campos a los que yo tengo en mi bd y en nobre de toda la bd si me pueden ayudar se los agradezco de corazon.

kitus

10/8/2005
PARA JOCA:

En mi caso necesitaba restringir el acceso segun la contraseña q se tecleaba... y este fue el script q hice ojala y sirva de algo...a mi ver con una seleccion multiple es suficiente..

<?
//-PASO 1 - conecto con la base de datos
$conn = mysql_connect("localhost","root","yomero");

//selecciono la BBDD
mysql_select_db("agenda",$conn);

//-PASO 2 - comprobar datos con una consulta SQL
//Sentencia SQL para buscar un usuario con esos datos
$ssql = "SELECT * FROM usuario WHERE nombre_usuario='$usuario' and clave_usuario='$contrasena'";

//Ejecuto la sentencia
$rs = mysql_query($ssql,$conn);

//PASO 3 - VALIDACION DE ACCESO

//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa conbinación usuario contraseña
if ( mysql_num_rows($rs)!= 0 )
{
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
session_register("autentificado");
$autentificado = "SI";
switch($_POST){
case ($_POST["usuario"]=="almacen" && $_POST["contrasena"]=="almacen"):
header ("Location: /php/seguridad/almacen/index.php");
break;
case ($_POST["usuario"]=="gerencia1" && $_POST["contrasena"]=="gerencia1"):
header ("Location: /php/seguridad/gerencia1/index.php");
break;
case ($_POST["usuario"]=="gerencia2" && $_POST["contrasena"]=="gerencia2"):
header ("Location: /php/seguridad/gerencia2/index.php");
break;
case ($_POST["usuario"]=="recursosHumanos" && $_POST["contrasena"]=="recursosHumanos"):
header ("Location: /php/seguridad/recursosHumanos/index.php");
break;
case ($_POST["usuario"]=="tesoreria" && $_POST["contrasena"]=="tesoreria"):
header ("Location: /php/seguridad/tesoreria/index.php");
break;
}
}else {
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si");
}
mysql_free_result($rs);
mysql_close($conn);
?>

..saludos.sSS.:° ..


Deyvi Rosado Diaz

29/8/2005
Algo de codigo para este sistema de autentificacion, no soy experto en PHP pero he realizado un codigo para autentificacion y que dependiendo de el usuario redirecciona a una pagina diferente:

<?php
include("conex.php4");
$valor1=$_GET["usuario"];
$valor2=$_GET["clave"];
$conten=trim($valor1);
$ext=substr($conten,4,7); //sera utilizado para la seguridad de la pagina
$grado=substr($conten,5,6); //para especificar el grado al que reenviara.
$link1= conectarse();
$consulta="select * from alumno where usuario='$valor1' and clave='$valor2' and grado='$grado'";
$resultado=mysql_query($consulta, $link1);

if(mysql_fetch_array($resultado)>0){

switch ($ext){
case "a1p":
session_start();
$_SESSION["autentificado"]=$ext;
header("location: ../primaria/portada.php");
exit();
break;
case "a2p":
session_start();
$_SESSION["autentificado"]=$ext;
header("location: ../primaria/portada.php");
exit();
break;
case "a3p":

session_start();
$_SESSION["autentificado"]=$ext;
header("location: ../primaria/portada.php");
exit();
break;
case "a4p":
session_start();
$_SESSION["autentificado"]=$ext;
header("location: ../primaria/portada.php");
exit();
break;
case "a5p":
session_start();
$_SESSION["autentificado"]=$ext;
header("location: ../primaria/portada.php");
exit();
break;
case "a6p":
session_start();
$_SESSION["autentificado"]=$ext;
header("location: ../primaria/portada.php");
exit();
break;
case "a1s":
session_start();
$_SESSION["autentificado"]=$ext;
header("location: ../secundaria/home.php");
exit();
break;
case "a2s":
session_start();
$_SESSION["autentificado"]=$ext;
header("location: ../secundaria/home.php");
exit();
case "a3s":
session_start();
$_SESSION["autentificado"]=$ext;
header("location: ../secundaria/home.php");
exit();
break;
case "a1b":
session_start();
$_SESSION["autentificado"]=$ext;
header("location: ../bach/home.php");
exit();
break;
case "a2b":
session_start();
$_SESSION["autentificado"]=$ext;
header("location: ../bach/home.php");
exit();
break;
case "a3b":
session_start();
$_SESSION["autentificado"]=$ext;
header("location: ../bach/home.php");
exit();
break;
case "a4b":
session_start();
$_SESSION["autentificado"]=$ext;
header("location: ../bach/home.php");
exit();
break;
case "a5b":
session_start();
$_SESSION["autentificado"]=$ext;
header("location: ../bach/home.php");
exit();
break;
case "a6b":
session_start();
$_SESSION["autentificado"]=$ext;
header("location: ../bach/home.php");
exit();
break;
case "doc";
session_start();
$_SESSION["autentificado"]=$ext;
header("location: ../docentes/primaria/tecnologia.php");
exit();
break;
default:
header("location:portada.htm");
exit();
}//fin swith
}else {//si no
header("location:portada.htm");
}//fin if
mysql_free_result($resultado);
mysql_close($link1);
?>

esta autentificacion es con llamado a usuarios de una base de datos.

Alguan duda alli esta mi correo

marck_antony

05/9/2005
¿Usando la base de datos para reenviar a los usuarios utilizando un campo de para lanzar el link como puedo hacer que la consulta identifique el usuario ya antes registrado para seleccionar ese campo luego de direccionar con el script de seguridad o contrtol?

jsteban

06/10/2005
Primero que todo los felicito por esta web, sirve de gran ayuda para los que estamos aprendiendo.
yo descargue los archivos e intente poner a funcionar esos en una web que estoy haciendo, pero cuando digito el usuario y la clave me sale el siguiente error:
"Parse error: parse error, unexpected T_STRING in /mnt/storage/users/p/a/s/paseosdecamping/control.php on line 16"
He estado buscando como solucionar el error y no he podido, alguien sabe decirme donde encuentro documentacion para ello ??

Marcelo

10/10/2005
Al ejecutar el codigo me da el siguiente error:
Parse error: parse error, unexpected T_STRING in /home/cs000164/public_html/control1.php on line 12

la linea 12 es la siguiente:
//$ssql = "SELECT * FROM Usuario WHERE nombre_usuario='$usuario' and clave_usuario='$contrasena'";

Que esta mal ? Gracias

Francisco (Piki)

25/10/2005
Gracias por vuestro consejo pero tengo una duda.

Esta sentencia redirige una página php llamada "aplicacion.php"

supongo que hay que incluir un script en esta aplicacion que verifique si se está autentificado o no.

Y que no sea $autentificado='SI' ya que, aunque soy novato, creo que se podría poner lo siguiente: url://aplicacion.php?autentificado=SI

y así daría como válida ¿no?

Ya se que eso implica que hace falta conocer el nombre de la página PHP y de la variable. ¿tan dificil es?


Gracias y enhorabuena por vuestra página.

diego lopez

29/10/2005
por sque no puedea el sistema reconocerme como usuario resgistrado si inicio secion como se deveria y el isistema no me saluda tampoco
me deja ver el contenido especial

Hybrd

06/11/2005
muy bueno el tutorial, pero tengo un problema.

Aunque se ejecute salir.php vuelvo atras en el navegador y de todas maneras aparece la web "protejida" ...le di f5 y ctrl f5 y de todas maneras ocurria...q puede ser ??

dario mancilla vilches

29/11/2005
Saludos, muy bueno el tutorial para comenzar, solo una duda, quisiera saber si ademas de la pagina web restringida, tambien podria tener acceso a archivos que solo se puedan ver a tarves de esa pagina logueada, algo asi como que a tarves de esat pagina y solo con una clave se pueda tener acceso a ciertos archivos ara descarga, bueno si alguien sabe como hacerlo, por favor comuniquelo se los agradecere mucho

Pablo

05/1/2006
Por si a alguien le sirve, como esta el script no me funcionaba, asi que debi declarar como variables $usuario y $contrasena antes de esta forma: $usuario=$_GET["usuario"];
$contrasena=$_GET["contrasena"];

y recien asi me lo tomo correctamente.

Saludos
Pablo

wendy

28/5/2006
Para los que quieran varios usuarios usen el ejemplo del comentario y no el de descargar otra posibilidad ya que ese no funciona solo funciona el primer registro de la tabla y los demás no, y con el del ejemplo en cafe si funcionan todos los registros

Juan Medina

20/6/2006
Muy bueno el articulo, yo me encuentro desarrollando una aplicacion que requiere la autentificacion de los usuarios, sin embargo no se si sea conveniente crear un usuario para la base de datos con los permisos adecuados que sea igual al usuario de la aplicacion o solo crear un usuario para la aplicacion sin crear el usuario para la base de datos, con lo cual se realizaria la conexion siempre con el mismo usuario. Agradezco mucho si me pueden guiar ante esta duda. Gracias.

Gustavo

22/7/2006
Que tal. estaba viendo el tutorial. y esta bueno. nada mas que tengo un pequeño problema.

Como se hace Autentifiacion de usuario pero con "msqli" y no "msql" ?

marian

27/7/2006
La explicación de todo esto es muy clara. Pero no me funciona. Siempre me dice que está equivocada, pero revisé millon de veces y está todo bien.
Por ultimo intenté agregar un campo con la pagina a donde tiene que entrar el usuario y modifique el control.php como acá está expuesto y tampoco funciona.

me estoy volviendo loca!! ya no se que mas probar.

Browser

29/7/2006
Cuando estoy autentificado y pongo include ("seguridad.php");
me manda a index.php creyendo que no estoy autentificado.Supongo que habrá que almacenar algo.alguien tiene alguna idea?

Javier

29/7/2006
Hola creo que se ha mencionado por aquí. Está todo muy claro pero no me funciona siempre me dice que el usuario es incorrecto. He probado por si tenía problemas con la conexión a la bade de datos pero eso no es... no consigo encontrar el error... Un saludo y gracias.

Ricardo Pardo

07/9/2006
Gracias por los articulos son de mucha ayuda, estoy buscando alguno que pueda instalar para recuperacion de contraseñas.

heee saludos

17/9/2006
a funcionado bien todo
el lio me lo da a la hora de ingresar usuarios, puesto que al no ser experto en el tema. puedo ingresar dos usuarios con los mismos datos, cosa que no deberia pasar.

la pregutna es como hacer para que solo se pueda ingresar un usuario con un nombre y no repetirse,,,,

Antonio

22/12/2006
Soy nuevo en esto del las sesiones en php y me fue de gran ayuda estos articulos. Muchas gracias.

Demian Kachuk

21/1/2007
Desde mi punto de vista lo resolveria de la siguiente manera:
<?php
//--- Conecto a la base de datos
$conn = mysql_connect($host,$usuario,$pass);
//--- Selecciono la base
mysql_select_db($base, $conn);

//--- Genero la consulta
$sql_query = "select * from tbl_usuario where usr_id='" . $_POST["usuario"] . "' and usr_pass='" . $_POST["password"] . "'";
//--- Ejecuto la consulta
$sql_resul = mysql_query($sql_query, $conn);

//--- Verifico
if(mysql_num_rows($sql_resul) != 0){
session_start();
session_register("autenticado");
$autenticado = "SI";
header("Location: aplicacion.php");
}else{
header("Location: index.php?error=si");
}

//--- Libero los recursos
mysql_free_result($sql_resul);

//--- Cierro la conexion
mysql_close($conn);
?>

Me ha servido de mucho la orientacion de este articulo para la resolucion de mis sistemas.

Espero mi punto de vista les sea util.

Gracias, hasta pronto.!

Fernando

18/2/2007
Hola,me encanto la explicacion.Yo quisiera bloquear a los invitados de mi foro creado de una pagina pero no se como.Quien pueda ayudarme por favor conectese al msn o mandeme un mail a kalelchingolero@hotmail.com

Walyson

22/2/2007
Una preguntita estoy hacieno una pagina de comunidades y tengo un problema, luego que logueo a mi ususario, lo valido y todo correcto me da la bienvenida con mi nombre y todo, luego de validado doy la opccion de subir una foto a la base de datos (lo cual tambien esta listo), mi problema es que la foto lo graba en un registro diferente y no en la misma fila del usuario que se registro y valido, me entienden: Ingresa Erick ....bienvenido Erick sube tu foto, ok. la subo pero no en los registros de Erick sino en una nueva celda sin mas datos que la foto. Les agradeceria mucho si alguien me ayuda.

Marcelo Pickelny

25/2/2007
Estimados... como serian las modificacines para trabajar sobre SQL Server 2005 ? En un sevidor con SQL no tengo ningun problema pero en SQL SERVER 2005 no me funciona.. Espero me puedan ayudar

Gracias

Tróglodo

01/6/2007
Muy buen manual! me ha sacado d apuros las veces q lo he consultado. aunq me desconecto d la programación siempre q vuelvo me sigue funcionando. chido

Vicky Simanca

31/8/2007
Buenos días.

Señores, les escribo para informarles que estando interesada en la compra del manual de SISTEMA DE AUTENTIFICACIÓN PHP, y teniendo cuenta abierta en la empresa CLICKANDBUY desde hace algún tiempo, me ha sido imposible realizar la compra.

Como no tenía suficiente saldo en la cuenta para efectuar la compra, he intentado realizar el ingreso correspondiente en la misma, para poder realizarla, cual es la sorpresa por mi parte al ver que me sale un cartel que dice "ESTA OPCIÓN NO ESTÁ DISPONIBLE PARA SU PAIS".

Yo soy de VENEZUELA, y he tenido que llamar por teléfono a España, para conocer de viva voz de CLICKANDBUY, el motivo de no poder efectúar la compra.

la respuesta, ha sido que tenía que esperar 1/2 hora, y que luego de este tiempo se pondrían en contacto conmigo.

Varias horas después, sin haber tenido comunicación, he vuelto a llamar a ESPAÑA al teléfono (34) 91 790 95 89, y la contestación de esta empresa ha sido la siguiente:

"No es posible que usted pueda hacer ingreso en su cuenta de CLICKANDBUY, desde su país, Y el propietario de la página no admite compra alguna sin tener cuenta en esta compañia".

No me explico por qué no puedo hacer ingresos en mi cuenta cuando ya los hice en el pasado, en concreto para jugar en un casino on line.

A mi pregunta de ¿en qué paises no estaba habilitada la opción de ingreso en cuenta?, La respuesta fue "varios".

Al preguntar cuales paises,La respuesta fue "No me los se de memoria".

En conclusión:

Ustedes están trabajando con una compañia de pagos, que no da respuesta a los usuarios, y que supongo que al igual que yo, habrá muchos más interesados en la compra de este u otros manuales, las cuales no se podrán efectuar.

P.D. Aunque yo vivo en VENEZUELA, y en este país existe un control de cambio, yo tengo autorizadas mis tarjetas para hacer transacciones por internet en dólares ($), con lo cual no existe problema por este motivo.

Sin otro particular, reciban un cordial saludo

Vicky Simanca

leonardo wilthew

10/9/2007
Yo entiendo todo pero lo que les falta explicar es que tablas tendria que crear? el nombre y la configuracion de cada tabla!! eso es lo unico que no especifica y eso me hace falta a mi para colocarlo con el mysql

Porfavor Ayudenme

Juan Gabriel Letelier Martínez

31/1/2008
Cuando aplico el script tal como está no me acepta ningún usuario y contraseña, si cambio de 0 a 1 e la pregunta if, me acepta cualquier usuario y contraseña, eatré haciendo mal alguna otra parte?
Pueden ayudarme?

ikkix

26/2/2008
Pues este lo hice con ayuda de su manual, y otro que encontré en la red. Ojalá lo prueben y me notifiquen si tiene errores, para asi corregirlos. Gracias.

ikkix

26/2/2008
Aqui el link.
http://rapidshare.com/files/94974582/Sistema_de_Registro_y_Autentificacion_de_Usuarios_Sencillo.rar.html

claudio

03/3/2008
<?php
//conecto con la base de datos
$coneccion = mysql_connect("localhost","root","pancho");
//selecciono la BBDD
mysql_select_db("clinicosql",$coneccion);
//Sentencia SQL para buscar un usuario con esos datos
$ssql = "SELECT USUARIO, CLAVE FROM usuarios WHERE USUARIO='$usuario' and CLAVE='$clave'";
//Ejecuto la sentencia
$rs = mysql_query($ssql,$coneccion);
if (mysql_num_rows($rs)!=0){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
session_register("autentificado");
$autentificado = "SI";
header ("Location: menu.php");
}
else {
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si");
}
?>

esto me funciona bien en un pc pero no en otro y el problema no es la base de datos o el usuario/clave (ya lo probé)

¿alguna sugerencia?

gracias

Grajo Carajo

27/10/2008
No sé a que se debe pero el codigo:

session_register("autentificado");
$autentificado = "SI";
header ("Location: aplicacion.php");

No me funcionó usando WAMPP 2 con sus defaults.
Sin reconfigurar nada usé

session_start();
session_register('autentificado');
$_SESSION['autentificado']="SI";
header ("Location: DemoPAGE.php?".SID);

Y todo funcionó como debía. (PHP 5.2.6) (register_globals OFF)

NOE

08/4/2009
Autentificacion Usuario Acceso a datos
Hola, si yo tengo una base de datos en mysql, utilizo php para consultar y agregar datos a un libro de direcciones, que puedo hacer para que solo el usuario que entre y se identifique solo él pueda borrar o editar sus registros y no los de los demás ususarios. Yo estoy tratando de aprender este lenguaje, estoy usando plantillas de Addresbook. Saludos.

wero_bravo

13/5/2009
opinion
muy bueno el manual

jsteban

08/6/2009
Diferenciar mayuscula y minuscula
Me parece excelente este articulo, ya lo he puesto en practica y es muy interesante para el manejo de php y mysql.
He detectado un pequeño inconveniente en la autenticacion desde mysql, el script no diferencia mayusculas de minusculas, por ejemplo, es igual ADMIN o admin, como se puede corregir el query para que diferencie las mayusculas de las minusculas

Salu2 desde Colombia.

Hasmael

20/8/2009
pregunta
FELICITACIONES POR LA PAG Y EL TUTORIAL!!!!

en la parte

mysql_select_db("nombre_bbdd",$conn);

si mi base de datos se llama susanita_BD ¿entonses seria

mysql_select_db("susanita_BD_bbdd",$conn); ????
.............................................................................................................

$ssql = "SELECT * FROM usuario WHERE nombre_usuario='$usuario' and clave_usuario='$contrasena'";

mi tabla se llama costumers y dos campos se llaman user y pass ¿entonses seria:

$ssql = "SELECT * FROM costumers WHERE user='$usuario' and pass='$contrasena'"; ???


POR FAVOR CORRIGAN SI MI SINTAXIS ESTA MAL, SE LOS AGRADECERIA ETERNAMENTE

P.D.: QUE ES $conn??

fortress

19/3/2010
Evitar sql injection
Muchas gracias por el articulo me sirvio de mucho. quisiera aportar este pequeño codigo para evitar el sql injection. Espero y les sirva.

$usu = $_POST['user'];
$pass = $_POST['password'];
//Consulta hecha para evitar sql injection
$ssql = sprintf ("SELECT * FROM autenticar WHERE nombre='%s' and clave='%s'", mysql_real_escape_string($usu), mysql_real_escape_string($pass));

saludos!!!

2gz

03/4/2010
mensaje de advertencia
muy bueno el tutorial pero al ejecutar me tira este mensaje de advertencia,a que se deberia esto??
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in
por favor espero su respuesta.

carloncho

06/4/2010
Case Sensitive
asi se soluciona la no discriminación entre mayusculas y minusculas:

$ssql = "SELECT * FROM usuario WHERE nombre_usuario = BINARY '$usuario' and clave_usuario = BINARY '$contrasena' ";

sertorres2003

14/5/2010
Sugerencia
Hola a tod@s, soy nuevo en el tema, que por cierto muy interesante pero quisiera aportar una sujerencia constructiva que es que se digan cuantos archivos necesito crear, y agruparlos en un compresor para poder descarga y probar. Incluida la base de datos Mysql. Creo que el orden ayudaría a la excelencia del artículo.
Muy Bueno todo y que sea de beneficio a todos.

Saludos

cesar

17/5/2010
muy bueno
Gracias lo estaba buscando

funciona muy bien

neoweb

04/7/2010
errores...
Buenas, primero q nada qisiera agradecer la simplicidad de vuestros artículos, ideal para el fácil aprendizaje.
He estado estudiando y probando los ejemplos q aparecen en el artículo, pero me arroja estos errores:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

Warning: Cannot modify header information - headers already sent by

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource

Ojalá puedan ayudarme.

Gracias de antemano.

pedrolp

02/9/2010
aclaraciones
Hola q tal, bueno estuve revisando el codigo, me estoy adentrando nuevamente a php ya que lo habia dejado por falta de tiempo, bueno, ahora que estoy retomando esto y bueno que mas que un pekeño sistema de login para usuarios, y que mejor si los toma de una base de datos, pero he aqui mi pregunta:

al hacer el query: $ssql = "SELECT * FROM usuario WHERE nombre_usuario='$usuario' and clave_usuario='$contrasena'";

en comparacion con que seria los parametros que salen como variables... ahh y otra cosa, el query en la que sale el codigo como otra opcion al cual le hace arrays asociativos el query es: SELECT * FROM tabla;

Este query no es muy general? es decir en todo caso a que elemento esta tratando de elegir? ya que al comparar siempre me jalaba el 1er usuario de mi tabla y no al resto, yo recuerdo que hace tiempo lo hice de una forma similar, con arrays asociativos ya que me parecia algo mejor, pero no habria q relacionarlo a algo? bueno como mencione me estoy metiendo de nuevo en lo q es php y no recuerdo muy bien estas cositas, lo que me parece muy bien es la seguridad que le implementan y es un plus q me esta sirviendo de mucho, bueno espero puedan aclarar bien esta parte para poder coger mas usuarios teniendo una tabla con 10 usuarios y todos puedan loguearse satisfactoriamente, espero me puedan responder, gracias

pedrolp

02/9/2010
una cosita mas!!
no se porque la pagina no me sale... es decir de index.php no llega a aplicacion.php, el problema por lo que veo es en control.php, es decir en esta parte del codigo... al ver el resultado del query (que como variable he puesto $rs) me muestra lo siguiente:

Resource id #4

a que se debe esto? no se si alguien pudiera darme alguna respuesta, gracias

jordi_nadal

18/10/2010
nivel de usuarios
Hola he implementado este sistema de autentificacion y me parece muy bueno, solamente que estoy intentando tambien hacer un acceso restringido a LINKS que solamente se vean dependiendo del nivel de usuario a fin de poder modificar los datos web unos y administrar toda la base de datos otros, para ello tengo el campo nivel en la tabla users junto al nombre de usuario y la contraseña, pero cuando intento hacer (antes lo hacia con dreanweaver de forma automatica) la validacion por nivel de usuario, no hay manera de poder hacerlo, lo he intentado en seguridad.php, en control.php incluso en el propio index.php pero nada de nada y si lo hago con dreanweaver, me invalida todo el resto y me pone "su" codigo y no quiero eso.
¿como lo hago?.
Gracias

roberto_orden_erena

31/1/2011
Espero que me podáis echar una mano....
Buenos días, muchas gracias por el tutorial! Me ha servido de mucho! Pero tengo un pequeño problema que llevo un par de días y no consigo resolver, y es que en mi servidor local (WAMP) me funciona a la perfección, pero cuando lo subo al servidor de mi empresa, una vez logueado me retorna a la página de login a través del condicional de que no se ha autentificado, por lo que doy por hecho que en mi servidor no se esta guardando la sesión, cosa que me extraña puesto que la web de mi empresa se basa en Joomla, y supongo que éste CMS funcionará con sesiones también.
Acto seguido, me puse a mirar la diferencia entre los php.ini del server con el mío del WAMP, y la única diferencia que hay es:

- session.bug_compat_42
- session.use_only_cookies

El segundo de ellos lo modificamos en php con ini_set, el segundo no sé en que afecta, pero es que po lo demás es el mismo php.ini, y ya me quedo sin ideas de la causa del problema que estoy teniendo.

Me podéis echar una mano por favor? Gracias de antemano.

Jose Guzman

08/5/2011
Problemas con el Codigo
Buenos sus comentarios con respecto al codigo publicado sobre la autenticacion de usuarios para tener acceso al modulo principal del sistema..<br />
<br />
Mi pregunta es la siguiente para que unos de ustedes me ayude con este codigo que es similar al que aparece publicado pero no me funciona..<br />
<br />
if($_POST[&#039;button&#039;]==&#039;Aceptar&#039;){ // Variables... <br />
if(!empty($_POST[&#039;usuario&#039;]) and !empty($_POST[&#039;iclave&#039;])) {<br />
include &quot;../WebCFG/CNC-SucreNE.php&quot;; // Conexion.... <br />
<br />
// Busqueda de Informacion.... <br />
$sql =mysql_query(&quot;SELECT * FROM usuario WHERE usuario =&#039;$usuario&#039; and iclave =&#039;$iclave&#039;&quot;);<br />
<br />
if(!Empty($sql)){ // Verifica el registro...<br />
header(&quot;location:http://localhost/WebSucreNE/WebPHP/WebSucreNE.php&quot;); }<br />
else {<br />
header(&quot;location:http://localhost/WebSucreNE/MainMenu.php&quot;); <br />
exit;<br />
}<br />
}<br />
}<br />
header(&quot;location:http://localhost/WebSucreNE/MainMenu.php&quot;); <br />
Return TRUE;<br />
}<br />
?&gt;<br />
<br />
Si alguien me puede ayudar se lo agradezco gracias...

Jaime1976

26/5/2011
autentificacion web php usando usuario mysql en phpmyadmin
al entrar en la pagina de validad de la clave me da el siguiente error, adjunto mas abajo el codigo porque soy incapaz de que funciones.

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /homez.373/administy/www/intranet.php on line 20

Warning: Cannot modify header information - headers already sent by (output started at /homez.373/administy/www/intranet.php:8) in /homez.373/administy/www/intranet.php on line 26

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /homez.373/administy/www/intranet.php on line 30

<?php
//--- Conecto a la base de datos
$conn = mysql_connect("------","----------","------------" );
//--- Selecciono la base
mysql_select_db("---------",$conn);

//--- Genero la consulta
$sql_query = "select * from tabla where CLAVE='" . $_POST["email"] . "' and usr_pass='" . $_POST["cCLAVE"] . "'";
//--- Ejecuto la consulta
$sql_resul = mysql_query($sql_query, $conn);

//--- Verifico
if(mysql_num_rows($sql_resul) != 0){
session_start();
session_register("autenticado");
$autenticado = "SI";
header("Location: documentos_de_usuarios.php");
}else{
header("Location: index.php?error=si");
}

//--- Libero los recursos
mysql_free_result($sql_resul);

//--- Cierro la conexion
mysql_close($conn);
?>

maraet

27/5/2011
Estructurar registro de usuarios.
Estimados.

Alguien me puede explicar como se relaciona todo esto.

O sea yo leí las diez partes de "Sistema de autentificación PHP" y entiendo la utilidad de cada cosa, pero no logro saber como entrelazar todo...o como se debe estructurar todo el lenguaje para que me ande el sistema de usuarios.

Alguien me puede pasar un instructivo, una idea algo que me ayude a desenvolverme para poder iniciar un registro de usuarios.

Desde ya gracias y si alguien prefiere indicarme algo por mail aquí se los dejo.
mar21_aet@hotmail.com

Saludos cordiales!

pochix234

19/7/2011
hola
tengo una pag en html y php... que ingresa por medio de un formulario de login, pero no puedo hacer que no apareza los url de la pag web que cualquiera los pueda ver no mas los que ya esten registrado en una base de datos en el servidor...una base de datos sql...ayudaaaa

JoelAR

04/8/2011
Error en la consulta
Estimados,

en mi prueba del código se conecta correctamente a la base de datos, pero al realizar la consulta filtrada me arroja siempre 0 filas.

saludos,
Joel
PD: trabajo con localhost (AppServ en XP)

carlos_gonzalez-460893

15/8/2011
Para Jose Guzman
[quote]Jose Guzman dijo:
Problemas con el Codigo
Por: Jose Guzman
Buenos sus comentarios con respecto al codigo publicado sobre la autenticacion de usuarios para tener acceso al modulo principal del sistema..

Mi pregunta es la siguiente para que unos de ustedes me ayude con este codigo que es similar al que aparece publicado pero no me funciona..

if($_POST['button']=='Aceptar'){ // Variables...
if(!empty($_POST['usuario']) and !empty($_POST['iclave'])) {
include "../WebCFG/CNC-SucreNE.php"; // Conexion....

// Busqueda de Informacion....
$sql =mysql_query("SELECT * FROM usuario WHERE usuario ='$usuario' and iclave ='$iclave'");

if(!Empty($sql)){ // Verifica el registro...
header("location:http://localhost/WebSucreNE/WebPHP/WebSucreNE.php"); }
else {
header("location:http://localhost/WebSucreNE/MainMenu.php");
exit;
}
}
}
header("location:http://localhost/WebSucreNE/MainMenu.php");
Return TRUE;
}
?>
[/quote]

Especifica por favor exactamente que es lo que no te funciona. Es decir, que mensaje de error sale ? (en caso de haber uno).

De todos modos y juzgando solamente el código que escribiste, te indico que le sobra una llave de cierre "}", en este caso es la última.

Revisa y lo indicas por esta vía.

david

27/8/2011
consulta a dos bases de datos en mysql
hola, tengo un problema, necesito hacer la siguiente query a mysql en php

SELECT
auth.account.id AS `ID de cuenta`,
auth.account.username AS `Nombre de cuenta`,
auth.account.last_ip AS `Numero de ip`,
characters2.characters.`name` AS `Nombre de personaje`,
characters2.characters.money AS `oro`,
characters2.characters.`level`,
Count(auth.account.last_ip) AS ip,
auth.account.`online`,
characters2.characters.`online`
FROM
auth.account
INNER JOIN characters2.characters ON auth.account.id = characters2.characters.account
GROUP BY
auth.account.last_ip
HAVING
ip < 2 AND
characters2.characters.`level` BETWEEN 1 AND 79 AND
auth.account.`online` LIKE 1 AND
characters2.characters.`online` LIKE 1
ORDER BY
`Numero de ip` Asc

base de datos: characters2 y auth, tablas: characters y account, alguien me puede dar una mano?

hombrex918

07/9/2011
Muy buena
muy buena publicacion

Alejandro

16/10/2011
Problemas...
no entiendo por que tengo estos comentarios al cargar la pagina ¬¬??

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:AppServwwwwww_puffpass_alumnos.php on line 23

Warning: Cannot modify header information - headers already sent by (output started at C:AppServwwwwww_puffpass_alumnos.php:6) in C:AppServwwwwww_puffpass_alumnos.php on line 32

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:AppServwwwwww_puffpass_alumnos.php on line 34

alguien que me ayude

punketa

09/2/2012
Dudas qry
Tengo la siguiente duda:

Necesito mostrar los datos del usuario logeado, ya que estoy manejando dos tipos de perfiles.
Intente esta consulta pero no funciona:

<?
$consulta="select * from tb_perfil, tb_login where login_perfil_id=perfil_id and login_usuario = '".$txtUser."'";
$res=mysql_query($consulta,$link);
while ($arr=mysql_fetch_array($res)){
$v_perfil_id=$arr['perfil_id'];
$v_perfil_desc=$arr['perfil_desc'];
?>


*********************************************

NOTA:al comiezo incluyo

txtUser = "";

if (isset($_POST["txtUser"])) {
$txtUser = $_POST["txtUser"];
}

Matias

17/2/2012
No logro que funcione
Al implementarlo con base de datos, me dice que el comando: mysql_free_result($rs);
no es valido en MySQL.... para que sirve dicho comando?
hice todo tal cual el ejemplo pero no funciona

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /www/docs/camoar.gov.ar/public_html/prueba/control.php on line 27

Jhon Eduar

18/5/2012
pregunta
como hago para que un usuario creado tenga acceso solo a su información y no que la informacion sea la misma para todos los usuarios.
les agradezco su respuesta

drsatan

13/7/2012
Problema con la autentificacion
Estimados mismo problema que los demas participantes.
No logro realizar que los usuarios dentro de la base de datos ingresen a sus paginas correspondientes, por ejemplo cada usuario tiene un tipo de dato int que es privilegio ya sea 1,2,3, etc .
La idea es que dependiendo de este numero se logre abrir la pagina que yo asigne.
Ejemplo : privilegio 1 son los administradores y al ingresar user & pass se abra el portal de administradores y así con los demás usuarios.

Ahora e estado viendo varios códigos que ustedes han posteado acá y no logro realizarlo.
Como debo realizarlo sinceramente estoy medio perdido y necesito sacar esto a flote.

Saludos.

Euge_BM

01/10/2012
CONSULTA DE PHP
Hola buenos dias. Les escribo para saber si alguien me puede ayudar con esto.
Tengo un scrip de validacion a una pagina segura, que en el servidor local funciona perfecto, el usuario valida y la pagina segura da la bienvenida con el nombre de cada usuario porque me toma el id. Mi problema es el siguiente, yo subi esta web a un hosting el cual la parte de msql donde creo las bases tiene un nombre de usuario y el php myadmin tiene otro nombre diferente.

Mi scrip conecta, y se puede ver en la url cuando hace la validacion, pasa a la pagina segura y directamente me devuelve al login con error.

Es por esta linea del script que no conecta:

<?php
/*
Newton2.0
*/

//Inicializar una sesion de PHP
session_start();

//Validar que el usuario este logueado y exista un UID
if ( ! ($_SESSION['autenticado'] = 'SI' && isset($_SESSION['uid'])) )
{


//En caso de que el usuario no este autenticado, crear un formulario y redireccionar a la
//pantalla de login, enviando un codigo de error
?>
<form name="formulario" method="post" action="index.php">
<input type="hidden" name="msg_error" value="2">
</form>
<script type="text/javascript">
document.formulario.submit();
</script>
<?php
}



//Conectar BD
include("conectar_bd.php");
conectar_bd();

//Sacar datos del usuario que ha iniciado sesion
$sql = "SELECT nombre,usuario
FROM users
WHERE usuario = '".$_SESSION['uid']."'";
$result =mysql_query($sql);

$nombreUsuario = "";

//Formar el nombre completo del usuario
if( $fila = mysql_fetch_array($result) )
$nombreUsuario = $fila['nombre'];

//Cerrrar conexion a la BD
mysql_close($conexio);
?>

Edwin

14/2/2013
Necesito ayuda para Autenticación de Usuarios
No se como redireccionar a dependiendo de su nivel A administradores y U usuarios, aqui les dejo el codigo.

<?php
//conectar BD
include("/Connections/conectar_bd.php");
conectar_bd();
$usr = $_POST['usuario'];
$pw = $_POST['password'];
//Obtengo la version encriptada del password
$pw_enc = md5($pw);
$sql = "SELECT * FROM tbl_users
INNER JOIN ctg_tiposusuario
ON tbl_users.id_TipoUsuario = ctg_tiposusuario.id_TipoUsuario
WHERE tx_username = '".$usr."'
AND tx_password = '".$pw_enc."' ";
$result =mysql_query($sql,$conexio);
$uid = "";
//Si existe al menos una fila
if( $fila=mysql_fetch_array($result) )
{
//Obtener el Id del usuario en la BD
$uid = $fila['id_usuario'];
// $utp = $fila['id_TipoUsuario'];
//Iniciar una sesion de PHP

session_start();
//Crear una variable para indicar que se ha autenticado
$_SESSION['autenticado'] = 'SI';
//Crear una variable para guardar el ID del usuario para tenerlo siempre disponible
$_SESSION['uid'] = $uid;
//CODIGO DE SESION
//Crear un formulario para redireccionar al usuario y enviar oculto su Id
?>
<form name="formulario" method="post" action="/faeot/menu_principal.php">
<input type="hidden" name="idUsr" value='<?php echo $uid ?>' />
</form>
<?php
}
else {
//En caso de que no exista una fila...
//..Crear un formulario para redireccionar al usuario a la pagina de login
//enviandole un codigo de error
?>
<form name="formulario" method="post" action="/faeot/restriccion.php">
<input type="hidden" name="msg_error" value="1">
</form>
<?php
}
?>
<script type="text/javascript">
//Redireccionar con el formulario creado
document.formulario.submit();
</script>

dayana

16/3/2013
me da estos errores
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:AppServwwwmedicalindex.php on line 16

Warning: Cannot modify header information - headers already sent by (output started at C:AppServwwwmedicalindex.php:16) in C:AppServwwwmedicalindex.php on line 25

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:AppServwwwmedicalindex.php on line 27

gerardo p

19/7/2013
no sale nada
hola, lo hice tal cual y no funcionó, tengo varias claves y usuarios y no sale nada :-s q esta mal?

jimmer

12/12/2013
inquietud
buen.. dia tengo un inquietud quisiera crear un sistema de usuarios en php con las siguiente caracteristica.... quisiera como hacer para crear un sistemas de usuarios pero con la diferencia por ejemplo: si yo abro una sesion de un usuario y otra persona va abrir el mismo usuario que no lo deje ingresar hasta que yo ya haya cerrado la sesion de este usuario....

de ante mano muchas gracias....
chvz.ro@gmail.com

Compartir