Foros del Web » Programando para Internet » PHP »

Phpsessid

Estas en el tema de Phpsessid en el foro de PHP en Foros del Web. Hola, estoy desarrolando un sitio y quisiera me echaran una mano, tengo problemas con las sesiones, tengo incluso el Autenticator de Cluster, pero por aquella ...
  #1 (permalink)  
Antiguo 12/11/2004, 11:36
 
Fecha de Ingreso: julio-2004
Mensajes: 45
Antigüedad: 13 años, 4 meses
Puntos: 0
Pregunta Phpsessid

Hola, estoy desarrolando un sitio y quisiera me echaran una mano, tengo problemas con las sesiones, tengo incluso el Autenticator de Cluster, pero por aquella mania de querer hacer siempre mi código me lo lei (al igual que unos 12 post referentes al tema), pues bien, el código que utilizo es el siguiente (sacado de alguno de esos post, gracias de antemano):

extracto de index.php
Código HTML:
<form action="my.php" method="post" name="login" target="_top">
<table width="100%"  border="0" cellspacing="0" cellpadding="0" class="form">
  <tr>
    <td><Login:</td>
    <td><input name="user" type="text" size="14"></td>
  </tr>
  <tr>
    <td>Password: </td>
    <td><input type="password" name="pass" size="14"></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><input name="remember" value="yes" type="checkbox"> Remeber me <input name="go" type="image" src="images/en-us/go.gif"></td>
  </tr>
</table>
</form> 
Extracto de my.php (1 de 2)
Código PHP:
<?php
require_once("./includes/generalfunctions.php");
conectar();
$usuario $_POST['user']; 
$password$_POST['pass']; 
$query mysql_query("SELECT Username, Password FROM tabla WHERE Username='$usuario' AND Password='$password'") or die("Invalid Query");

if(
$array mysql_fetch_array($query)){
    
session_start();
    
$_SESSION['autentificado'] = "SI";
    
$_SESSION['usuario'] = $array["Username"];
} else { 
    
header("Location: index.php?errorusuario=si");
}
?>
Extracto de my.php (2 de 2)
Código HTML:
Welcome, <?php echo "<strong>".$_SESSION['usuario']."</strong>"; ?> 
Ahora bien, me muestra en verdad lo que necesito, dice Welcome usuario, y los enlaces de toda la web me aparecen como http://midominio.com/pagina.php?PHPSESSID=algunstring pero solo en esa pagina y no en todas las subsiguientes, como puedo resolverlo, necesito mantener dicha sesión, hasta cerrar el navegador (avance por las paginas que avance dentro de mi sitio) y por un tiempo X si marca la opción de "Remeber Me".

