Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Estou começando a estudar PHP através do livro "PHP e MySQL - Desenvolvimento Web" e ao tentar simular um dos exemplos deparei-me com um erro que não estou conseguindo identificar a causa, talvez por ser iniciante na linguagem. Se alguém puder ajudar-me agradeço antecipadamente para evitar lotar o fórum com agradecimentos, ok?
Tenho 3 arquivos php, que seguem:
pag1.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">](http://www.w3.org/1999/xhtml%22)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
session_start();
$HTTP_SESSION_VARS['sess_var']="Olá, mundo!";
echo 'O conteúdo de $HTTP_SESSION_VARS[\'sess_var\'] é '.$HTTP_SESSION_VARS['sess_var'].'<br />';
?>
<a href="pag2.php">Próxima Página</a>
</body>
</html>
pag2.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">](http://www.w3.org/1999/xhtml%22)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
session_start();
echo 'O conteúdo de $HTTP_SESSION_VARS[\'sess_var\'] é '.$HTTP_SESSION_VARS['sess_var'].'<br />';
unset($HTTP_SESSION_VARS['sess_var']);
?>
<a href="pag3.php">Próxima Página</a>
</body>
</html>
pag3.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">](http://www.w3.org/1999/xhtml%22)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
session_start();
echo 'O conteúdo de $HTTP_SESSION_VARS[\'sess_var\'] é '.$HTTP_SESSION_VARS['sess_var'].'<br />';
session_destroy();
?>
</body>
</html>
Ao rodar o primeiro arquivo através de http://localhost/pag1.php, obtenho a seguinte resposta no navegador:
>
Warning: session_start() [function.session-start]: open(c:\php5\tmp\sess_ac6aa13236711b9baea1cf3df7ce457e, O_RDWR) failed: No such file or directory (2) in d:\meus documentos\Projetos\php\pag1.php on line 9
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at d:\meus documentos\Projetos\php\pag1.php:8) in d:\meus documentos\Projetos\php\pag1.php on line 9
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at d:\meus documentos\Projetos\php\pag1.php:8) in d:\meus documentos\Projetos\php\pag1.php on line 9
O conteúdo de $HTTP_SESSION_VARS['sess_var'] é Olá, mundo!
Próxima Página
Warning: Unknown: open(c:\php5\tmp\sess_ac6aa13236711b9baea1cf3df7ce457e, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (c:\php5\tmp) in Unknown on line 0
Minhas duas dúvidas são as seguintes:
1) Fiquei confuso com a mensagem dizendo que não há um arquivo com o nome d:\meus documentos\Projetos\php\pag1.php, pois como podemos observar ele executou o mesmo!
2) Outra dúvida é que ao clicar no link para executar a pag2.php, o valor da variável não é transferido como esperado (segundo afirmação do livro), por que?
cara, comandos tipo header session_start cookie etc, tem q ser enviados antes de qualqeur saida html ou controlar o buffer com ob_start no inicio do codigo
Olá, Gerep
Agradeço a ajuda, mas ao alterar o código como indicou continuou gerando o mesmo erro.
Após a dica de um amigo indicando o uso do "session_register" em substituição ao "session_start", o erro desapareceu, mas o problema com o envio da variável permanece, ou seja, não passa o valor da mesma de uma página para a outra...
Estou pesquisando no Manual do PHP (http://br2.php.net/manual/pt_BR/index.php) sobre o assunto, se eu conseguir encontrar uma solução compartilharei aqui, ok?
Olá, williamhrs
Obrigado pela ajuda, mas não sei como controlar o buffer com ob_start no início do código, pois como disse anteriormente, estou iniciando os estudos em PHP. Vou pesquisar sobre o assunto.
Abraços.
Coloca assim:
ob_start();
session_start();Olá, RomanMG
Obrigado pela ajuda, o "ob_start" funcionou como indicou, mas há um problema que persiste e outro que surgiu após essa alternativa:
Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in d:\meus documentos\Projetos\php\pag3.php on line 14
Ou seja, ele não considera que a sessão tenha sido inicializada! Não entendi o motivo desta mensagem...
***
Os dois exemplos do link http://br2.php.net/manual/pt_BR/function.session-start.php originam o mesmo tipo de erro, será que é algo que devo mudar nas configurações do meu PHP?
Se alguém quiser conferir o código php "rodando":
Meu exemplo
http://www.academiadexadrez.com/tmp/pag1.php
Exemplo do Manual
Continuo sem encontrar uma solução, se alguém puder ajudar...
antes de escrever qualquer coisa no site(na tela) utilize o session_start()
e atribua valor as variaveis de seção se não não funciona mesmo.
inicie seu codigo php +o- assim
<?php
session_start();
$_session['nome'] = $_post['nome'];
echo $_session['nome'];
?>
cod HTML AQUI..----problema resolvido! =D>
antes de escrever qualquer coisa no site(na tela) utilize o session_start()
e atribua valor as variaveis de seção se não não funciona mesmo.
inicie seu codigo php +o- assim
<?php
session_start();
$_session['nome'] = $_post['nome'];
echo $_session['nome'];
?>
cod HTML AQUI..----problema resolvido! =D
Alterei o código como sugerido para:
>
<?php
session_start();
$_session['teste1'] = $_post['teste1'];
echo $_session['teste1'];
?>
<!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">](http://www.w3.org/1999/xhtml%22)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
$HTTP_SESSION_VARS['sess_var']="Olá, mundo!";
echo 'O conteúdo de $HTTP_SESSION_VARS[\'sess_var\'] é '.$HTTP_SESSION_VARS['sess_var'].'<br />';
?>
<a href="pag2.php">Próxima Página</a>
</body>
</html>
Mas continuo obtendo uma mensagem de erro:
>
Warning: session_start() [function.session-start]: open(c:\php5\tmp\sess_e27458c124521de0b6d55622bb08aa5a, O_RDWR) failed: No such file or directory (2) in d:\meus documentos\Projetos\php\pag1.php on line 3
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at d:\meus documentos\Projetos\php\pag1.php:1) in d:\meus documentos\Projetos\php\pag1.php on line 3
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at d:\meus documentos\Projetos\php\pag1.php:1) in d:\meus documentos\Projetos\php\pag1.php on line 3
O conteúdo de $HTTP_SESSION_VARS['sess_var'] é Olá, mundo!
Próxima Página
Warning: Unknown: open(c:\php5\tmp\sess_e27458c124521de0b6d55622bb08aa5a, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (c:\php5\tmp) in Unknown on line 0
Pelo que me parece é algum problema com o session_start(), pois em todos as tentativas de resolução do problema é ali que o erro é apontado.
Há algum outro meio de se conseguir o mesmo efeito deste exemplo? Ou seja, passar valores de variável de uma página para outra?
Aqui vai o link dos arquivos php (pag1.php, pag2.php e pag3.php), se alguém quiser fazer o download para analisar:
Desde já agradeço a atenção.
Amigão, o erro ta no seguinte: Quando você cria uma sessão no php, você tem que colocar ela na primeira linha da página, não pode ser em qualquer lugar não se não da pau....
Tenta modificar a pag1 colocando o código de criação da sessão no topo do arquivo.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> Acho que é isso mesmo, também sou iniciante mas tive um problema parecido com o seu recentemente e o resolvi desta maneira ;)Sucesso!