Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Apokalypse

Para que serve SID da sessão?

Recommended Posts

Olá pessoal,Meu webmail (uebimiau 2.7.9) após efetuar o login executa em todas as paginas uma variavel GET chamada sid, que onde entendi é o ID da minha sessao atual com o servidor. Todas as páginas possuem esse sid, e se por ventura eu apagar ele pede para eu efetuar o login novamente.Li em alguns fóruns que os sessions podem ser armazenados via cookies do navegador ou pela propria URL (no caso do uebimiau). Entendi que se os cookies estiverem desabilitados não iria funcionar corretamente, devido ele nao armazenar o sid no cookie.Minha dúvida: eu fiz um teste registrando uma session com o código abaixo:================================<?phpsession_start();// Use $HTTP_SESSION_VARS with PHP 4.0.6 or lessif (!isset($_SESSION['count'])) { $_SESSION['count'] = 0;} else { $_SESSION['count']++;}?> Hello visitor, you have seen this page <?php echo $_SESSION['count']; ?> times.<p>;<?php# the <?php echo SID?> (<? print SID ?> can be used if short tag is enabled) # is necessary to preserve the session id# in the case that the user has disabled cookies?>To continue, <A HREF="nextpage.php?<?php echo SID?>">click here</A>================================Este script mostra quantas vezes eu acessei a pagina, mas só exibe o numero do SID na primeira vez que executo a mesma.Desabilitei totalmente os cookies, fechei todas as janelas do navegador e continuou funcionando normalmente.Queria saber então porque eu preciso ter o SID da sessao, sendo que eu consigo inicia-la normalmente e nunca tive problemas...valeuz galeraaaaaaaaaaaa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

 

Primeiro, vamos comentar o seu source, ok?


<?php
session_start(); [b]// iniciamos a sessão aqui, podendo usar também session_resgiter(); que ficaria implicita a chamada a session start()[/b]
if (!isset($_SESSION['count'])) { [b]// aqui, testamos se a sessão cujo valor 'count', já existe[/b]
$_SESSION['count'] = 0;// [b]se não (!), ele inicia a sessão com o valor 'count'[/b]
} else {
$_SESSION['count']++;  // [b]se já existe a sessão, ele incremeta o contador da sessão (++)[/b]
}
?> 

 

Nesse exmplo de source, você está testando se o seu ambiente tem suporte a sessão, ou não. Tanto que a sessão ou mesmo, o array de sessão, $_SESSION, é incrementado caso você volte a visitar a página. Faça um teste:

 

Visite a página 3 vezes;

Após isto, feche a página e volte a visitar;

 

 

O ID de sua sessão zerou, pois se formou uma nova sessão!

 

OBS.: A sessões podem ser estabelicidas com GET/POST, enviando nos links, armazenando e enviando novamente, fazendo esse vai e vem ou mesmo gerando um SID (Session Identifier), que é um arquivo cujo nome é criptografado e se compõe de 32 caracteres. Nesse arquivo, armazenado gerealmente no lado server (em "/tmp"), ficam gravados dados como:

 

- login;

- senha (criptografada, depndendo do sistema);

- variáveis de sistema;

 

...normalmente, as sessões terminam ou quando o usário fecah o browser ou quando faz o "logout".

 

qq coisa, posta aí. . .

 

DEUS TE ABENÇÕE!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, Primeiro, vamos comentar o seu source, ok?

<?phpsession_start(); [b]// iniciamos a sessão aqui, podendo usar também session_resgiter(); que ficaria implicita a chamada a session start()[/b]if (!isset($_SESSION['count'])) { [b]// aqui, testamos se a sessão cujo valor 'count', já existe[/b]$_SESSION['count'] = 0;// [b]se não (!), ele inicia a sessão com o valor 'count'[/b]} else {$_SESSION['count']++;  // [b]se já existe a sessão, ele incremeta o contador da sessão (++)[/b]}?> 

Nesse exmplo de source, você está testando se o seu ambiente tem suporte a sessão, ou não. Tanto que a sessão ou mesmo, o array de sessão, $_SESSION, é incrementado caso você volte a visitar a página. Faça um teste: Visite a página 3 vezes; Após isto, feche a página e volte a visitar; O ID de sua sessão zerou, pois se formou uma nova sessão!OBS.: A sessões podem ser estabelicidas com GET/POST, enviando nos links, armazenando e enviando novamente, fazendo esse vai e vem ou mesmo gerando um SID (Session Identifier), que é um arquivo cujo nome é criptografado e se compõe de 32 caracteres. Nesse arquivo, armazenado gerealmente no lado server (em "/tmp"), ficam gravados dados como: - login; - senha (criptografada, depndendo do sistema); - variáveis de sistema;...normalmente, as sessões terminam ou quando o usário fecah o browser ou quando faz o "logout".qq coisa, posta aí. . .DEUS TE ABENÇÕE!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

E ai cara, valeu pela explicação, mas tudo isso eu ja sabia...O que eu quero saber é PORQUE alguns sites jogam de form para form, pagina para página o ID da sessão???Como elas funcionam eu sei, o que quero saber é para que serve a ID da sessao...Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

