Foros del Web » Programando para Internet » PHP »

Autenticar usuario con php y mysql

Estas en el tema de Autenticar usuario con php y mysql en el foro de PHP en Foros del Web. Hola estoy intentando hacer una aplicación en la que el usuario con su login y password ya registrada en la base de datos pueda identificarse ...
  #1 (permalink)  
Antiguo 03/06/2008, 05:16
 
Fecha de Ingreso: junio-2008
Mensajes: 56
Antigüedad: 15 años, 10 meses
Puntos: 1
Autenticar usuario con php y mysql

Hola estoy intentando hacer una aplicación en la que el usuario con su login y password ya registrada en la base de datos pueda identificarse y una vez identificado entrar en una aplicación para fichar la hora de entrada y cuando salga la hora de salida.

La idea es una página inicial (index.php) que tiene un formulario, una vez introducidos los datos se comprueba en la base de datos (login.php). Si es correcto que pase a la página de fichar (fichaje.php) sino que vuelva a la principal (index.php). Con la variable de sesión una vez identificado la tiene que guardar durante toda la sesión. Introduzco código:

Index.php: (formulario)
<?php
session_start();
$_SESSION[login] = "";
?>
<form name="registro" method="post" action="login.php">
<table><tr><td><b>Usuario: </b></td><td><input type="text" name="usuario" size="20"></td></tr>
<tr><td><b>Contraseña: </b></td><td><input type="password" name="password" size="20"></td></tr></table>
<center><input type="submit" name="BotonFichar" value="Entrar"></center>
</form>
</center>

Login.php (compruebo usuario en mysql):

<?php
include("datosconexion.php");
session_start();

if (!isset($_SESSION[login]))
$_SESSION[login] = ""; //Si $_SESSION[login] no existe, asignamos en blanco.

if ($_SERVER[HTTP_REFERER]=="index.php") {//creo que sirve si vengo de la pagina index.php pasa a las instrucciones.
$_SESSION[login] = $_POST[usuario];
$_SESSION[ip] = $_SERVER[REMOTE_ADDR];
}

if ($_SESSION[login] == "" ) { //Si $_SESSION[login] sigue en blanco redirigimos a página index.php (principal)
header("Location: index.php");
die(); // no sigo ejecutando la restante parte del script
}

session_start();

$bbdd = mysql_connect($host, $usuario, $password) or die ("Could not connect: " . mysql_error()); //conectamos con base de datos.
$tablausuario = mysql_select_db($bd, $bbdd) or die(mysql_error());//seleccionamos base de datos fichaje de nuestra base de datos.
$cons = 'select pass from usuarios where user="'.$_SESSION[login].'" '; //consulta si password es igual que base de datos.


if ($bbdd) {
$resp = mysql_query($cons, $bbdd) or die(mysql_error());; //ejecutamos la consulta.
/*$fila = mysql_num_rows($resp);*/
$fila = mysql_fetch_array($resp); //se guarda en un array las consultas.
$cont = $fila['pass']; //en esta variable se guarda el passworde de la base de datos.

if( $_POST[password] != $cont ) {
echo "no tienes acceso";
}
else { echo "identificado";
}
mysql_close();

}
else { echo "no se puede acceder a la base de datos";}
?>

Fichaje.php

<?php
session_start();
include("datosconexion.php");
if ($_SESSION[login] == "" ) {

header("Location: index.php");
die(); // no sigo ejecutando la restante parte del script
}//ESTO LO HAGO EN TODAS LAS PÁGINAS PARA QUE EL USUARIO NO PUEDA ACCEDER A ELLAS SIN ANTES HABERSE LOGADO.
?>

