Login mostrar el usuario en una nueva pagina

Necesitaría ayuda ya que soy nuevo en esto. De una pagina inicial index.html envío el login y passwd y al enviar a conectar y validar y enviar a la nueva pagina todo hasta ahí va bien el problema es que no me muestra el usuario conectado.

Adjunto desarrollo

-------------------------------------------------------------------------

¿

<?php
$conexión =mysql_connect("localhost", "admin", "gino01");
if(!$conexión){
echo "No se pudo establecer la conexión";

}else{
echo "La conexión es exitosa";
}
mysql_select_db("sants", $conexión)
or die("Error con la base de datos");
?>

-------------------------------------------------------------------------------

<?php
//Proceso de conexión con la base de datos
include("conexión.php");
//Inicio de variables de sesión
if (!isset($_SESSION)) {
session_start();
}
// Recibir los datos ingresados
$empresa=$_POST['empresa'];
$passwd1=$_POST['passwd1'];
// Verificar los datos guardados
$consulta= "SELECT * FROM registro WHERE empresa='".$empresa."' AND passwd1='".$passwd1."'";
$resultado= mysql_query($consulta,$conexión) or die (mysql_error());
$fila=mysql_fetch_array($resultado);
if (!$fila[0]) //opcion1: Si el usuario no existe o los datos son incorrectos
{
echo '<script language = javascript>
alert("Empresa o Clave errados, por favor verifique.")
self.location = "index.html"
</script>';
}
else
{
$_SESSION['id_empresa'] = $fila['id_empresa'];
$_SESSION['empresa'] = $fila['empresa'];
header("Location: $empresa.php");
}
?>

------------------------------------------------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Design by Free CSS Templates
http://www.freecsstemplates.org/
Released for free under a Creative Commons Attribution 2.5 License
Name : OfficialWork
Description: A two-column, fixed-width design with dark color scheme.
Version : 1.0
Released : 20121012
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="keywords" content="" />
<meta name="description" content="" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>pagina usuarios</title>
<link href="http://fonts.googleapis.com/css?family=Oswald" rel="stylesheet" type="text/css" />
<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript" src="jquery/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="jquery/jquery.gallerax-0.2.js"></script>
<style type="text/css">
@import "gallery.css";
</style>
</head>
<body>
<?php
// iniciar Sesion
//Proceso de conexión con la base de datos
//include("conexión.php");
session_start();
// Validar si se esta ingresando con session corracta
if (!$_SESSION) {
echo '<script language = javascript>
alert ("usuario no autenticado")
self.location = "index.html"
</script>';
}
// necesito que en el titulo empresa me ponga de donde ha hecho el login
// asi como en el usuario conectado
?>
<div id="wrapper">
<div id="header">
<div id="logo">
<h1>empresa</h1>
</div>
</div>
<div id="usuario">
<img src="images/diagram-47.png" width="32" height="32" alt="usuario" />
<p> Usuario conectado: <?echo $empresa;?></p>
</div>
<!-- end #header -->
<div id="header">
<ul class="menu">
<!--<li class="current_page_item">-->
<li><a href="index.html">Home</a></li>
<li><a href="comercios.html">Comercios</a></li>
<li><a href="hoteles.html">Hoteles</a></li>
<li><a href="transporte.html">Transporte</a></li>
<li><a href="sitios.html">Sitios de Interes</a></li>
<li><a href="servicios">Servicios Publicos</a></li>
<li class="last"><a href="contacto">Contacto</a></li>
</ul>
</div>
</body>
</html>

En la espera de sus noticias

1 respuesta

Respuesta
1

De la version de PHP 5 en adelante, las variables superglobales ya no son procesadas con extract() para crear variables, de manera que si quieres imprimir el valor de $_SESSION[empresa] debes usar si o si $_SESSION[empresa] y no $empresa unicamente.

Otra opción es procesar esa variable con extract():

extract($_SESSION);

Esto genera una variable para cada indice en el array, con el valor correspondiente.

Ahora dejame darte unos consejos.

Siempre inicia la sesión con session_start() en el archivo de conexión.

Para validar que el usuario se encuentre logueado, utiliza un subíndice de $_SESSION, algo como $_SESSION[usuario_logueado], que pondrás en 1 o 0 depende el caso.

Los archivos que son de PHP exclusivamente, ¿y qué serán incluidos (como el caso de tu archvivo) no es una buena practica cerrarlos con?>, sino que es mejor no utilizar ese tag. Esto no genera un error, y te aseguras que no se envíen datos al navegador, que podrían comprometer el funcionamiento de otras funciones como session_start() y header() que requieren que ningún dato sea enviado al cliente previo a su ejecución.

Y un dato más, cuando en PHP utilizas comillas dobles para delimitar una cadena, no es necesario cortar y concatenar, solo ensucias el código.

En vez de

$consulta= "SELECT * FROM registro WHERE empresa='".$empresa."' AND passwd1='".$passwd1."'";

Usa directamente

$consulta= "SELECT * FROM registro WHERE empresa='$empresa' AND passwd1='$passwd1' ";

O en todo caso, yo sería más especifico:

$consulta= "SELECT * FROM registro WHERE empresa='{$_POST[empresa]}' AND passwd1='{$_POST[passwd1]}' ";

El uso de {} alrededor de la variable, es porque es un Array y no se ponen comillas alrededor del subíndice cuando escribes un array dentro de una cadena.

Muchas gracias por tu respuesta ha sido muy clara.

De todas maneras quería pedirte un favor, en la parte que dices:

1).- ?>, sino que es mejor no utilizar ese tag. Esto no genera un error


- Como lo harías?


2).-Para validar que el usuario se encuentre logueado, utiliza un subíndice
de $_SESSION, algo como $_SESSION[usuario_logueado], que pondrás en 1 o
0 depende el caso.


Como es eso de subíndice? quiere decir que debo crear otro registro en la tabla y moverle un 1 cuando esta logueado. Podrías explicármelo con un ejemplo por favor.


Muchas gracias por tu preciosa ayuda.


Saludos


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas