Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Manejo de Sesiones

Estas en el tema de Manejo de Sesiones en el foro de PHP en Foros del Web. Gente buenas noches me llamo Gaston y hace apenas dos semanas me empece a meter un poquito en php, la verdad es el primer lenguaje ...
  #1 (permalink)  
Antiguo 14/12/2013, 18:27
 
Fecha de Ingreso: febrero-2009
Mensajes: 5
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta Manejo de Sesiones

Gente buenas noches me llamo Gaston y hace apenas dos semanas me empece a meter un poquito en php, la verdad es el primer lenguaje que estoy tratando de aprender.

hay algo que bien no entiendo o no se como hacer con el tema de las seciones. haber si me puedo explicar.

1er.
Tengo el archivo index.php que tiene una estructura html con una etiqueta <form action="login.php" method="post">

2do.

El archivo login.php tiene una estructura pura php <?php .... ?> en la cual tomo los datos del formulario anterior consulto a la base y evaluó si esta bien el usuario o no. en caso de estar bien el logueo ejecuto $_SESSION["s_username"] = $row['usu']; y redirecciono a la pagina home.php

3ro.
home.php es otra pagina con estructura html y acá es donde me pierdo esta pagina debería evaluar si la sesión esta activa para cargar el resto del código html o redireccionar a index.php

porque sino en el navegador pongo www.sarasa.com/home.php y acceso igual a la pagina por mas que no me allá logueado.

como debería hacer para que home no se cargue si no existe una sesión activa. les dejo el código que tengo en home.php haber si ayuda a explicarme.



<html>
<head>
<title>home </title>
<meta charset="utf-8" />
</head>
<body>
<form action="logout.php" method="post">
<input type="submit" value="cerrar sesion." name="logout"></input>
</form>
<?php
if (isset($_SESSION['s_username']))
{
//continuo la carga del html
}else{
//detengo esta pagina y redirecciono a index html
header("Location: index.php");
}
?>
</body>
</html>
  #2 (permalink)  
Antiguo 15/12/2013, 06:03
 
Fecha de Ingreso: diciembre-2011
Mensajes: 64
Antigüedad: 12 años, 4 meses
Puntos: 7
Respuesta: Manejo de Sesiones

*tendrias que poner todo el codigo, el logueo lo haces con conexion a base de datos o de otra forma??

*utilizas session_start() ??

*para el logout te conviene un enlace, escribis menos codigo y es mas personalisable.

Saludos. Gastòn.
  #3 (permalink)  
Antiguo 15/12/2013, 08:14
 
Fecha de Ingreso: febrero-2009
Mensajes: 5
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Manejo de Sesiones

Gastonsl gracias por la respuesta, y si utilizo session_start() solo que no se si esta bien aplicado porque en los ejemplos siempre lo usan como primera linea de código y yo lo uso si el logueo es correcto igualmente ahí agrego el código de los 4 archivos que uso

index.php

<html>
<head>
<title>Loguin</title>
</head>
<body>
<?php?
?>
<form action="login.php" method="post">
<table>
<tr>
<td>Usuario:</td>
<td><input type="textarea" name="usuario" ></input></td>
</tr>

<tr>
<td>Contraseña:</td>
<td><input type="password" name="pass"></input></td>
</tr>

</table>
</br>
<input type="submit" name="ingresar" value="ingresar"></input>
</form>
</body>
</html>


login.php

<?php
// Configura los datos de tu cuenta
$dbhost='localhost';
$dbusername='root';
$dbuserpass='';
$dbname='chacoteydb';

$username = $_REQUEST['usuario'];
$password = $_REQUEST['pass'];

// Conexión a la base de datos
$miconexion = mysql_connect ($dbhost, $dbusername, $dbuserpass);

// Seleccion de la base de datos

mysql_select_db($dbname) or die('No se pudo conectar a la base de datos.');

// Buscar el usuario en la base
$query = "SELECT usu, pass FROM users WHERE usu = '" . $username . "' AND pass ='" . $password . "';";

$result = mysql_query($query);

$row = mysql_fetch_array($result);

if($row['pass'] != $password)
{
echo "Login incorrecto";
}else{

session_start();
$_SESSION["s_username"] = $row['usu'];

header("Location: home.php");
}
mysql_close($miconexion);
?>

home.php

<html>
<head>
<title>home </title>
<meta charset="utf-8" />
</head>
<body>
<form action="logout.php" method="post">
<input type="submit" value="cerrar sesion." name="logout"></input>
</form>
<?php
//if (isset($_SESSION['s_username']))
if ($_SESSION["s_username"])
{
//continuo la carga del html
}else{
//detengo esta pagina y redirecciono a index html
header("Location: index.php");
}
?>
</body>
</html>


logout.php

?<?php
session_start();
session_unset();
session_destroy();
header("Location: index.php");
?>
  #4 (permalink)  
Antiguo 15/12/2013, 08:49
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Manejo de Sesiones

Tu problema esta en el archivo home.php relacionado con session_start();

http://php.net/manual/es/function.session-start.php
  #5 (permalink)  
Antiguo 15/12/2013, 10:19
 
Fecha de Ingreso: diciembre-2011
Mensajes: 64
Antigüedad: 12 años, 4 meses
Puntos: 7
Respuesta: Manejo de Sesiones

como dijo webankenovi ahi esta tu problema...tienes que utilizar session_start() ;

por otro lado te recomiendo que pongas :

"// Configura los datos de tu cuenta
$dbhost='localhost';
$dbusername='root';
$dbuserpass='';
$dbname='chacoteydb';

$username = $_REQUEST['usuario'];
$password = $_REQUEST['pass'];

// Conexión a la base de datos
$miconexion = mysql_connect ($dbhost, $dbusername, $dbuserpass);

// Seleccion de la base de datos

mysql_select_db($dbname) or die('No se pudo conectar a la base de datos.');
"

en un archivo llamado conexion.php (nombralo como quieras) y en las paginas que utilices bbdd pon "<?php include("conexion.php") ;?>"
  #6 (permalink)  
Antiguo 15/12/2013, 10:39
 
Fecha de Ingreso: febrero-2009
Mensajes: 5
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Manejo de Sesiones

webankenovi gracias por tu respuesta y por el link. mirando los ejemplos del link logre resolver mi problema poniendo session_start(); como primera linea en el archivo login.php y en el home.php y ahora funciona perfecto.
  #7 (permalink)  
Antiguo 15/12/2013, 10:42
 
Fecha de Ingreso: febrero-2009
Mensajes: 5
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Manejo de Sesiones

gastonsl voy a tener en cuenta tu recomendación para empezar a modularizar mis proyectos.
gracias a ambos por la ayuda. marco el post como solucionado.

Etiquetas: formulario, html, manejo, sesiones
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




La zona horaria es GMT -6. Ahora son las 10:08.