Duda sobre sesiones y datos de usuario

R

RemPro

Hola Betas! primero que nada disculparme por tantas preguntas que vengo haciendo, es que antes de terminar mi proyecto quiero tener todo bien en claro jeje.

La gran duda que estoy teniendo ahora es si cuando hago una sesion PHP "sabe" que cada modificacion pertenece a ese usuario.
Por ejemplo, si yo inicio sesión, cargo una foto a mi perfil, y luego se conecta otro usuario, ¿PHP ya "sabe" que debe hacer los cambios en su perfil y NO en el mio?
 

nestornoe

Épsilon
Programador
Desde
11 Mar 2013
Mensajes
884
La sesion solo trabaja sobre la computadora que la creo, mientras no cierre el navegador la sesion sigue activa, por ejemplo yo entro me logueo y se crea uns variable de sesion $_SESSION["nombre"]=$nombre;, esta sesion va a estar activa en mi computadora mientras no cierre el navegador, si otro usuario entra desde otra computadora a el se le crea una variable pero en su navegador.

Saludos
 
R

RemPro

La sesion solo trabaja sobre la computadora que la creo, mientras no cierre el navegador la sesion sigue activa, por ejemplo yo entro me logueo y se crea uns variable de sesion $_SESSION["nombre"]=$nombre;, esta sesion va a estar activa en mi computadora mientras no cierre el navegador, si otro usuario entra desde otra computadora a el se le crea una variable pero en su navegador.

Saludos

Gracias por tu respuesta!, creo que no me expresé bien con la pregunta :p

Si en el código "dice" que cada sesion se basa en el ID del usuario entonces, ¿es por eso que PHP "sabe" que tiene que guardar los datos para cada usuario distinto?. Supongo que para eso sirven las sesiones XD
 

vicram10

Épsilon
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
8 May 2013
Mensajes
751
Edad
39
yo siempre igual uso campos identificativos para cada usuario que se loguea, al comenzar o inicio de la lectura de mi sitio, hago la carga de una variable que contiene un nro aleatorio con una conjuncion de otras cosas para que sea unico para cada visitante y dicho "ID" lo uso en conjunto con la sesion

Un ejemplo de como lo uso seria una funcion que se ejecuta y hace esto

PHP:
//inicializamos nuestra sesion
function loadSession()
{
	global $sc;
	//Iniciamos la Session
	session_start();
	//Seleccionamos un codigo generado
	if (!isset($_SESSION['session_value']))
	{
		$_SESSION['session_value'] = md5(session_id() . mt_rand());
	}
	$sc = $_SESSION['session_value'];
}

donde la variable $sc es una variable global que podras usar en todos lados y que le identifica a cada visitante (en ese momento activo en tu web).

Entonces al momento de loguearse lo unico que hago por ejemplo es

PHP:
$_SESSION['ID_USUARIO'.$sc] = (int) $_GET['id'];

Entonces esa variable de sesion lo guardo en una variable global para usarlo en todos lados algo asi como

PHP:
$id_usuario = $_SESSION['ID_USUARIO'.$sc];

de esa forma cuando subas alguna imagen y lo guardes en la bd, se guardará con el id del miembro que esta activo en ese instante.

Obviamente al momento de desloguarte deberas de matar o borrar todas las sessiones creadas, y ahi esa funcion te volverá a calcular un nuevo valor para la variable $sc
 

Feddy

Gamma
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
13 Dic 2013
Mensajes
373
Edad
34
sigue sin entenderse la pregunta xD pero cada $_SESSION["variable"]; se guarda para cada cliente en el servidor. si en tu script usas $_SESSION["Usuario"] cada cliente va a tener un usuario diferente por mas que la variable sea la misma ya que son clientes diferentes y php no va a mezclar los datos de ambos. De todas formas un par de verificaciones si vas a escribir datos en base de datos deberias hacer :witless:
 
R

RemPro

yo siempre igual uso campos identificativos para cada usuario que se loguea, al comenzar o inicio de la lectura de mi sitio, hago la carga de una variable que contiene un nro aleatorio con una conjuncion de otras cosas para que sea unico para cada visitante y dicho "ID" lo uso en conjunto con la sesion

Un ejemplo de como lo uso seria una funcion que se ejecuta y hace esto

PHP:
//inicializamos nuestra sesion
function loadSession()
{
	global $sc;
	//Iniciamos la Session
	session_start();
	//Seleccionamos un codigo generado
	if (!isset($_SESSION['session_value']))
	{
		$_SESSION['session_value'] = md5(session_id() . mt_rand());
	}
	$sc = $_SESSION['session_value'];
}

donde la variable $sc es una variable global que podras usar en todos lados y que le identifica a cada visitante (en ese momento activo en tu web).

Entonces al momento de loguearse lo unico que hago por ejemplo es

PHP:
$_SESSION['ID_USUARIO'.$sc] = (int) $_GET['id'];

Entonces esa variable de sesion lo guardo en una variable global para usarlo en todos lados algo asi como

PHP:
$id_usuario = $_SESSION['ID_USUARIO'.$sc];

de esa forma cuando subas alguna imagen y lo guardes en la bd, se guardará con el id del miembro que esta activo en ese instante.

Obviamente al momento de desloguarte deberas de matar o borrar todas las sessiones creadas, y ahi esa funcion te volverá a calcular un nuevo valor para la variable $sc


sigue sin entenderse la pregunta xD pero cada $_SESSION["variable"]; se guarda para cada cliente en el servidor. si en tu script usas $_SESSION["Usuario"] cada cliente va a tener un usuario diferente por mas que la variable sea la misma ya que son clientes diferentes y php no va a mezclar los datos de ambos. De todas formas un par de verificaciones si vas a escribir datos en base de datos deberias hacer :witless:

