Ir para conteúdo

POWERED BY:

Arquivado

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

azeredo

Session entre páginas... uma pequena

Recommended Posts

Não sei se entendi bem lá no manual do php... mas minha dúvida é a seguinte...

 

Na p1.php fiz algo assim

$var1 = 2;session_start();$_SESSION['a'] = $var1;

E numa outra págia a p2.php por exemplo fiz assim

session_start();$b = $_SESSION['a'];

Assim não funcionou, li mais um pouco e vi sobre o SID então fiz assim

$var1 = 2;session_start();$_SESSION['a'] = $var1;echo '<a href = "p2.php'. SID .'"> ....

E assim ok, funcionou.

 

Mas o que eu precisava mesmo era passar para uma p3.php, então ao invés da p1 ter o link com SID fiz um link na p2 com ele para a p3 mas não funcionou.

 

Então li mais um pouco.. hehe

Vi sobre session_name

 

A minha pergunta é, pois não estou podendo testar por não ter um servidor php aqui onde estou agora...

Se eu fizer isso será que dá certo?

p1.php

session_name("teste");session_start();$_SESSION['a'] = $var1;
e na p3.php

session_name('teste');session_start();$b = $_SESSION['a'];
Assim está certo, ou entendi errado?

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

na p3.php é só inverter?Tinha colocado antes, pq no manual falava que era para por o name antes do start..."Se você quiser usar uma seção com nomes, você deve usar session_name() antes de session_start()."Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom agora to com o servidor php disponível aqui...

Fiz uns testes aqui dos 2 modos....

com o name antes e depois do start mas nada ainda...

p1.php

session_name("teste");session_start();				$_SESSION['aluno'] = $aluno_cod;				$_SESSION['rm_aluno'] = $rm_digitado;
p2.php

session_name("teste");	session_start();		$aa = $_SESSION['rm_aluno'];	echo ($aa);

Compartilhar este post


Link para o post
Compartilhar em outros sites

alguma sugestao?

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum... tava fazendo uns testes aqui.. e agora não sei porque começou a aparecer essas mensagens...

 

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Apache\htdocs\locadora\p1.php:3) in C:\Apache\htdocs\locadora\p1.php on line 6

 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Apache\htdocs\locadora\p1.php:3) in C:\Apache\htdocs\locadora\p1.php on line 6

 

o p1.php

<? $var1 = "aaaaa";session_name("teste");session_start();$_SESSION['a'] = $var1;?><a href="p2.php">teste</a>
p2.php

<?session_name('teste');session_start();$b = $_SESSION['a'];echo $b;?>

Só que, depois que clico no link para o p2.php não aparece nada, dou um voltar e um refresh no p1.php e clico novamente no link pro p2.php aparece o aaaaa certinho...

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, estou sim, mas está dando aquelas mensagens ali acima... ai fui no php.ini e procurei por cache... mas aí fiquei na dúvida de modificar alguma coisa....Essas mensagens são lá em casa, como eu formatei e instalei novamente o apache + php talvez tenha esquecido de fazer alguma configuração... Aqui no escritório, fui testar e realmente funcionou, de uma página para outra... mas só consigo fazer funcionar em 1... tipo.... estou com 4 páginas...uma login.html que leva para escola.phpnessa escola tem um include para o verifica.php e neste verifica tem o código do p1.php aqui de cima... e se eu colocar o código do p2.php nessa escola funciona corretamente.Mas neste escola tem um link para o teste.php, então no escola.php não coloquei nada e pus o código do p2.php no teste.php aí ao acessar o teste.php não aparece nada.Aí pensei em colocar essa variável $b no escola.php e passar para o teste.php por get... mas seria mais prático se conseguisse retomar a sessão no próprio teste.php, pulando o escola.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

rapaz, realmente não sei o porque não está funcionando....

 

vou postar o código das 3 páginas...

 

escola.php

<? include("verifica.php"); ?><a href="teste.php">Boletim</a></p>

verifica.php

<?session_name("teste");session_start();$_SESSION['aluno'] = 555;$_SESSION['rm_aluno'] = 1234;?>

e teste.php

<?		session_name("teste");	session_start();		$aluno_cod = $_SESSION['aluno'];	$rm_digitado = $_SESSION['rm_aluno'];	echo $aluno_cod;?>

se eu pegar e copiar e colar esse código no escola.php, beleza aparece certinho o 555 agora no teste.php não aparece nada....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei um include("verifica.php"); no teste.php aí sim aparece o 555...Não tem como retomar a session sem dar o include no verifica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

rapaz, realmente não sei o porque não está funcionando....vou postar o código das 3 páginas... escola.php

<? include("verifica.php"); ?><a href="teste.php">Boletim</a></p>
verifica.php
<?session_name("teste");session_start();$_SESSION['aluno'] = 555;$_SESSION['rm_aluno'] = 1234;?>
e teste.php
<?		session_name("teste");	session_start();		$aluno_cod = $_SESSION['aluno'];	$rm_digitado = $_SESSION['rm_aluno'];	echo $aluno_cod;?>
se eu pegar e copiar e colar esse código no escola.php, beleza aparece certinho o 555 agora no teste.php não aparece nada....
será que não está faltando um include do verifica.php no teste.php?edit: foi mal demorei na resposta

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehe, postamos juntos.... então... só que como o verifica.php ele també é usado para verificar se o usuário e senha existe, e se não existir voltar para a tela de login, assim ao dar um include no verifica no teste.php ele acaba voltando para a tela de login....

 

todo o verifica.php

<?	include ("conexao.php");	if ($_POST["rm"] == "")	{		echo ("<script>alert('RM deve ser informado!')</script>");		include("index.php");		exit;	}	else	{		$rm_digitado = $_POST["rm"];		$sql_verifica = "select codigo, aluno, registromatricula, anoletivo, grade from matricul where registromatricula =						 $rm_digitado";		$consulta_verifica = ibase_query($conexao,$sql_verifica);		$linha_verifica = ibase_fetch_object($consulta_verifica);		if ($linha_verifica == true)		{			$rm_banco = $linha_verifica->REGISTROMATRICULA;			if ($rm_digitado == $rm_banco)			{				$aluno_cod = $linha_verifica->ALUNO;				$matricula_cod = $linha_verifica->CODIGO;				$anoletivo_cod = $linha_verifica->ANOLETIVO;				$grade_cod = $linha_verifica->GRADE;												session_name("teste");				session_start();				$_SESSION['aluno'] = 555;				$_SESSION['rm_aluno'] = 1234;												}		}		else		{			echo ("<script>alert('RM incorreto!')</script>");			include("index.php");			exit;		}	}?>

Necessariamente terei que fazer uma session para ficar verificando se o usuário já logou? Se for isso vou quebrar um pouco a cabeça para ver como que faz.. hehehe

Sem o include não tem jeito?

Compartilhar este post


Link para o post
Compartilhar em outros sites

to pensando nisso... no verifica.php

session_name("teste");session_start();$_SESSION['aluno'] = 555;$_SESSION['rm_aluno'] = 1234;session_register("teste");

e no teste.php

if (session_is_registered("teste") ==  false){volta para o login.html}else{  session_name("teste");	session_start();		$aluno_cod = $_SESSION['aluno'];	$rm_digitado = $_SESSION['rm_aluno'];	echo $aluno_cod;}

Tá mais ou menos certo? Ou já to me confundindo todo??

Compartilhar este post


Link para o post
Compartilhar em outros sites

se eu entendi bem... então não preciso de nada disso de session_name, session_startposso apenas usar $_SESSION['var1'] = 555 no verifica e no teste usar echo $_SESSION['var1']?hum.. entendi errado mesmo... porque "$_SESSION não imita isto e necessita que session_start() seja chamada antes de usar."assim volto para o session_name... que pelos testes que fiz aqui não consegui fazer funcionar sem o include verifica.php...esse feriado vai ser longo...hehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

sem o include verifica no teste não funcionou também....

verifica

session_start();$_SESSION['aluno'] = 555;$_SESSION['rm_aluno'] = 1234;
escola

include("verifica.php");
teste

session_start();	$aluno_cod = $_SESSION['aluno'];$rm_digitado = $_SESSION['rm_aluno'];echo ("$aluno_cod <br>");		echo $_SESSION['rm_aluno'];

no teste nada, mas se por no escola aparece certinho...

 

Obrigado a todas as ajudas até agora!

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum.. aqui em casa... nesse exemplo de cima, aparantemente funciona... o único porém, é que no escola.php aparece essa mensagemWarning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Apache\htdocs\testes\aluno.php:7) in C:\Apache\htdocs\testes\verifica.php on line 2A linha 2 neste caso é session_start();e ao clicar no link do escola para acessar o teste.php tudo ok, aparece as variáveis sem mensagem de erro nenhum...Agora essa mensagem de erro.. tem alguma coisa que eu possa verificar no php.ini?É fiz um teste aqui, com o verifica completo e o teste completo, não apenas como está acima, e funcionou certinho como eu pretendia... apenas aparece essa mensagem aqui....Com session_name não funcionou, mostra mais mensagem de erro e não funcionou... as mensagens são:Cannot send session cookie - headers already sent by (output started at C:\Apache\htdocs\escola2\aluno.php:7) in C:\Apache\htdocs\escola2\verifica.php on line 25 onde linha 25 é o session_startAlém da mensagem acima.Obrigado novamente a todos!

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.