apache + php - session_start()
Ola galera, estou com a seguinte situação:
No código da Intranet tem algumas váriaveis que são passadas de um arquivo para outro usando controle de sessão.
O que esta acontecendo é que no diretorio /tmp são criados os arquivos sess_ com os id de cada variavel, com os valores corretos, no entanto não transferidos de uma página para outra.
Achando que o problema era no meu código criei um bem simples apenas para chamada de um outro arquivo recebendo os parametros, mesmo assim sem sucesso.
Algo bastante interessante esta acontecendo:
Esse novo código quando o executo pela primeira vez não tranfere os valoes, caso eu dê um F5 ou atualizar a pagina e tentar novamente transferir o valor o controle de sessão começa a funcionar e toda a intranet fica 100%
Ontem observei que com o tempo para de funcionar, caso eu tb reinicie o servidor tb para de funcionar. Para de funcionar apenas o controle de sessão, o Apache, o modulo PHP são carregados normalmente e a página funciona, apenas alguns códigos que utilizam de sessão ficam operantes. Ate eu executar o código abaixo:
Minha config: Slackware 10.0 kernel 2.4.26 Apache 2.0.52 PHP 4.3.9
código arquivo teste.php:
<?php
//funcao que apenas escreve o valor recebido e nova linha
function teste ($i){
echo $i;
echo "<br>";
return $i;
}
//Estrutura de repeticao para passar novos valores a funcao
for ($i=0;$i<=10;$i++){
$valor = teste($i);
}
//sessão
@ session_start();
echo "Sessao = ";echo $valor;
echo "<br>";
//definido que teste, recebera $valor
$HTTP_SESSION_VARS['teste']=$valor;
//chamada a outro arquivo
echo "<td><a href='teste1.php'>Outro Arquivo</a></td>";
?>
Código do teste1.php
<?php
@ session_start();
$n = $HTTP_SESSION_VARS['teste'];
echo $n;
?>
apache + php - session_start()
bom, vamos aos erros:
teste.php
Citação:
<?php
//a sessão tem q ser iniciada antes que qualquer dado seja enviado
//ao navegador (echo, espaços, etc)....
session_name("nome_da_sessao"); //sempre e bom nomear a sessão
session_start(); //sem o "@" para caso de erros, vc saiba disso
//funcao que apenas escreve o valor recebido e nova linha
function teste ($i){
echo $i;
echo "<br>";
return $i;
}
//Estrutura de repeticao para passar novos valores a funcao
for ($i=0;$i<=10;$i++){
$valor = teste($i);
}
//sessão
echo "Sessao = ";
echo $valor;
echo "<br>";
//definido que teste, recebera $valor
//registramos a variavel de sessão "TESTE"
//caso a váriavel não esteja registrada, iremos registra-la
if(!session_is_registered("teste")){
session_register("teste");
}
$_SESSION["teste"] = $valor;
//chamada a outro arquivo
echo "<td><a href='teste1.php'>Outro Arquivo</a></td>";
?>
teste1.php
Citação:
<?php
session_name("nome_da_sessao");
session_start();
if(session_is_registered("teste")){
echo $_SESSION["teste"];
}else{
echo "É necessário acessar o arquivo teste.php antes.";
}
?>
apache + php - session_start()