<center><p><?php $ftiempo = time ();
$hora = date ('G:i:s');
echo "Son las ";
echo "$hora horas <br>";
$dia = array ("Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sabado");
$mes = array ("Diciembre", "Enero", "Febreo", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre");
$fechadia = date('j');
$fechames = date('n');
$fechaanyo = date ('Y');
$fecha = date ("j/n/Y");
echo "del dia " .$dia[date('w')];
echo " ";
echo "$fechadia";
echo " de " .$mes[$fechames];
echo " del ";
echo "$fechaanyo";
echo "<br>";

$ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
$nombredeip= gethostbyaddr($ip);

/*$ins = "INSERT INTO fichaje (user,fecha,hora,IP) VALUES ($usuario,$fecha,$hora,$ip)";
$res = mysql_query($ins,$bbdd);*/
EN ESTA PÁGINA ME QUEDA ABRIR Y CERRAR LA BASE DE DATOS E INSERTAR, ESTA NO ME PREOCUPA DEMASIADO, SI LAS ANTERIORES, YA QUE UNA VEZ TENGA INDEX.PHP Y LOGIN.PHP ESTA SERÍA SIMPLEMENTE IMPLEMENTARLA.



Agradecería toda ayuda ya que me he quedao pillado con las variables de sesión y con lo que tengo no me autentifica nada, simplemente me manda a la página principal directamente todas las veces aunque el usuario y la contraseña esten correctas.

MUCHAS GRACIAS
  #2 (permalink)  
Antiguo 03/06/2008, 05:48
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Autenticar usuario con php y mysql

a lo mejor es por todas las comillas simples que te faltan

Código PHP:

include("datosconexion.php");
session_start();

if (!isset(
$_SESSION['login']))
$_SESSION['login'] = ""//Si $_SESSION[login] no existe, asignamos en blanco.

if ($_SERVER['HTTP_REFERER']=="index.php") {//creo que sirve si vengo de la pagina index.php pasa a las instrucciones.
$_SESSION['login'] = $_POST['usuario'];
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
}

if (
$_SESSION['login'] == "" ) { //Si $_SESSION[login] sigue en blanco redirigimos a página index.php (principal)
header("Location: index.php"); 
die(); 
// no sigo ejecutando la restante parte del script

  #3 (permalink)  
Antiguo 04/06/2008, 02:52
 
Fecha de Ingreso: junio-2008
Mensajes: 56
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Autenticar usuario con php y mysql

Ya he puesto las comillas simples pero sigue fallándome, no sé que parte del código está mal ya que aunque el usuario y contraseña sean correctas se queda en la primera página, es decir, siempre pasa por el if que contiene header, cuando $_SESSION['login'] == ""; es vacío.

Me he quedao pillao en esta parte, necesito ayuda.

GRACIAS.
  #4 (permalink)  
Antiguo 04/06/2008, 05:35
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Autenticar usuario con php y mysql

$_SERVER['HTTP_REFERER'] esta variable es para conocer , si viene de otra pagina externa a tu server, te diga cual es

para saber si viene de tu pagina index.php deberias usar

$_SERVER['PHP_SELF']

Y deberia hacerle un echo a ver como te la imprime

porque tu la comparas == index.php

pero podria ser que te imprimiera otra cosa como /index.php, con la barra y al comparar no lo hicieras bien

Un saludo
  #5 (permalink)  
Antiguo 05/06/2008, 03:25
 
Fecha de Ingreso: junio-2008
Mensajes: 56
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Autenticar usuario con php y mysql

Ya lo he comprobado y con PHP_SELF me muestra la página en la que estoy, es decir, login.php ; con HTTP_REFERER me muestra toda la ruta anterior, es decir, http://chaplindemo.urjc.es/alfredo/fichaje/ pero sin index.php.


Qué solución podría dar.

gracias.
  #6 (permalink)  
Antiguo 05/06/2008, 05:18
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Autenticar usuario con php y mysql

y como se llega de index.php a login.php

si es por form, pon un campo oculto en el formulario de login, con el valor index.php

y lo recojas por post
  #7 (permalink)  
Antiguo 05/06/2008, 05:42
 
Fecha de Ingreso: junio-2008
Mensajes: 56
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Autenticar usuario con php y mysql

Estando en index.php se llega con un formulario por post a login.php donde se comprueba que el usuario y la contraseña es válida, si se cumple iria ya a ficha.php. Si no, que vuelva a index.php otra vez (con un header creo).

Otra cosa es que en login.php e ficha.php tengo que comprobar que el usuario se ha logado y que viene de una página anterior, sino que le dirija a la principal (index.php).

Agradezco que me ayudárais como implementarlo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 22:51.