Antes de que lo olvide...
Código PHP:
function conectar() {
    global 
$host$user$pass$db;
    
$link mysql_connect($host$user$pass);
    if (
$link) {
        
$linkselect mysql_select_db($db$link);
        if (!
$linkselect) {
            
$errmsg $strError_db;
        }
    }
    else {
        
$errmsg $strError_connection;
    }
    return 
$link;

Gracias nuevamente y felicitaciones por el foro,

Nos vemos,
  #2 (permalink)  
Antiguo 12/11/2004, 13:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si te fijas en todos esos mensajes que has leido sobre sesiones y en la documentación de mi Autentificator .. se menciona algo sobre un término que se denomina: SID (Identificador único de sesión).

Ese SID .. es lo que ves en alguna ocasión por el URL que se compone de un "nombre" de la sesión (en tu caso y por defecto suele ser PHPSESSID) y un "ID" (el resto del código alfanumérico que ves) ..

Ese SID hay que propagarlo entre un script a otro .. esto lo puedes hacer por el URL o por cookies .. y a su vez dejando que PHP lo haga automáticamente o tu manualmente.

El caso es que PHP NO inserta el SID en redireccionamientos como los que haces: header ("Location: ....") .. así que o bien propagas el SID en cookies o lo tendrás que hacer a mano usando la constante SID o las funciones session_mame() y session_id() para componer el SID.

Otro detalle importante es que debes usar session_Start() antes de pretender acceder para dar una valor a una variable de sesión ($_SESSION ..) o intentar ver su valor (como tu caso my.php..).

En tu ejemplo my.php .. no se vé si usas session_start() o no .. tampoco mencionas la configuración de PHP que usas (php.ini o en un phpinfo() lo puedes ver) sobre las directivas:

session.use_trans_sid (que por lo que mencionas parece que está a ON)
session.use_cookies (que no sabemos su valor en tu caso)

Y que .. para que el SID se propague en cookies necesita que tu navegador de pruebas acepte cookies.

Un saludo,
  #3 (permalink)  
Antiguo 12/11/2004, 13:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
[quotehasta cerrar el navegador (avance por las paginas que avance dentro de mi sitio) y por un tiempo X si marca la opción de "Remeber Me".[/quote]

El tema de "Remeber Me" (recordad contraseña para otro ingreso al sitio) .. eso no lo controlarías con sesiones (en principio no debes usarlo para tal fin) .. En ese caso debes usar cookies.

Es decir ... combinar cookies con sesiones para consegir seguridad y esa funcionalidad.

Un saludo,
  #4 (permalink)  
Antiguo 12/11/2004, 13:35
 
Fecha de Ingreso: julio-2004
Mensajes: 45
Antigüedad: 13 años, 4 meses
Puntos: 0
Busqueda Y ahora?

Gracias Cluster, lo que mencionas del session_start esta en el código siguiente.
Código PHP:
if($array mysql_fetch_array($query)){
    
session_start();
    
$_SESSION['autentificado'] = "SI";
    
$_SESSION['usuario'] = $array["Username"];
} else {
    
header("Location: index.php?errorusuario=si");

Pero no se si lo que me indicas es que lo tenga que usar antes o fiera del condicional para así manejar una sesion sea un usuario logeado o no.

Lo del SID lo he leido y no lo entendi mucho pues tengo entendido que es global, siempre y cuando sea inciada la sesión, ahora, como tendria que ser el código para hacer las cookies, seria con setcookie, de ser así que me recomiendan,

La forma manual es agregar a todos los enlaces del sitio la variable del SID no? Acaso existe otra forma, pues eso seria bastante engorroso y muy largo, existe una forma automática, como la uso?

Referente a la configuración de mi servidor, y partamos de la hipotesis de que el navegador del cliente acepta las cookies.

session.use_cookies On
session.use_trans_sid 1

Gracias nuevamente,
  #5 (permalink)  
Antiguo 12/11/2004, 14:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Con session.use_cookies On ... ya estás indicando a PHP que cree una cookie para propagar el SID .. así que no te tendrías que preocupar nada más sobre la propagación del mismo .. tan sólo asegurarte de usar navegadores que acepten las cookies que PHP va a generar.

Hay un detalle .. en un mismo flujo de un script (al parecer tu my.php) .. no puedes dar valor a una variable de sesión ($_SESSION['tal_variable']="valor") e intentar ver su valor en el mismo script (flujo del mismo mejor dicho) .. es decir .. lo normal sería que usases eses script de validación y autentificación de tu usuario que crea tus varaibles de sesión y de ahí redirecciona a otro script (aunque sea a si mismo) para que queden disponibles las variables de sesión (así lo hace mi "Autentificator" .. estudia el código).

Un saludo,
  #6 (permalink)  
Antiguo 17/11/2004, 11:31
 
Fecha de Ingreso: julio-2004
Mensajes: 45
Antigüedad: 13 años, 4 meses
Puntos: 0
Hola, gracias por la ayuda, he estado manejando ahora cookies, para suplir otros requerimientos, espero no complicarme más, gracias nuevamente.

Nos vemos,
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 12:18.