Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

Problema sessão

18-06-2010 23:20

Criei um cadastro de clientes para inserção de dados no bd. Há um arquivo de cadastro, um arquivo de conferência, um arquivo de alteração de dados e uma página de resposta após a conclusão do cadastramento. Em todos os arquivos há o session_start(); e faço as inserções de dados no bd trabalhando com o id da sessão (session_id();), inclusive o inserindo no bd, e o excluindo no final do cadastramento, enviando, através do update, um valor vazio (acho que deu para entender esse valor vazio, acho que não me expressei bem). O cadastramento, a conferência, a alteração, e a página de resposta, tudo funciona ok, inclusive a exclusão do id da sessão que inseri no campo sessao, ao final do cadastramento. Mas acho que a sessão não está sendo destruída. Se clico no botão voltar do navegador, aparece a página de alteração ou a de cadastramento (aquela acessada antes de se clicar no botão concluir existente na página de conferência, que remete à página de resposta (que informa que o cadastramento foi feito com sucesso), na qual faço o update de vazio para o campo sessao (que está funcionando), e uso o session_destroy(). Não se trata de um sistema de login (eu utilizarei um sistema de login para alterar os dados do cliente já cadastrado). O que pode estar ocorrendo?
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

Problema sessão

18-06-2010 23:31

Na verdade, se clico no botão voltar do navegador, volto para a página de conferência, aquela que tem o botão concluir, no qual, se clicado, sou levado à página que informa que o cadastro foi feito com sucesso. Se a sessão fosse destruída, eu não voltaria para citada página. Voltaria?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17639
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Problema sessão

19-06-2010 08:31

Você deve estar destruindo a session no mesmo documento, esse que é o problema.

Você tem que trabalhar com mais de um arquivo, quando for deletar a session, dá um header location ( PHP ) ou location.href ( JS ) e manda o cara para outro documento, para que delete a session, e após deletada, chama outro documento, do mesmo modo, assim se ele voltar no navegador, vai voltar direto para o processo, e não vai conseguir.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

Problema sessão

24-06-2010 00:19

Acho que descobri o problema: depois de destruir a sessão, há redirecionamento da página, após o que não havia colocado "exit;". Coloquei o exit; e quando a sessão é fechada, não se volta para a área restrita após se clicar no botão voltar do navegador. Tem a ver esse negócio do exit;?
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

Problema sessão

24-06-2010 09:16

Liguei o computador há pouco, e o problema persiste. Vou estudar mais sobre sessão. Mas quando coloquei o exit; não voltava mais.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17639
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Problema sessão

24-06-2010 10:18

Sim, o exit para o processo. Use páginas separadas, faça alguns testes assim.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

Problema sessão

24-06-2010 20:57

Eu fiz em páginas separadas depois que você disse. Gostaria de te dizer como estou fazendo o layout: Estou usando templates (acredito que sejam). Fiz uma página central, a que chamei de template intermediário, em HTML. Nessa página chamo outras, também em HTML, a que chamei de template superior, template coluna esquerda, template coluna direita e template inferior. Cada template chama seu código correspondente em php, inclusive o template intermediário, que recebe as páginas centrais. Pergunto: devo repetir as chamadas, como, por exemplo, arquivo de conexão, arquivo de css, arquivo de javascript, etc, e o session_start(); em cada um desses templates ou se eu colocar no template a que chamei de intermediário, e que chama todos os outros templates (superior, lateral direita, lateral esquerda, e inferior)? Acho que isso pode estar contribuindo para o que está ocorrendo. Se você não entendeu, e se eu puder, posto os códigos dos templates, para você ver. No template intermediário, o que é melhor para chamar os outros templates: require, require_once ou include?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17639
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Problema sessão

24-06-2010 21:35

Vou te dar a base que usei no site, talvez ajude.

Vamos supor que eu tenho uma página chamada: janela.php

ai tenho nela:
topo.php
lado-esquerdo.php
lado-direito.php
rodape.php

No topo vão os CSS, JS, includes, porque vão ser usados por todos os documentos chamados.

lado-esquerdo e lado-direito links e propagandas, rodape a mesma coisa.

No centro da janela.php que vai o conteúdo relacionado a ela.

Eu particularmente uso include
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

Problema sessão

25-06-2010 14:13

Eu fiquei um pouco no ar. Os CSS, JS e includes que você coloca no topo você repete em lado-esquerdo, lado-direito, rodapé e janela?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17639
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Problema sessão

25-06-2010 14:42

Não, seria perda de tempo já que só iria repetir as chamadas já feitas, já que um include nada mais é que uma inserção de todos os dados do arquivo incluído no arquivo atual. Você tem que imaginar o resultado pelo código-fonte, o que é mostrado no navegador.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

Problema sessão

26-06-2010 01:14

Agora eu entendi. A "mesma coisa" que você referiu no post é que lado-esquerdo e lado-direito, links e propagandas, rodapé serão chamados, assim como os outros documentos, e usarão os CSS, JS, includes do topo.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

Problema sessão

26-06-2010 01:19

Mas me diz uma coisa: se é o arquivo janela.php que chama os arquivos topo.php, lado-direito.php, lado-esquerdo.php e rodape.php, por quê não é nele que eu insiro os CSS, JS, includes, e sim no arquivo topo.php, que é chamado pelo arquivo janela.php, assim como os demais?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17639
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Problema sessão

26-06-2010 08:47

Imagine assim, você tem várias áreas no site, imagine uma área chamada: contato.php

Essa área é algo específico, que seria somente emails e um formulário de contato.

Note que vai facilitar se você tiver os css, js, etc... no topo, porque essa página contato, vai ser um molde, onde somente o meio dela vai ser mudado, então quando precisar alterar algo no formulário, como o estilo, você aplica direto no topo, não precisando alterar nada no contato novamente. Isso vai facilitar a manutenção das páginas.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

Problema sessão

26-06-2010 10:41

Eu coloquei a chamada dos arquivos Css, JS, etc., em topo.php, e o funcionamento (aparentemente) foi o mesmo de que se tivesse colocado em janela.php. Mas eu quero saber se meu raciocínio tem fundamento. Vou colocar o código do arquivo janela.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title><? include("ArquivoTitulo.php"); ?></title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <? session_start("anunciante"); require_once("conexao.php"); require_once("css.php"); require_once("js.php"); ?> </head> <body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0"> <!-- início tabela principal (envolve as demais) --> <table width="780" align="center" border="0" cellpadding="0" cellspacing="0"> <tr><td> <!-- início tabela topo --> <table width="780" align="center" border="0" cellpadding="0" cellspacing="0"><tr><td> <? include('topo.php'); ?> </td></tr></table> <!-- fim tabela topo --> <!-- início tabela centro --> <table width="780" align="center" border="0" cellpadding="0" cellspacing="2"> <tr> <!-- coluna esquerda --> <td width="152" align="center" valign="top"> <? include('coluna-esquerda.php'); ?> </td> <!-- fim coluna esquerda --> <!-- coluna central --> <td width="468" align="center" valign="top"> <!-- início banner superior --> <table width="468" align="center" border="0" cellpadding="0" cellspacing="0"> <tr valign="top"><td> <? include("banner.php"); ?> </td></tr> </table> <!-- fim banner superior --> <!-- páginas centrais --> <?=$Contato?> <!-- ou <? /*include("contato.php");*/ ?> --> <!-- fim páginas centrais --> </td> <!-- fim coluna central --> <!-- coluna direita --> <td width="152" align="center" valign="top"> <? include('coluna-direita.php'); ?> </td> <!-- fim coluna direita --> </tr></table> <!-- fim tabela centro --> <!-- tabela rodapé--> <table width="780" align="center" border="0" cellpadding="0" cellspacing="0"><tr><td> <? include('rodape.php'); ?> </td></tr></table> <!-- fim tabela rodapé--> </td></tr> </table> <!-- fim tabela principal (envolve as demais) --> </body> </html>

O arquivo janela.php seria principal em relação aos demais (topo.php, lado-esquerdo.php, lado-direito.php e rodape.php), que estariam vinculados ao arquivo principal por include. O arquivo topo.php seria tão subsidiário e dependeria do arquivo janela.php tanto quanto os demais (inclusive o arquivo contato.php, de seu exemplo), razão pela qual, na minha cabeça, a chamada dos arquivos Css, JS, etc., deveria ficar no arquivo janela.php. Esse é meu raciocínio, mas é de um leigo.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17639
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Problema sessão

26-06-2010 11:32

O uso do include e de chamadas de arquivos é facilitar quando você precisar alterar, porque se todos os arquivos estivessem inline, quando precisa-se alterar o topo por exemplo, iria ter que alterar todas as páginas do site. Eu penso que por janela.php ser única, ou seja, vai ter conteúdo diferenciado, você pode criar janela dentro de um molde, como expliquei com topo, laterais e rodapé via include, os js, css sendo carregado no topo, já que é nele que fica o head.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

Problema sessão

26-06-2010 12:17

Eu entendi o que você quis dizer, mas no molde como fiz, estou usando o head do arquivo janela.php, e configurando os demais arquivos do molde da seguinte maneira:

topo.php:
<? echo $_SESSION[TipoAnuncioID]; echo "<br>"; ?> <table align="center" width="780" bgcolor="#ffffff" border="0" cellspacing="2" cellpadding="0"> <tr> <td><table align="center" width="100%" cellspacing="0" cellpadding="0"> <tr> <td height="32" align="center" valign="middle"><a href="link" target="_top"><img src="logo" width="278" height="26" border="0"></a></td> <td height="32" align="right" valign="middle"><img src="imagem topo" width="430" height="26" border="1"></td> </tr> </table></td> </tr> </table> <table border="0" align="center" valign="middle" cellpadding="0" cellspacing="0" width="100%"><tr> <td align="center" valign="middle"> <? include("banner.php"); ?> </td> </tr></table> <table border="0" align="center" valign="middle" cellpadding="0" cellspacing="0" width="100%"><tr> <td align="center" valign="middle" height="2"></td> </tr></table> <table align="center" width="776" border="0" cellspacing="0" cellpadding="0"><tr> <td align="center" valign="middle" height="32"> <? include("menu_superior.php"); ?> </td> </tr></table>


coluna_esquerda.php:
<table valign="top" align="left" border="0" cellpadding="0" cellspacing="0"> <tr> <td valign="top"> <table width="152" align="center" border="0" cellpadding="0" cellspacing="0"> <tr><td valign="top"> <? echo $_SESSION[TipoAnuncioID]; echo "<br>"; include("menu_esquerdo.php"); ?> </td></tr> </table> </td> </tr> </table>

coluna_direita.php:
<? echo $_SESSION[TipoAnuncioID]; echo "<br>"; ?> <table valign="top" align="left" border="0" cellpadding="0" cellspacing="0"> <tr> <td> <table width="152" align="center" border="0" cellpadding="0" cellspacing="0"> <tr><td width="100%" height="30" align="center" valign="middle">Logado(a)!</td></tr> <tr><td height="2"></td></tr> <tr><td height="30" valign="middle" onmouseover="this.style.background='#ffffff'" onmouseout="this.style.background='#f8f8f8'"> <? include('sair_sessao.php'); ?></td></tr> <tr><td height="2"></td></tr> </table> </td></tr></table>

rodape.php:
<? echo $_SESSION[TipoAnuncioID]; echo "<br>"; ?> <table border="0" align="center" valign="middle" cellpadding="0" cellspacing="0" width="776"> <tr> <td width="100%" align="center" valign="middle" bgcolor="#f8f8f8"> <? include("menu_rodape.php"); </td> </tr></table> <table align="center" width="780" border="0" bordercolor="#ffffff" cellpadding="0" cellspacing="2"> <tr> <td width="100%" height="16" align="center" valign="middle">800 x 600/1024 x 768 - Firefox, IE 5+, Opera, Safari</td> </tr> </table>

Veja que nas demais páginas do molde, dou um echo para ver o tipo de anúncio da sessão (TipoAnuncioID), e o mesmo é mostrado corretamente em todos os arquivos (topo.php, coluna-esquerda.php, coluna-direita.php e rodape.php). Estaria errado usar o head do arquivo janela.php?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17639
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Problema sessão

26-06-2010 12:34

Montei um tópico explicando a estrutura do include, qualquer dúvida poste lá.

http://www.codigosnaweb.com/forum/Modo- ... _5424.html
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado