Problema con sesiones

Iniciado por fede_cp, 26 Mayo 2009, 15:39 PM

0 Miembros y 1 Visitante están viendo este tema.

fede_cp

bueno me pasa lo siguiente... estoy haciendo una pagina con registro de usuarios. al registrarse, voy al login e hice una cosa para probar y no me funciona,me pasa lo siguiente, al entrar con el login le pido que me de el nombre de usuario,pero no me lo da,voy al logout, se cierra la sesion, voy a user.php y me muestra la sesion anterior!!  :-[ igual voy a restringir el user.php

aca van los codigos:
user.php
Código (php) [Seleccionar]
<?php
session_cache_limiter
();
session_start();

require(
'config.php');
require(
'functions.php');


//make connection to dbase
$connection = @mysql_connect($server$dbusername$dbpassword)
or die(mysql_error());

$db = @mysql_select_db($db_name,$connection)
or die(mysql_error());

//build and issue the query
$sql ="SELECT * FROM $table_name";
$result = @mysql_query($sql,$connection) or die(mysql_error());

?>

<html>
<head>
      <title>Bienvenidos</title>
</head>
<body>
<p>Entraste con el Nick:</p>
<?php
 
echo  $_SESSION[user_name];
 
?>

<form name="form1" method="post" action="username.php">
  <label>Cambiar nombre de usuario
    <input type="text" name="username.php">
  </label>

  <p>&nbsp;</p>
  <label></label>
  <input type="submit" name="Submit" value="Cambiar">
</form>
<p>&nbsp;</p>
</body>
</html>


config.php no hace falta...

username.php


Código (php) [Seleccionar]
<?php

//function to get the date
function last_login()
{
$date gmdate("Y-m-d");
return $date;
}

//function that sets the session variable
function sess_vars($base_dir$server$dbusername$dbpassword$db_name$table_name$user$pass)
{


//make connection to dbase
$connection = @mysql_connect($server$dbusername$dbpassword)
or die(mysql_error());

$db = @mysql_select_db($db_name,$connection)
or die(mysql_error());

$sql "SELECT * FROM $table_name WHERE username = '$user' and password = password('$pass')";

$result = @mysql_query($sql$connection) or die(mysql_error());


//get the number of rows in the result set
$num mysql_num_rows($result);

//set session variables if there is a match
if ($num != 0
{
while ($sql mysql_fetch_object($result)) 
{
$_SESSION[first_name $sql -> firstname;
$_SESSION[last_name $sql -> lastname
$_SESSION[user_name $sql -> username;       
$_SESSION[password $sql -> password;
$_SESSION[group1]   $sql -> group1;
$_SESSION[group2]   $sql -> group2;
$_SESSION[group3 $sql -> group3;
$_SESSION[pchange] $sql -> pchange;  
$_SESSION[email $sql -> email;
$_SESSION[redirect] $sql -> redirect;
$_SESSION[verified] $sql -> verified;
$_SESSION[last_login] $sql -> last_login;
}
}else{
$_SESSION[redirect] = "$base_dir/errorlogin.html";
}
}

//functions that will determine if access is allowed
function allow_access($group)
{
if ($_SESSION[group1] == "$group|| $_SESSION[group2] == "$group|| $_SESSION[group3] == "$group||
$_SESSION[group1] == "Administrators" || $_SESSION[group2] == "Administrators" || $_SESSION[group3] == "Administrators" ||
$_SESSION[user_name] == "$group")
{
$allowed "yes";
}else{
$allowed "no";
}
return $allowed;
}

//function to check the length of the requested password
function password_check($min_pass$max_pass$pass)
{

$valid "yes";
if ($min_pass strlen($pass) || $max_pass strlen($pass))
{
$valid "no";
}

return $valid;
}

?>


en functions.php hay mas cosas pero esta lo que seria la parte de username.

alguna idea?
somos lo que hacemos para cambiar lo que somos

http://elhackerblog.blogspot.com el blog de elhacker.net!!

sclub

Parto de la base que el segundo codigo que pones es el username.php.

He visto que en ese archivo, te pones a guardar variables de session, sin haber abierto ninguna session... alomejor es por eso.

Por otra parte, como le pasas las sessiones de una pagina a otra?
Al mismo tiempo que le indicas el archivo al que tiene que ir, le tienes que indicar el nombre de session y la id.

No lo acabo de ver claro... pero bueno, tampoco se mucho de php...  :-\

C u!
... because making UNIX friendly is easier than debugging Windows.

fede_cp

#2
el id eso si me falta...

la sesion empieza con session_start()  ;)
voy a ver que hago
si alguien tiene ganas de revisar un poco el codigo y darme una mano muchas gracias ;)

adios
somos lo que hacemos para cambiar lo que somos

http://elhackerblog.blogspot.com el blog de elhacker.net!!

fede_cp

perodon gente el username.php no tiene nada que ver con el user.php

el user.php es donde esta mi duda.. si quieren fijarse lo del username es para cambiar el nombre de usuario que tampoco me funciona bien ya que no reconoce bien cuando inicia sesion

adios!
somos lo que hacemos para cambiar lo que somos

http://elhackerblog.blogspot.com el blog de elhacker.net!!

fede_cp

problema solucionado!  ;D

codeando un rato me di cuenta de que nunca puse el nombre de inicio de sesion (en mi caso es $_SESSION[user_name]).

osea que quedaria:

session_start($_SESSION[user_name]);

ahoram e falta restringir el acceso y listo!


adios y gracias
somos lo que hacemos para cambiar lo que somos

http://elhackerblog.blogspot.com el blog de elhacker.net!!

дٳŦ٭

Cita de: fede_cp en 27 Mayo 2009, 02:12 AM
problema solucionado!  ;D

codeando un rato me di cuenta de que nunca puse el nombre de inicio de sesion (en mi caso es $_SESSION[user_name]).

osea que quedaria:

session_start($_SESSION[user_name]);

ahoram e falta restringir el acceso y listo!


adios y gracias

No es necesario...

Usa:

session_start();
$_SESSION[user_name];

O session_registrer().

Y respondiendo al otro usuario, las sesiones se pasan a cualquier pagina que las use mediante la variable $_SESSION que es una variable global.

Saludos


Con sangre andaluza :)


sclub

Entonces cuando ya tienes una session abierta, con sus variables y todo(de session), y pasas a otra pagina, para que las variables se mantengan no le tienes que poner aquello de:
Citarloquesea.php?".session_name()."=".session_id();
despues del nombre del archivo??

Yo creia que si no lo ponias no reconocia las variables....

Ok, thks!

C u!
... because making UNIX friendly is easier than debugging Windows.

fede_cp

Gracias por responder cuando pense que ya estaba todo arreglado y no era asi..

entonces no hay que poner como dijo Sclub para que  te reconzca cuando cambias de pagina? osea que siga en la misma sesion

un saludo
somos lo que hacemos para cambiar lo que somos

http://elhackerblog.blogspot.com el blog de elhacker.net!!

Littl3

Hasta donde yo se, con declarar session_start(); al principio de cada pagina donde quieras usar estas variables, todas las variables de session estan disponibles haciendo:

$_SESSION['variable']

Y si quieres terminar la session y destruir todas las variables yo utilizo session_destroy(); pero antes has de haber iniciando la session con session_start();

Corregirme si me equivoco, un saludo

sclub

Buenas!

Puede que si... no te niego que suele funcionar igual, pero creia que era la manera "chapuzera" de hacerlo, por llamarlo de alguna manera. Yo esque aprendi directamente la teoria, y decia que era con el name y el id, pero bien.

Por otra parte, yo para cerrar session uso el session_unset(), supongo que la funcion sera similar.

C u!
... because making UNIX friendly is easier than debugging Windows.