_JD 1 Denunciar post Postado Dezembro 30, 2009 Bom dia a todos. Mais uma vez gostaria de contar com a conhecimento dos usuários do fórum. Desta vez, preciso entender como funcionam as sessões e como posso ler os dados registrados nas mesmas. Minha intenção é disponibilizar recursos conforme o nível de acesso de usuários. Criei uma sessão e guardei dados na mesma, tal qual abaixo: nome: c970b2e942c7e718b9b0e2e0191d3362 dados: nome|s:6:"jordan";status|s:1:"A";ses|s:32:"c970b2e942c7e718b9b0e2e0191d3362"; Também consegui criar cookies: nome: TesteCookie valor: Admin para ler o cookie utilizei o $_COOKIE["TestCookie"] no caso do cookie descrito acima. Gostaria de saber como faço para ler os dados da sessão, ou eles existem apenas para gravação? Como faço para validar a sessão enviada pelo cliente, saber se a string passada na URL no caso é válida, ou seja, tem um arquivo equivalente no servidor? Desde já, obrigado. JD. Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Dezembro 30, 2009 Para usar sessão começa-se sempre pelo comando apenas uma vez por página: session_start() Para colocar uma variável em Sessão, faz assim: <?php session_start(); $var = "Teste de Sessão"; $_SESSION['var'] = $var; ?> Pronto, você guardou em sessão. Agora vamos supor que você precise usar essa variável em outra página. Simplesmente você chama ela igualmente como você chama o Cookie. <?php session_start(); echo $_SESSION['var']; ?> Para verificar se a Variável de Sessão existe pode-se fazer assim: <?php session_start(); if(isset($_SESSION['var']) && $_SESSION['var'] != "") { echo "Variável de Sessão Inicializada:". $_SESSION['var']; } else { echo "Esta Variável de Sessão Está Vazia"; } ?> Sessões são geralmente usadas em LOGIN. Quando o usuário faz Login, é guardado o seu login em Sessão. Para mostrar o nome dele na outra página como é comum em Fóruns. E também para verificar se ele está logado ou não e dar permissões para o usuário somente quando ele estiver logado. E isso é possível com Sessão. Faz verificação, se foi criada a Sessão com o Login dele, deixa ele entrar na página, senão ele é redirecionado para a página de Login. E para destruir a Sessão (Logoff de Sistema por Exemplo) usa-se: <?php session_start(); unset($_SESSION['var']); // Destroi a que você escolher session_destroy(); // Ou destroi todas ?> Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Janeiro 1, 2010 As sessões são forma simples de armazenar dados temporários. Os dados são apagados assim que o usuário fechar o browser. Mas, é importante que você saiba, que você pode excluir sessões quando quiser. Imagine o seguinte problema: você tem um site, e quer que em algumas seções, apenas usuários que saibam uma determinada senha consigam acessar. Você pode utilizar sessões neste caso. Vamos ver como? O ponto de partida para o uso de sessões, é com sua inicialização, fazendo uso da função session_start(). Vale lembrar, que até usá-la, não se pode imprimir nada na tela (seja via echo, print, avisos ou erros de algum trecho de código). Por estes motivos, recomenda-se que você insira a função logo na primeira linha do seu script. Sempre que for utilizar sessões, você vai precisar inicializar esta função. Exemplo: <?php session_start(); ?> Dentro da seção, fazemos uso da variável global $_SESSION para definir variáveis e valores. Agora voltemos ao problema inicial. Precisamos restringir acesso a algumas seções. Vamos fazer isso, utilizando uma variável de sessão para saber se o usuário passou pela tela de login e informou a senha corretamente. Nas seções onde a área será restrita, fazemos a verificação se o usuário logou. Veja o exemplo da pagina_secreta.php: <?php session_start(); if (!$_SESSION['logado']) { header("Location: login.htm"); die; } ... ?> Entendendo o código: primeiro inicializamos a sessão com a função session_start(). Em seguida fazemos a verificação: se não existir (uso da !) a variável de sessão "logado" ou se ela for igual a falso (booleano), redirecionamos para a página de login (função header) e finalizamos o script (função die). Caso contrário, o script prossegue, e a sessão é mostrada normalmente. Vamos entender agora a página de login. Primeiro vamos criar o formulário do login.htm: <form action="login.php" method="post"> <fieldset> <legend>Informe a senha</legend> <label>Senha:</label> <input type="password" name="senha" size="10" /> </fieldset> </form> Agora vejamos o arquivo login.php: <?php session_start(); if ($_POST['senha'] == 'secreta') { $_SESSION['logado'] = true; header("Location: pagina_secreta.php"); die; } else { echo 'Senha incorreta'; } ?> Entendendo o código: primeiro é feita a inicialização da sessão (função session_start). Em seguida é feita a comparação, se a senha digitada é igual a "secreta" (pode ser alterada), em caso verdadeiro é definida a variável de sessão "logado" como verdadeiro e redireciona o usuário para a página secreta. Caso contrário, imprime na tela "senha incorreta". Agora vejamos sobre cookies: Cookies são mecanismos para armazenar e consultar informações nos browsers dos visitantes da página. O PHP atribui cookies utilizando a função setcookie, que deve ser utilizada antes de qualquer impressão na página (mesmo esquema das sessões). O uso de cookies não é recomendado quando se trata de informações sigilosas. Os dados dos cookies são armazenados no diretório de arquivos temporários do visitante, sendo facilmente visualizado por pessoas mal intencionadas. A diferença entre sessões e cookies, é que os cookies podem ser acessados mesmo depois de o usuário ter fechado seu browser. Outra questão importante, é que a opção “aceitar cookies” (do navegador – browser) que pode ser desativada a qualquer momento pelo visitante. Para uma transmissão de dados segura é recomendável o uso de sessões. Sintaxe básica: setcookie("nome_do_cookie","seu_valor","tempo_de_vida","path","domínio","conexão_segura") Nome_do_cookie = É o nome que, posteriormente, se tornará a variável e o que o servirá de referência para indicar o cookie. Seu_valor = É o valor que a variável possuirá. Esse valor pode ser de todos os tipos. Tempo_de_vida = É o tempo, em segundos, que o cookie existirá no computador do visitante. Uma vez excedido esse prazo o cookie se apaga de modo irrecuperável. Se esse argumento ficar vazio, o cookie se apagará quando o visitante fechar o browser. Path = endereço da página que gerou o cookie – automático Domínio = domínio ao qual pertence o cookie – automático Conexão_segura = Indica se o cookie deverá ser transmitido somente em uma conexão segura HTTPS. Depois de definida um cookie, você pode acessá-lo através da variável global $_COOKIE['nome_do_cookie']. Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Janeiro 1, 2010 Isso pode te ajudar ;) Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Ferminiano 2 Denunciar post Postado Janeiro 1, 2010 é importante lembrar as técnicas de segurança para sessões, fazer sempre uma nova key entre um intervalo de tempo, etc.. dá uma pesquisada no google que você tem melhores explicações. @alaerte em relação ao "aceitar cookies" do browser, se não aceitar cookies, a session também não funciona, correto? Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Janeiro 1, 2010 @alaerte em relação ao "aceitar cookies" do browser, se não aceitar cookies, a session também não funciona, correto? Funciona... ambas são funções totalmente distintas Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Ferminiano 2 Denunciar post Postado Janeiro 1, 2010 mas a session n guarda no cookie a session_id? Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Janeiro 1, 2010 mas a session n guarda no cookie a session_id? Sim, sem cookies ativados a sessão também não vai funcionar... http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Janeiro 2, 2010 Ue, eu não estou entendendo nada, vocês estão falando da situação do usuário, ou estão falando se o navegador não aceita cookie, não funciona session ? Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Janeiro 2, 2010 Ue, eu não estou entendendo nada, vocês estão falando da situação do usuário, ou estão falando se o navegador não aceita cookie, não funciona session ? O Anderson Ferminiano havia perguntado se, caso os cookies estivessem desabilitados [no navegador], as sessões parariam de funcionar.. Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Ferminiano 2 Denunciar post Postado Janeiro 2, 2010 valeu tiutalk e alaerte, na hora fiquei com dúvida rsrs.. desculpem desviar o assunto do tópico! Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Janeiro 2, 2010 Sim, sem cookies ativados a sessão também não vai funcionar... Não necessariamente, você consegue propagar a sessão passando o id dela, dessa forma, mesmo com cookies desabilitados você consegue persistir a sessão: The session module supports both methods. Cookies are optimal, but because they are not always available, we also provide an alternative way. The second method embeds the session id directly into URLs. http://br.php.net/manual/en/session.idpassing.php Compartilhar este post Link para o post Compartilhar em outros sites
_JD 1 Denunciar post Postado Janeiro 2, 2010 Galera bom dia e bom 2010 à todos. Obrigado pelas explicações. Uma coisa que foi levantada não ficou clara. Posso propagar id de sessões via URL, como faço isso? Nos direcionamentos da página eu passo o resultado do session_id(). Como obtenho os dados gravados da sessão cujo o nome é o resultado de session_id()? Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Janeiro 2, 2010 Uma coisa que foi levantada não ficou clara. Posso propagar id de sessões via URL, como faço isso? Utilize a função session_id para isso, veja: $sid =& $_GET[ 'PHPSESSID' ]; session_id( $sid ); session_start(); if ( !isset( $_SESSION[ 'teste' ] ) ) $_SESSION[ 'teste' ] = uniqid(); var_dump( session_id() , $_SESSION[ 'teste' ] ); Agora faça os testes: http://localhost/tes...HPSESSID=abc123 http://localhost/tes...HPSESSID=abc124 http://localhost/tes...HPSESSID=abc125 Anote as saídas e depois refaça os testes: http://localhost/tes...HPSESSID=abc123 http://localhost/tes...HPSESSID=abc124 http://localhost/tes...HPSESSID=abc125 As saídas para mim foram: string 'abc123' (length=6) string '4b3f2f0577fd8' (length=13) string 'abc124' (length=6) string '4b3f2f0904dab' (length=13) string 'abc125' (length=6) string '4b3f2fab11083' (length=13) Apenas, tome o seguinte cuidado: session_id() needs to be called before session_start() for that purpose. Compartilhar este post Link para o post Compartilhar em outros sites
_JD 1 Denunciar post Postado Janeiro 4, 2010 Boa tarde. Agora minhas páginas tem autenticação de usuário inclusive filtro de acessos. Muito obrigado a todos. Compartilhar este post Link para o post Compartilhar em outros sites