Foros del Web » Programando para Internet » PHP »

Guardar Variable de SESSION

Estas en el tema de Guardar Variable de SESSION en el foro de PHP en Foros del Web. Hola a todos... Por favor si me pueden ayudar con esto de guardar sesiones. Lei algunos post pero estoy perdido. Yo lo que quiero lograr ...
  #1 (permalink)  
Antiguo 20/09/2009, 20:04
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Guardar Variable de SESSION

Hola a todos...

Por favor si me pueden ayudar con esto de guardar sesiones. Lei algunos post pero estoy perdido.

Yo lo que quiero lograr es saber quien inicio sesión (usuario) y la variable de sesión guardarla en un archivo, por ejemplo .txt si se puede o no se como.

Probe con este script y logro ver quien inicio sesión en este momento, pero como guardo la variable en un lugar para verlo cuando quiero?

Código PHP:
<?php 
// Inicializamos sesion 
session_start(); 
// Comprovamos si existe la variable
if ( isset ( $_SESSION['usuario'] ) ) {
 
// Si existe
 
echo $_SESSION['usuario'];
} else {
 
// Si no existe
 
echo 'desconocido';
}
?>
Por favor, si me puede orientar, mostrar algún ejemplo o tutorial al repecto.
  #2 (permalink)  
Antiguo 20/09/2009, 20:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Guardar Variable de SESSION

deja de leer posts...

mejor lee el manual de PHP!!!

http://php.net/session
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 20/09/2009, 20:58
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 2 meses
Puntos: 7
Respuesta: Guardar Variable de SESSION

Completamente de acuerdo con @pateketrueke, pero los tutoriales ayudan muchisimo.

@paulkees, lee este tutorial que en lo personal me sirvio de mucho para entender como funciona Session. Mas claro no lo podras tener.
__________________
JuniHH
- Mi blog
- Mi portafolio
  #4 (permalink)  
Antiguo 20/09/2009, 21:58
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Guardar Variable de SESSION

Hola gente...

Gracias junihh por el dato, ya lo había leido. Lo de sesiones ya lo estoy implementando en el Sitio... lo que quería es una orientación sobre cómo hacer para saber que usuarios inician sesión y guardar la información (Variable) en algún lugar... como si fuese una estadistica. Disculpas, quizás no me explico bien.

Saludos!
  #5 (permalink)  
Antiguo 20/09/2009, 23:20
 
Fecha de Ingreso: marzo-2008
Mensajes: 21
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Guardar Variable de SESSION

se me ocurre lo siguiente:

Si lo que quieres es mantener un registro de los inicios de session en tu sistema has lo siguiente:

1.- modulo de acceso: es cuando se crea la sesion. se supone que en este punto revisaste contra base de datos y en efecto el usuario es valido.

2.- previamente creas una tabla "transacciones", vas a salvar en esa tabla los datos del usuario que inicio sesion, con la fecha y hora.
3.- puedes agregrar un campo para indicar cuando cerro sesion.....este campo se llenara junto antes de limpiar la variable de sesion.
4.- a nivel de consulta: si quisiera listar usuarios activos pues te traes por sql solo los que no tengan definida fecha y hora de cierre de sesion.
5.- Adicionalmente pues a cada seccion de tu aplicacion colocarle un identificador de manera que cuando el usuario entre podras almacenar en transaccion que seccion recorrio.


espero te sea de ayuda...
  #6 (permalink)  
Antiguo 21/09/2009, 02:22
Avatar de conkerick  
Fecha de Ingreso: febrero-2009
Ubicación: WWW
Mensajes: 75
Antigüedad: 15 años, 2 meses
Puntos: 2
Respuesta: Guardar Variable de SESSION

Si sólo quieres saber que usuarios entran al sitio que día y que hora, sin utilizar base de datos, puedes hacer lo siguiente:

Cuando verifiques la información para el acceso a tu sitio, puedes hacer que se tome la fecha (d-m-Y) y se verifique que en una carpeta super-oculta, exista un archivo con dicha fecha, es decir, si hoy es 21-09-2009, se comprobará si existe el archivo "21-09-2009.txt".

Si el archivo existe, lo que hace es guardar la información de acceso, algo así: "Entrada: paulkees el 21-09-2009 a las 20:00 - IP: 127.0.0.1" y así sucesivamente, en caso contrario, se crea el archivo y se guarda la información.

La información puede ser guarda con saltos de línea, comas o como te sea más factible. También puedes complementar con un archivo PHP que lea todos los archivos de la carpeta super-oculta.

OJO: Esto sólo sirve para tener un especie de log con datos de acceso, sólo podrás saber quienes y cuando entraron al sitio.
  #7 (permalink)  
Antiguo 21/09/2009, 08:19
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Guardar Variable de SESSION

Hola conkerick, eso es lo que quiero implementar!

Sabes de algún ejemplo ó tutorial para orientarme como meterme en el tema?

Saludos!
  #8 (permalink)  
Antiguo 22/09/2009, 08:17
Avatar de conkerick  
Fecha de Ingreso: febrero-2009
Ubicación: WWW
Mensajes: 75
Antigüedad: 15 años, 2 meses
Puntos: 2
Respuesta: Guardar Variable de SESSION

Un tutorial habría que buscar, esto fue una simple idea, pero te puedo dar un sencillo ejemplo:

Código PHP:
<?php
// después de validar que el usuario tiene acceso al sitio debe ir esto
$log date('d-m-Y').'.txt';
// abrimos el archivo, si no existe si crea
$fp = @fopen($log'a+');
if(
$fp==false){
    
// aqui lo que quieres que pase si no se pudo abrir o crear el log
    
echo 'No se pudo abrir o crear el archivo, verifica los permisos del directorio';
}
else{
    
// $data = la info que se guarda y $user la variable que contiene al usuario
    
$data 'Entrada: '.$user.' - Fecha: '.date('d-m-Y H:i').' - IP: "'.$_SERVER['REMOTE_ADDR'].'"';
    
$data$data."\r"."\n";
    if(
fwrite($fp$data)==false){
        
// aquí lo que quieres que pase si no se pudo guardar la información
        
echo 'No se pudo guardar la información';
    }
}
// cerramos el archivo
fclose($fp);
// por último, envias o muestras al usuario lo que debas después de aquí
?>
Lo he probado en localhost y me ha funcionado, en este caso si todo va bien, creará el archivo, guardará los datos y no mostrará nada en pantalla.

Recuerda que lo puedes mejorar mucho, pero la idea es servir como ejemplo...

Saludos
  #9 (permalink)  
Antiguo 22/09/2009, 09:25
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 2 meses
Puntos: 7
Respuesta: Guardar Variable de SESSION

@conkerick, por el momento no he guardado logs y tu ejemplo es muy bueno para iniciar, pero tengo una duda: Por que usas la arroba en "$fp = @fopen($log, 'a+');", que significa ???
__________________
JuniHH
- Mi blog
- Mi portafolio
  #10 (permalink)  
Antiguo 22/09/2009, 10:53
Avatar de conkerick  
Fecha de Ingreso: febrero-2009
Ubicación: WWW
Mensajes: 75
Antigüedad: 15 años, 2 meses
Puntos: 2
Respuesta: Guardar Variable de SESSION

El @ se utiliza para que PHP no muestre errores si una función causa errores al ser llamada. En pocas palabras, evitas que el usuario vea un feo error si el script falla, puedes removerlo y quizás veas el error.

Quizás el directorio donde ejecutas el script no tenga permisos de escritura, en el código evito verificar ello pues es algo que debes hacer manualmente para minimizar el código.

Cualquier cosa, aquí te ayudamos ;)
  #11 (permalink)  
Antiguo 22/09/2009, 11:59
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Guardar Variable de SESSION

Después de buscar, recontrabuscar, probar, aprender y siguiendo la idea de conkerick y antes de que publicara su ejemplo... hice esto y funciona, tanto en localhot como en el Servidor.

No se, por ahí alguien que sepa más, me dirá si está bien o es una chapusería!!!

Código PHP:
$_SESSION["nombre"] = $nombre; {
                echo
"Lo que quieras que aparezca escrito";
                
$archivo "tuarchivo.txt";
                
$fecha date('d-m-Y'); 
                
$fd fopen($archivo"a");
                
fwrite($fd"$fecha, $nombre\n\r");
        } 
  #12 (permalink)  
Antiguo 22/09/2009, 12:14
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 2 meses
Puntos: 7
Respuesta: Guardar Variable de SESSION

@conkerick, entendido y anotado, gracias por responder
__________________
JuniHH
- Mi blog
- Mi portafolio
  #13 (permalink)  
Antiguo 22/09/2009, 12:38
Avatar de conkerick  
Fecha de Ingreso: febrero-2009
Ubicación: WWW
Mensajes: 75
Antigüedad: 15 años, 2 meses
Puntos: 2
Respuesta: Guardar Variable de SESSION

@paulkees: Tu código se entiende a medias, quizás debas colocarlo completo, pero si te funciona, muy bien ;)

@junihh: de nada ;)
  #14 (permalink)  
Antiguo 22/09/2009, 17:36
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Guardar Variable de SESSION

Aquí les dejo lo que hice en el archivo que recepciona lo enviado por el formulario. El login para iniciar sesión se hace con dirección de correo activado, si todo va bien, accede a la página protegida y se escribe en el archivo .txt la fecha y el E-mail con el que ingresó:

Código PHP:
<?php

// verificamos si se ha enviado la variable necesaria, la que tenemos en nuestro form.
if (isset($_POST["email"])) {
    
$email $_POST["email"];
    echo 
"<div style='font-size:200%;'>";
    echo 
$email;
    echo 
"</div>";
    
// Comprobamos si el campo E-mail esta en blanco
    
if($email==NULL) {
        echo 
"<div style='font-size:200%;'>Debe ingresar su E-mail</div>";
        
formVerificar();
        }else{
            
// Comprobamos si la cuenta de correo existe
            
$checkemail mysql_query("SELECT email FROM "tu tabla" WHERE email='$email'");
            
$email_no_existe mysql_num_rows($checkemail);
            if (
$email_no_existe==NULL) {
                echo 
"<div style='font-size:130%;'>El E-mail no existe</div>";
                
formVerificar();
        }else{
            
// Comprobamos si la cuenta de correo esta activada
            
$checkestado mysql_query("SELECT email, estado FROM "tu tabla" WHERE email='$email'AND estado='0'");
            
$estado_no_activado mysql_num_rows($checkestado);
            if (
$estado_no_activado==0) {
                echo 
"<div style='font-size:130%;;'>Su E-mail no está activado</div>";
                
formVerificar();
        }else{
           
// Si todos los datos son correctos, inicia sesión y escribe los datos en el archivo .txt        
            
$_SESSION["email"] = $email; {
                echo
"<div style='width:60%;'><a  href='tu_pagina_protegida.php'>Click aquí para ver la página</a></div>";
                
$archivo "tu_archivo.txt";
                
$fecha date('d-m-Y'); 
                
$fd fopen($archivo"a");
                
fwrite($fd"$fecha, $email\n\r");
        }                
        }
        }
        }
        }
        
?>
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 20:07.