Foros del Web » Programando para Internet » PHP »

ya funcionan las sesiones

Estas en el tema de ya funcionan las sesiones en el foro de PHP en Foros del Web. Bueno ya funcionan las sesiones, el erroe estaba en la asignacion de las variables a las variable globales de SESSION...Aqui les dejo el codigo.. index.php ...
  #1 (permalink)  
Antiguo 12/10/2004, 13:40
Avatar de capuleto  
Fecha de Ingreso: octubre-2003
Ubicación: Cartagena
Mensajes: 219
Antigüedad: 14 años, 2 meses
Puntos: 0
ya funcionan las sesiones

Bueno ya funcionan las sesiones, el erroe estaba en la asignacion de las variables a las variable globales de SESSION...Aqui les dejo el codigo..
index.php
Código PHP:
<?php
session_name
("misesion");
session_start();
session_destroy();

/* Esta es una forma fácil de asegurarse que no arrastramos datos 
 * de alguna sesión anterior: en la página inicial, se abre una 
 * sesión e inmediatamente se destruye.
 */

$titulo='Identificaci&oacute;n';
require(
'cabecera.inc');
?>

<form method="POST" action="login.php">

<center>
<table>
<tr>
    <td>Usuario:</td>
    <td><input type="text" name="usuario" value="" size="8"></td>
</tr>
<tr>
    <td>Clave:</td>
    <td><input type="password" name="clave" value="" size="8"></td>
</tr>
</table>
<input type="submit" value="Entrar"></td>
</center>

</form>

<?php require('pie.inc'); ?>
login.php
Código PHP:
<?php

// Array bidimensional con las parejas usuario/clave
$identificacion = array(
    array(
'edward''capuleto' ),
    array(
'nestor''tilla' ),
    array(
'armando''bronca')
);

// Recorremos cada pareja del array
foreach ($identificacion as $datos) {
    
// Extraemos los dos campos
    
$id_usuario $datos[0];
    
$id_clave $datos[1];

    if (
$_POST['usuario'] == $id_usuario) {
        if (
$_POST['clave'] == $id_clave) {
            
// Si coincide el usuario y la clave
            // Almacenamos la fecha en la cookie
            //$nombre_cookie = 'CURSOPHP_ultima_visita';
            //$ultima_visita = $$nombre_cookie;
            //setcookie($nombre_cookie, date('d/m/Y H:i:s'), time()+13140000 );
            
session_name("misesion");
            
session_start();
            
$_SESSION['usuario']=$id_usuario;
            
$_SESSION['clave']=$id_clave;
            
$_SESSION['ultima_visita']=$ultima_visita;
            
            
// Redireccionamos a la siguiente página
            
header('Location: principal.php');
            exit;
        } else {
            
// Si coincide el usuario pero no la clave
            // salimos del bucle
            
break;
        }    
    }
}

// Si llegamos a ejecutar hasta aquí, ha habido algún error
$titulo 'ERROR EN LOGIN';
require(
'cabecera.inc');

echo 
'<center><h2>';
if (
$_POST['usuario'] != $id_usuario) {
    echo 
"Error, usuario ".$_POST['usuario']." desconocido";
} else {
    echo 
'Error, clave incorrecta';
}
echo 
'</h2><br>';

echo 
'<a href="index.php">Volver</a></center>';


require(
'pie.inc');

?>
principal.php
Código PHP:
<?php

// Iniciamos la sesión. Todas las variables que hayamos registrado
// estarán ahora disponibles.
session_name("misesion");
session_start();
$titulo='P&aacute;gina Principal';
require(
'cabecera.inc');
?>

<center><table>
<tr>
    <td>Id de la sesion:</td>
    <td><? echo session_id(); ?></td>
    
</tr>
<tr>
    <td>Nombre de la sesion:</td>
    <td><? echo session_name(); ?></td>
    
</tr>
<tr>
    <td>Usuario:</td>
    <td><? echo $_SESSION['usuario'?></td>
    
</tr>
<tr>
    <td>Clave:</td>
    <td><? echo $_SESSION['clave'?></td>
</tr>
<tr>
    <td>&Uacute;ltima visita:</td>
    <!-- <td><?php if(!isset($_SESSION['$ultima_visita']))
            echo 
'Esta es su primera visita';
           else
            echo 
$_SESSION['$ultima_visita'];?></td> -->
</tr>
</table>

<a href="index.php">Salir</a>
</center>
<?php require('pie.inc'); ?>
Bueno claro ya llegan las variables de sesion, pero tengo una pregunta cluster, cuando entro con un usuario me valida y muestra los datos, pero cuando le doy salir y entro con el mismo/o otro usuario siempre me muestra el mismo identificador de session....porque??...o es porque no cierro el navegador...eso es normal??....asi lo proe con el untentificator tuyo, y tambien muestra lo mismo...me gustaria saber mas y porque pasa asi....

Otra cosa es como manejo las cokiees, aqui estan comentareadas, porque no me muestra nada siempre me muestra esta es su primera visita....lo quq quiero saber es que para registrar esa cokiee como se hace??...
Bueno pero lo logre....me ineresaba lo de las sesiones, ya lo he entendido, pero me queda la duda que les dije....Chao y gracias a todos....Cluster espero respuesta....
__________________
...Definitivamente Soy Nadie entre los Sabios....*-*Capuleto*-*
  #2 (permalink)  
Antiguo 12/10/2004, 13:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm .. supongo que este mensaje guarda relación con otro .. en tal caso deberías haber contestado aquel otro mensaje para no perder el hilo ...

A todo esto, intenta no hacer referencia a alguien en particular cuando preguntas/hablas en el foro público .. recuerda que cualquier persona podría ayudarte o partircipar simplemente en el tema.

Respondiendo tus preguntas:
Cita:
Bueno claro ya llegan las variables de sesion, pero tengo una pregunta cluster, cuando entro con un usuario me valida y muestra los datos, pero cuando le doy salir y entro con el mismo/o otro usuario siempre me muestra el mismo identificador de session....porque??...o es porque no cierro el navegador...eso es normal??....asi lo proe con el untentificator tuyo, y tambien muestra lo mismo...me gustaria saber mas y porque pasa asi....
El problema sucede por propagar el SID en cookies (como lo hace Autentificator o mejor dicho como requiere que se haga para que funcione). Al no cerrar el navegador .. la cookie no "muere" y esta es donde propaga el SID.

En teoría habría que "matar" la cookie de sesión que PHP crea para tomar otro SID diferente. En tu código destruyes la sesión .. pero esto si la cookie sigue "viva" no mata dicha cookie.

Desde PHP 4.3.2 en adelante tienes la función:
session_regenerate_id()
http://www.php.net/manual/es/functio...enerate-id.php

que hace eso mismo .. bueno, mejor dicho .. crea un SID nuevo (ID de sesión concretamente).

En el mismo manual oficial de PHP tienes alternativas para regenerar el SID por si usas versiones inferiores a esa de PHP.

Por mi parte en mi "Autentificator" no tengo en cuenta dicho problema .. entre otras cosas por qué Autentificator es anterior a esas versiones de PHP y .. como todo en la vida .. uno va a aprendiendo con el tiempo también. Tal vez algún día corrija el problema.

Un saludo,
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 00:38.