Problema con las sesiones en php

loic_sephiroth
17 de Junio del 2003
Hola, estoy casi recien empezado en php, intentando crear un juego de estrategia online, y lo primero que necesito es poder tener sesiones de usuario. Me informé al respectó y averigué que la manera más sencilla es de utilizar las funciones session que vienen incorporadas en el PHP.

Los usuarios y las claves están guardados en una base de datos MySQL.

La primera página que pongo es una donde puedes escribir tu usuario y tu contraseña de usuario, y cuando le das al botón submit recarga la página con los datos, comprueba que la contraseña que has puesto se corresponde al usuario escrito (comparándolo en la base de datos). Antes de utilzar las sesiones, me funcionaba bien, y podía pasar las variables a través de las páginas, especificándolas en la URL.

El problema que tengo ahora con las sesiones es que ponga lo que ponga en las casillas de usuario y contraseña, cuando le doy a submit en la página de inicio de usuario la información que manda la página es la del usuario que estuve utilizando inicialmente.

Pueden ver un ejemplo de lo que digo en http://doomsday.webcindario.com/

estuve utilizando el usuario "bruceland" de contraseña "gromenawer". Si pruebo a poner otro usuario, por ejemplo "republica" de contraseña "capitan", cuando le de al boton sumbit estará enviando la información del usuario "bruceland".

Les envio el código que he utilizado para esta página:

<html>

<body>

<?php

if ($submit) {
session_start();
session_register("txt_usuario");
$session=session_id();

// process form
$dbDoomsday = mysql_connect("localhost","***","***");
mysql_select_db("***",$dbDoomsday);
$consultaUsuarios = mysql_query("SELECT * FROM naciones WHERE nick='$txt_usuario'",$dbDoomsday);
$resultadoConsultaUsuarios = mysql_fetch_array($consultaUsuarios);

if ($resultadoConsultaUsuarios["contraseña"] == $txt_contraseña){
printf("Contraseña introducida correctamente, viva %s ! %s<BR>",$resultadoConsultaUsuarios["Nombre"],$txt_usuario);
$nacion = $resultadoConsultaUsuarios["Nombre"];
printf("<A href='doomsday_index.php?%s'>Entra y gobierna tu nación!</A>", $session);
} else{
echo "No has escrito bien la contraseña, o el usuario...o estás intentando colarte en el usuario de otra persona...tramposo! Que me he quedado con tu cara, eh! Los tramposos suelen acabar con sus provincias contaminadas por la explosión de una bomba nuclear, así que yo que tú no volvería a 'equivocarme' de nuevo, susio!<BR><BR>";

// display form

?>

<CENTER>
<B><FONT size="6">Inicio de sesión</FONT></B> <BR>
Introduce el nombre de tu naci&oacute;n y la contrase&ntilde;A <BR>
<BR>
<BR>
<BR>
<form method="post" action="<?php echo $PHP_SELF?>">

Nación:<input type="Text" name="txt_usuario"><br>

Contraseña:<input type="Password" name="txt_contraseña"><br>

<input type="Submit" name="submit" value="Dicta tus mandatos">

</form>
</CENTER>

<?php
} // end if
} else{
?>

<CENTER>
<B><FONT size="6">Inicio de sesión</FONT></B> <BR>
Introduce el nombre de tu naci&oacute;n y la contrase&ntilde;A <BR>
<BR>
<BR>
<BR>
<form method="post" action="<?php echo $PHP_SELF?>">

Nación:<input type="Text" name="txt_usuario"><br>

Contraseña:<input type="Password" name="txt_contraseña"><br>

<input type="Submit" name="submit" value="Dicta tus mandatos">

</form>
</CENTER>
<?php
}
?>

</body>
</html>


He probado a meter session_start(), session_register() y session_id(), por todas partes, pero con idénticos resultados.

A ver si alguien pudiese resolverme este problema que tengo.



Makoke
17 de Junio del 2003
Funciona bien.
El secreto de las sesiones es que duran mientras este abierto el navegador.
Si quieres entrar como otro usuario para hacer tus pruebas cierra el navegador (todas las ventanas).
Eso hice yo y pude entrar a tu sitio con los dos nobres de nacion diferentes

Saludos

loic_sephiroth
17 de Junio del 2003
Ah, muchas gracias por resolverme la duda. Estuve probando en varios foros, y en ninguno me habían contestado.

Intenté probar un botón de session_destroy()...pero no parece funcionar. En todo caso, ahora que sé que cerrando todo se puede meter una nueva sesión, será más fácil.

Venga, gracias por la ayuda, y un saludito.