Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/11/2010, 13:42
breaststroke
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 7 meses
Puntos: 0
variables de sesión y mysql

Hola, buenas tardes.

No se si debería postear esto en php o aquí, ya que mi pregunta está dirigida sobre todo a las variables de sesión, aunque realmente estoy usando mysql también.

Bueno, aseguro que he hecho todo lo posible para entender mi problema, pero no doy con la solución.

Estoy tratando de hacer lo siguiente:
Quiero dar la opción al usuario de log in y de log out desde la página principal(index.php). En la primera visita está log out, claro. Entonces, quiero que aparezca un formulario en el que le pido contraseña y email. Si sus datos están registrados(en Mysql) entonces creo una variable de sesión con su nombre. Además de este formulario hay un enlace para logearse desde otra página( en el mismo , pone log in). Bien, una vez que se ha logeado quiero que en lugar del formulario aparezca un mensaje de bienvenida, y en lugar del enlace con "log in" aparezca "log out". Al pulsar en log out se destruye la variable de sesión y le remite a la página inicial con los valores iniciales( formulario y enlace con log in).

Este es el código que he escrito, más o menos:

Código PHP:
<?php
session_start
()?>
...


<?php

if(!empty($_SESSION['name']))
{
echo 
"Hello ".$_SESSION['name']."<br />";
print<<<HERE
 <div id="log"><a href="logout.php">log in</a></div>
HERE;
}
if(empty(
$_SESSION['name']))
{
print<<<HERE
 <div id="log"><a href="login.html"></a></div>
  <div id="form">
 <table><tr ><td>
 log in:<br />
 <form method="post" action=""></td></tr><tr ><td>
 Your e-mail:<br />
 <input type="text" name="mail" ></td></tr><tr ><td>
 Your password:<br />
 <input type="password" name="password" ></td></tr><tr><td>
 <input type="submit" >Submit <value="enviar"></tr>
 </form></table></div>
HERE;
$conexion=mysql_connect("server","user","password")
 or die(
"Problemas en la conexión");
mysql_select_db("base de datos",$conexion)or
 die(
"Problemas en la selección de datos");
$registros=mysql_query("SELECT*from tabla where password= '$_REQUEST[password]'&& '$_REQUEST[name]'",$conexion)or
 die(
"Problems with select:".mysql_error());
if(
$reg=mysql_fetch_array($registros))
  {
  
$_SESSION['name']=$reg['name'];
  echo 
", hola,".$_SESSION['name'];
print<<<HERE
   <div id="log"><a href="logout.php">Log out</a></li></ul></div>
HERE;
  } 
 else
  {
  echo 
"No estás registrado. ";
  }  
}
?>
</div>
</body>
</html>

Bueno,estoy seguro de que no es muy compliacado para alguien que domine un poco php. Mi explicación seguro que es muy mejorable pero espero que se entienda un poco la idea. He de decir que he probado diversas combinaciones en el orden de los diferentes códigos pero en todos ocurren cosas raras. La primera vez que lo escribí( era otra combinación) parecía funcionar perfectamente. Luego al ir trabajando sobre la página algo cambió y dejó de funcionar bien. Lo peor es que el código escrito por mi tiene lógica( para mí), entonces no soy puedo entender porqué falla. En la página logout.php destruyo la variable. El código no lo he modificado en ningún momento, y al principio funcionaba perfectamente. Es el siguiente:
logout.php:
Código PHP:

<?php session_start();


$_SESSION = array();
session_destroy(); 

header"Location: index.php" );  
exit;

?>
El caso es que no me funciona bien ninguna función y a veces incluso aparecen nombres en la pantalla que fueron introducidos tiempo atrás...Cuando le doy al enlace log out vuelvo a la página pero sigue el log out..etc, etc..
Bueno, lo que más me interesaría saber es qué está mal(supongo que casi todo, hehe). Y como digo, practicamte con lo mismo antes me funcionaba(pero no recuerdo exactamente cómo estaba)..

Un saludo y muchíiiiiiiiisimas gracias de antemano.:)

Última edición por breaststroke; 29/11/2010 a las 13:50