Gracias a los por sus respuestas.
Por lo que veo mi pregunta es muy tonta o no me se explicar bien jajaja.
Por ejemplo, si me logueo en una página, cambio mi avatar y cierro sesión. Y después otro usuario se loguea y también cambia su avatar, ¿cómo "sabe" la página que tiene que cambiarle el avatar al otro usuario y NO a mi?.
 

Feddy

Gamma
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
13 Dic 2013
Mensajes
373
Edad
34
Supongo que tenes una base de datos y en esa base de datos tenes una tabla de usuarios... cada usuario tiene su propio ID y supongo que debes tener una columna con la direccion url del avatar.. Cuando entres vos a la pagina y hagas la subida del avatar vas a editar la base de datos poniendo la url del nuevo avatar. Desconectas y entra otro usuario con un ID diferente y hace lo mismo en otra fila con su respectivo ID. Ahora PHP puede diferenciar un usuario del otro usando las Sesiones. Al momento de Conectarte en tu pagina tenes que hacer una llamada a la base de datos para comprobar que el usuario y el password son los mismos y estan correctos.
PHP:
$myquery = mysql_query("Select * From users Where Usuario = '".$_POST["usuario"]."'  and Password = '".$_POST["pass"]."');
while ($fila = mysql_fetch_assoc($myquery)) {
    $_SESSION['ID'] = $fila['id']; //el numero de index de la tabla
    $_SESSION['Avatar'] = $fila['avatar']; //la direccion del avatar
}
de esa manera guardas las variables en la session actual y PHP reconoce que usuario cambio o cual no cambio su avatar o los datos que tengas guardado. Si de esta manera no entedes, hay que ver el codigo de tu web para poder explicar un poco como haces la carga de los datos cuando inician sesion jajaja
 
R

RemPro

Supongo que tenes una base de datos y en esa base de datos tenes una tabla de usuarios... cada usuario tiene su propio ID y supongo que debes tener una columna con la direccion url del avatar.. Cuando entres vos a la pagina y hagas la subida del avatar vas a editar la base de datos poniendo la url del nuevo avatar. Desconectas y entra otro usuario con un ID diferente y hace lo mismo en otra fila con su respectivo ID. Ahora PHP puede diferenciar un usuario del otro usando las Sesiones. Al momento de Conectarte en tu pagina tenes que hacer una llamada a la base de datos para comprobar que el usuario y el password son los mismos y estan correctos.
PHP:
$myquery = mysql_query("Select * From users Where Usuario = '".$_POST["usuario"]."'  and Password = '".$_POST["pass"]."');
while ($fila = mysql_fetch_assoc($myquery)) {
    $_SESSION['ID'] = $fila['id']; //el numero de index de la tabla
    $_SESSION['Avatar'] = $fila['avatar']; //la direccion del avatar
}
de esa manera guardas las variables en la session actual y PHP reconoce que usuario cambio o cual no cambio su avatar o los datos que tengas guardado. Si de esta manera no entedes, hay que ver el codigo de tu web para poder explicar un poco como haces la carga de los datos cuando inician sesion jajaja

¡¡Clarito como el agua, Feddy!!, por favor entiende que soy Novato, jeje.

Y para terminar con el topic, ¿que tienen que ver los Cookies en todo esto?, ¿se usan para lo mismo? :O
 

Feddy

Gamma
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
13 Dic 2013
Mensajes
373
Edad
34
por lo general si queres que un usuario mantenga los datos de sesion se almacenan en cookies.
las Cookies se almacenan en el cliente (Firefox, Chrome, Opera, etc) y les das un tiempo de vida. Solamente usa Cookies si tenes un boton en tu login que diga (Mantener sesion activa o Iniciar sesion automaticamente activado)

PHP:
//esto lo creas en vez de el $_SESSION["Usuario"]

setcookie("miCookiedeUsuario", "Usuario", time()+3600); // 1 hora dura la cookie (Sesion)
//setcookie("miCookiedeUsuario", "Usuario", time() + (10 * 365 * 24 * 60 * 60)); // varios años ajaja 2038 creo

//Para despues llamar y imprimir el usuario
echo $_COOKIE["miCookiedeUsuario"];

cuidado con las cookies ya que se almacenan en el cliente y el usuario puede hacer algun que otro intento de cambiar ese valor...creo que se entiende :)
 
R

RemPro

por lo general si queres que un usuario mantenga los datos de sesion se almacenan en cookies.
las Cookies se almacenan en el cliente (Firefox, Chrome, Opera, etc) y les das un tiempo de vida. Solamente usa Cookies si tenes un boton en tu login que diga (Mantener sesion activa o Iniciar sesion automaticamente activado)

PHP:
//esto lo creas en vez de el $_SESSION["Usuario"]

setcookie("miCookiedeUsuario", "Usuario", time()+3600); // 1 hora dura la cookie (Sesion)
//setcookie("miCookiedeUsuario", "Usuario", time() + (10 * 365 * 24 * 60 * 60)); // varios años ajaja 2038 creo

//Para despues llamar y imprimir el usuario
echo $_COOKIE["miCookiedeUsuario"];

cuidado con las cookies ya que se almacenan en el cliente y el usuario puede hacer algun que otro intento de cambiar ese valor...creo que se entiende :)

Ahora si, clarito como el agua, muchísimas gracias, Feddy :-D
 

Mrsite

Redactor
No recomendado
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
11 Abr 2013
Mensajes
309
Ya te lo aclararon , estaba apunto de meter la cuchara en el Topic :boxing1:
 
Arriba