Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/06/2008, 05:16
alfredorz
 
Fecha de Ingreso: junio-2008
Mensajes: 56
Antigüedad: 15 años, 11 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