p****.. ninguem sabe mesmo.. ehmmm q deprimente :( to louco pra saber isto tb....

pessoal!! n acredito q ninguem saiba pra que serve isso!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

p****.. ninguem sabe mesmo.. ehmmm q deprimente :( to louco pra saber isto tb....

pessoal!! n acredito q ninguem saiba pra que serve isso!!!!

E ai rapaz..eu que criei o tópico e eu que vou te responder...kkkEntão, eu acabei pesquisando no manual mais a fundo e encontrei.SID é a identificação da sessão atual, caso a mesma seja iniciada (com session_start(), por exemplo).No php, quando voce inicia uma sessão, ele cria um cookie com esse SID (session ID). Através desse valor, quando você navega em um site que tem autenticação por exemplo, o php automaticamente pega esse cookie e 'identifica' qual é id da sessão que você abriu, pra saber o que foi setado e continuar autenticado.Quando os cookies estão desativados, como o php vai descobrir qual o id da sessão que você ta usando?? Usando o SID! Estando habilitado no servidor, o php adiciona automaticamente em todos os links que ele encontrar no html da página que ele está executando no momento o parametro SID contendo o id da sessão.Eu havia migrado de servidor e todas as página que eu utilizava sessões do php estava aparecendo esse SID na url e nos links. Eu fiquei desesperado, porque como eu usava url amigáveis nesse site tava ferrando tudo! O cookie estava habilitado e assim mesmo ele ficava imprimindo isso....então para resolver o problema foi simples, acrecentei essa linha antes de iniciar a sessão:
ini_set("url_rewriter.tags","");
Espero ter sanado sua dúvida!abçs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Æ..... uhmm entendi, mas ainda tenho outras dúvidas, veja se você pode me ajudar.

 

1 - SID é a identificação da sessão atual, caso a mesma seja iniciada (com session_start(), por exemplo).

 

beleza..

 

 

2 - No php, quando voce inicia uma sessão, ele cria um cookie com esse SID (session ID). Através desse valor, quando você navega em um site que tem autenticação por exemplo, o php automaticamente pega esse cookie e 'identifica' qual é id da sessão que você abriu.

 

você ta falando q automaticamente o PHP sem eu escrever 1 linha de codigo pega este cookie?

Ex:

www.site.com.br/index.php com link pra teste.php

ao abrir a pagina ele adciona automaticamente o sid na querystring como esta abaixo, certo?

www.site.com.br/teste.php?sid=489723423hfdw9r2yhfs4329u8hjd84fgh

 

nesta pagina teste.php se eu mandar escrever $SESSION["teste"] estiver setado anteriomente ele vai escrever o conteudo desta session, é isto mesmo que você disse?

 

 

 

3 - Quando os cookies estão desativados, como o php vai descobrir qual o id da sessão que você ta usando?? Usando o SID!

Mas eu vou ter que mandar carregar a sessão correspondente akela ID ou nao?

 

 

 

Outras perguntas:

4 - No PHP a session expira se o usuario ficar algum tempo sem navegar no site como é no ASP?

 

4.a - Se sim, quanto em quanto tempo ela é destroida? Se eu quiser entao auto-login terei q mandar o PHP carregar este SID da URL? se nao mando pra pagina de login. correto?

 

 

 

Valewwwwwwwwwwwwwwwwwww cara...

Obrigado mesmo pela atençao... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Falow...

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, foi mal pela demora pra responder, meu tempo tem estado extremamente curto..mas vamos la:

2 - No php, quando voce inicia uma sessão, ele cria um cookie com esse SID (session ID). Através desse valor, quando você navega em um site que tem autenticação por exemplo, o php automaticamente pega esse cookie e 'identifica' qual é id da sessão que você abriu.você ta falando q automaticamente o PHP sem eu escrever 1 linha de codigo pega este cookie?Ex:www.site.com.br/index.php com link pra teste.phpao abrir a pagina ele adciona automaticamente o sid na querystring como esta abaixo, certo?www.site.com.br/teste.php?sid=489723423hfdw9r2yhfs4329u8hjd84fghnesta pagina teste.php se eu mandar escrever $SESSION["teste"] estiver setado anteriomente ele vai escrever o conteudo desta session, é isto mesmo que você disse?

Mais ou menos isso rapaz. Existem 2 situações:- uma quando o parametro url_rewriter.tags (do php.ini) está ativo, ai em todas as urls, links e tudo mais (voce tem como especificar quais as tags que ele vai reescrever com o SID) que tiver no html ele vai acrescentar o url.com.br?sid=id_da_sessao. Quando isso acontece, o php pega o $_REQUEST['sid'] da url e utiliza-o para identificar e restaurar os dados da sessão que já foi iniciada anteriormente. - outro caso é quando os cookies estão ativos e url_rewriter.tags desabilitado, ai quando o php executa o session_start ele verifica se existe algum cookie com os parametros da sessão. se existir ele pega o id da sessão para identifica-la e restaura os dados.

3 - Quando os cookies estão desativados, como o php vai descobrir qual o id da sessão que você ta usando?? Usando o SID!Mas eu vou ter que mandar carregar a sessão correspondente akela ID ou nao?

Então, se tiver com os cookies desligados ele vai tentar pegar o valor de $_REQUEST['sid'] (na verdade eu nao sei se ele pega com request, post ou get, soh sei que pega...srsr). Se ele falhar e nao achar o 'sid', simplesmente ele nao vai saber que a sessão foi criada anteriormente vai forcar a criação de uma nova sessão. entendeu?

Outras perguntas:4 - No PHP a session expira se o usuario ficar algum tempo sem navegar no site como é no ASP?4.a - Se sim, quanto em quanto tempo ela é destroida? Se eu quiser entao auto-login terei q mandar o PHP carregar este SID da URL? se nao mando pra pagina de login. correto?

Voce especifica o tempo de vida da sessão e ou do cookie que mantem o id da sessão.http://www.php.net/manual/en/function.sess...okie-params.php <- pra definir o tempo de vida do cookie da sessão. expirando o cookie, o php nao acha o id da sessão e força a criação de uma nova.Pra definir o tempo de vida da sessão em sí eu nao tenho certeza, mas acho que é esse parametro aqui: session.gc_maxlifetimeabçs velho! espero q tenha te ajudado e desculpe pela demora de resposta... ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.