Mi consulta es sumamente urgente... Quisiera saber como iniciar una sesión sin necesidad de cookies... La validación con usuario y contraseña.. Ya lo se.. Lo que me faltaría es como registrar la sesión.. Y como recuperarla luego... Por favor un ejemplo practico.. Sé que es con estas funciones,. Pero no entiendo bien en la practica: session_name()
session_start session_register("id"); $session[] También tengo entendido, que hay que pasarlo obligatoriamente por el $_GET, no habrá otra manera... Omar
Las sesiones básicamente son variables globales que nos permiten almacenar datos que necesiten volver a ser usados en otros accesos a la página. Cuando una persona entra a una página que utiliza sesiones automáticamente se crea un archivo de session en los archivos temporales del servidor y en este archivo es donde se guardan los datos que nosotros deseemos almecenar. Para poder manejar las sesiones seria conveniente primero ver la manera que accedemos a estas y las usamos. Como dijimos antes cuando el usuario entra a la página que usa sesiones se crea un archivo, este archivo posee el mismo nombre que su "id". Para que una página utilice sesiones debemos inicializarla con la función "session_start(void)", que básicamente lo que hace es crear una nueva sesión o retomar una creada en otra página(del sitio). Las sessiones propagan su SID(SESSION ID) de dos posibles maneras, según php.ini, por cookies o por url, es decir agregando a todos los posibles link el SID de la sesión. Otra razón por la que la sesiones suelen ser muy utilizadas es para la "autentificacion", determinando el acceso a la página según alguna variable especifica de la sesión. Creemos dos archivos útiles para la explicación: index.php: <?php session_start(); ?> <html> <head> <title>Las sesiones y Yo(Nefertiter)</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <table width="500" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td><?php if(isset($_POST['enviar'])){ if(empty($_POST['usuario']) || empty($_POST['password'])) echo 'Debes llenar todos los datos'; elseif($_POST['usuario']==test and $_POST['password']==test){ $_SESSION['usuario']=$_POST['usuario']; $_SESSION['password']=$_POST['password']; echo 'Te haz loguedo como '.$_SESSION['usuario']; } } ?></td> <td rowspan="2"><form name="login" method="post" action="index.php"> <table width="250" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td>Usuario:</td> <td><input name="usuario" type="text" id="usuario"></td> </tr> <tr> <td>Password:</td> <td><input name="password" type="password" id="password"></td> </tr> <tr align="center"> <td colspan="2"><input name="enviar" type="submit" id="enviar" value="Enviar"></td> </tr> </table> </form></td> </tr> <tr> <td><a href="segura.php">PAGINA SEGURA</a></td> </tr> </table> </body> </html> segura.php: <?php session_start(); if(!empty($_SESSION['usuario'])){ /* La función empty() devuelve verdadero si el argumento posee un valor vacío, al usar ! Empty() devuelve verdadero no solo si la variable fue declarada sino ademas si contiene algún valor no nulo. */ echo 'Te haz logueado como :'.$_SESSION['usuario']; echo 'Haz logrado el acceso a una pagina segura'; }else{ echo 'No estas logueado<br>'; echo 'Esta pagina es restringida!'; } ?> Solo hay una manera de propagar algo por URL, haciendo uso del method GET y es indicándole el SID o mejor una viarable que contenga el session_id() por URL. Ahora veamos como propagamos la info de las variables de session por medio du una url: <?php if (!session_is_registered('count')) { session_register('count'); $count = 1; } else { $count++; } ?> Hola, visitante. Has visto esta página <?php echo $count; ?> veces. <?php # el <?php echo SID?> (Se puede usar <?=SID?> si short tag está activado)(ver php.ini) # es necesario para conservar el session id # en caso de que el usuario haya desactivado las cookies ?> Para continuar, haga click <A HREF="nextpage.php?<?php echo SID?>">aquí</A>. Espero te sirva, cualquier cosa me pides una aclaración y con gusto. Bye Almonato
En primer lugar muchas gracias por la respuesta.. Por tu respuesta he de suponer que debería ser así (olvidémonos de la validación): login.php session_start(); $_SESSION['usuario']=$_POST['usuario']; $_SESSION['password']=$_POST['password']; y para recuperar el valor: cualquierpagina.php echo 'Usuario:'. $_SESSION['usuario']; Este valor los puedo recuperar desde cualquier página.. o tengo que pasar necesariamente el SID por el $_Get (¿pasaría oculto?) - para que usas entonces el session_register : if (!session_is_registered('count')) { session_register('count'); } ¿Cómo obtengo el valor un un valor SID pasadop por $_get .. . .? Espero tu respuesta lo más pronto posible.. por favor.. y disculpa las molestias.. Muchas gracias
Ok... logre hacerlo.. muchas gracias..
Lo primero que tienes que aclarar es si en php.ini las Variables globales están en ON (si estas en OFF siempre debes pasar el SID por el link y recuperarlo con GET) y si short tag esta en ON(si es así puedes colocar el SID en un link, de lo contrario debes colocar session_id() en el link.) Puedes usar session_start o session_register cualquiera recupera o crea la variablede session, pero session_register declara una variable global que la puedes recuperar por el nombre de la variable que tu le das. Obtienes el valor del SID pasado por get solamente colocando la session_start. Cualquier cosa me cuentas BYE Almonato