El caso esque tengo un sistema de logeo que va como toca, menos por un detalle;
cuando pasamos con éxito el logeo tendria que mostrar en la página siguiente arriba a la izquierda el nombre del usuario logeado, y en vez de eso me muestra "desconocido". He dado miles de millones de vueltas a la cosa durante dias sin ningún resultado. Pongo los códigos a ver si alguien me puede hechar un cable.
Este es el archivo donde rellenamos los campos de las variables para luego ser enviadas al archivo
control.php. Además recoge en la
$_SESSION (por lo menos deberia no?) la variable escrita en el campo
'$usuario' index.php Código PHP:
<?php
// Inicializamos sesion
session_start();
// Guardamos una variable
$_SESSION['usuario'] = $usuario;
?>
<html>
<head>
<title>Autentificación PHP</title>
<style type="text/css">
<!--
.Estilo1 {
color: #CCCCCC;
font-style: italic;
font-size: 12px;
}
.Estilo2 {
color: #FFFFFF;
font-weight: bold;
font-size: 12px;
}
.Estilo3 {
color: #3399FF;
font-weight: bold;
}
a:link {
text-decoration: none;
}
a:visited {
text-decoration: none;
}
a:hover {
text-decoration: none;
}
a:active {
text-decoration: none;
}
.Estilo5 {color: #666666; font-style: italic; font-size: 12px; }
.Estilo7 {color: #000000; font-weight: bold; font-size: 12px; }
-->
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body>
<h1>Autentificación PHP</h1>
<form action="control.php" method="POST">
<table align="left" width="225" cellspacing="2" cellpadding="2" border="0">
<tr>
<td colspan="2" align="center"
<?if ($_GET["errorusuario"]=="si"){?>
bgcolor=red><p><span style="color:ffffff"><b>Datos incorrectos</b></span></p>
<p><span class="Estilo1">si no estas registrado ve a</span> <span class="Estilo2">registrarse</span>
<?}else{?>
bgcolor=#cccccc>Introduce tu clave de acceso</p>
<p><span class="Estilo5">si no estas registrado ve a</span> <span class="Estilo7">registrarse</span> </p> <?}?></td>
</tr>
<tr>
<td align="right">Nick:</td>
<td><input type="Text" name="usuario" size="8" maxlength="50"></td>
</tr>
<tr>
<td align="right">Password:</td>
<td><input type="password" name="contrasena" size="8" maxlength="50"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="Submit" value="ENTRAR"></td>
</tr>
<tr>
<td colspan="2" align="center"><span class="Estilo3"><a href="registro.php">Registrarse</a></span></td>
</tr>
</table>
</form>
</body>
</html>
El archivo
control.php comprueba las variables en la base de datos para ver si hay coincidencias.
control.php Código PHP:
<?
//conecto con la base de datos
$conn = mysql_connect("localhost","usuario","contraseñarrebuscada");
//selecciono la BBDD
mysql_select_db("mibasededatos",$conn);
//Sentencia SQL para buscar un usuario con esos datos
$ssql = "SELECT * FROM mitabla 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);
?>
Y este archivo es donde vamos aparar si todo es correcto y donde tendria que poner el nombre del usuario que se acaba de logear y no 'desconocido'
:
aplicacion.php Código PHP:
<?include ("seguridad.php");?>
<?php
// Inicializamos sesion
session_start();
// Comprovamos si existe la variable
if ( isset ( $_SESSION['nombre'] ) ) {
// Si existe
echo $_SESSION['nombre'];
} else {
// Si no existe
echo 'desconocido';
}
?>
<html>
<head>
<title>Aplicación segura</title>
</head>
<body>
<h1>Si estás aquí es que te has autentificado</h1>
<br>
----
<br>
Aplicación segura
<br>
----
<br>
<br>
<a href="salir.php">Salir</a>
</body>
</html>
Por favor, quien me puede localizar el fallo o decirme que código es el correcto? Estoy desesperado yaaaaa