
Como Usar $_session Em Php?
Started By Uno, 16/09/2006, 22:00
5 replies to this topic
#1
Posted 16/09/2006, 22:00
Ola,
Estou tendo problemas com o codigo PHP para criar uma pagina restrita.
Por isso fiz um exemplo simplificado para explicar melhor.
Suponha que o acesso será feito no www.meusite.com.br.
O exemplo inicia com uma pagina em HTML que coleta as informações de usuário e senha. O codigo é mostrado abaixo:
<html>
<body>
<form method="POST" action="autoriza.php"><!Pede usuário e senha e envia para o script autoriza.php>
<p>Usuário: <input type="text" name="usuario" size="4"></p><!Entra com o usuário>
<p>Senha: <input type="password" name="senha" size="4"></p><!Entra com a senha>
<p><input type="submit" value="Enviar" name="B1"></p><!Envia>
</form>
</body>
</html>
Na sequencia, a pagina autoriza.php irá verificar se usuário e senha são válidos. O usuário válido é uno e a senha 123. O codigo da página autoriza.php é mostrado abaixo:
<?php
if ($_POST["usuario"] == "uno" && $_POST["senha"] == "123") //Verifica se o usuário e senha são válidos
{ //se forem válidos...
session_start(); //inicia a sessão...
$_SESSION["autoriza"] = true; //define a variável "autoriza" como verdadeira...
header ("location: [url="http://www.meusite.com.br/restrita.php");"]http://www.meusite.com.br/restrita.php");[/url] //chama a página restrita.
}
else //se não forem válidos...
echo "ATENÇÃO: Você digitou usuário ou senha incorretos!!"; //emite mensagem de alerta.
?>
Se o usuário e a senha forem corretos, a variável $_SESSION["autoriza"] é definida como verdadeira para que seja possível acessar a página restrita.php.
Se o usuário e a senha não forem corretos uma mensagem de alerta é emitida.
O código da página restrita.php é mostrado abaixo:
<?php
session_start(); //inicia sessão...
if ($_SESSION["autoriza"] == true) //verifica se a variável "autoriza" é verdadeira...
echo "Você é um USUÁRIO AUTORIZADO!!"; //se for emite mensagem positiva.
else //se não for...
echo "ATENÇÃO: ESTE ACESSO NÃO É AUTORIZADO!!"; //emite mensagem de alerta.
?>
É neste ponto que o erro acontece. A sessão é iniciada, e a variável $_SESSION["autoriza"] é verificada. Se ela for verdadeira, significa que a página restrita foi acessada com usuário e senha corretos. Se a variável $_SESSION["autoriza"] não for verdadeira, significa que a pagina restrita foi acessada de forma direta ou não autorizada.
No entanto, neste ponto, mesmo com usuário e senha corretos, o servidor emite a seguinte mensagem de erro:
PHP Warning: session_start(): open(/tmp\sess_........, O_RDWR) failed: No such file or directory (2) in D:\webpoint\docs\.....\restrita.php on line 3 PHP Notice: Undefined index: autoriza in D:\webpoint\docs\.....\restrita.php on line 4 PHP Warning: Unknown(): open(/tmp\sess_......, O_RDWR) failed: No such file or directory (2) in Unknown on line 0 PHP Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0
Por favor analisem este exemplo e me orientem com uma "dica" ou informem se existe algum erro no raciocínio ou no código.
Grato pela atenção.
Estou tendo problemas com o codigo PHP para criar uma pagina restrita.
Por isso fiz um exemplo simplificado para explicar melhor.
Suponha que o acesso será feito no www.meusite.com.br.
O exemplo inicia com uma pagina em HTML que coleta as informações de usuário e senha. O codigo é mostrado abaixo:
<html>
<body>
<form method="POST" action="autoriza.php"><!Pede usuário e senha e envia para o script autoriza.php>
<p>Usuário: <input type="text" name="usuario" size="4"></p><!Entra com o usuário>
<p>Senha: <input type="password" name="senha" size="4"></p><!Entra com a senha>
<p><input type="submit" value="Enviar" name="B1"></p><!Envia>
</form>
</body>
</html>
Na sequencia, a pagina autoriza.php irá verificar se usuário e senha são válidos. O usuário válido é uno e a senha 123. O codigo da página autoriza.php é mostrado abaixo:
<?php
if ($_POST["usuario"] == "uno" && $_POST["senha"] == "123") //Verifica se o usuário e senha são válidos
{ //se forem válidos...
session_start(); //inicia a sessão...
$_SESSION["autoriza"] = true; //define a variável "autoriza" como verdadeira...
header ("location: [url="http://www.meusite.com.br/restrita.php");"]http://www.meusite.com.br/restrita.php");[/url] //chama a página restrita.
}
else //se não forem válidos...
echo "ATENÇÃO: Você digitou usuário ou senha incorretos!!"; //emite mensagem de alerta.
?>
Se o usuário e a senha forem corretos, a variável $_SESSION["autoriza"] é definida como verdadeira para que seja possível acessar a página restrita.php.
Se o usuário e a senha não forem corretos uma mensagem de alerta é emitida.
O código da página restrita.php é mostrado abaixo:
<?php
session_start(); //inicia sessão...
if ($_SESSION["autoriza"] == true) //verifica se a variável "autoriza" é verdadeira...
echo "Você é um USUÁRIO AUTORIZADO!!"; //se for emite mensagem positiva.
else //se não for...
echo "ATENÇÃO: ESTE ACESSO NÃO É AUTORIZADO!!"; //emite mensagem de alerta.
?>
É neste ponto que o erro acontece. A sessão é iniciada, e a variável $_SESSION["autoriza"] é verificada. Se ela for verdadeira, significa que a página restrita foi acessada com usuário e senha corretos. Se a variável $_SESSION["autoriza"] não for verdadeira, significa que a pagina restrita foi acessada de forma direta ou não autorizada.
No entanto, neste ponto, mesmo com usuário e senha corretos, o servidor emite a seguinte mensagem de erro:
PHP Warning: session_start(): open(/tmp\sess_........, O_RDWR) failed: No such file or directory (2) in D:\webpoint\docs\.....\restrita.php on line 3 PHP Notice: Undefined index: autoriza in D:\webpoint\docs\.....\restrita.php on line 4 PHP Warning: Unknown(): open(/tmp\sess_......, O_RDWR) failed: No such file or directory (2) in Unknown on line 0 PHP Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0
Por favor analisem este exemplo e me orientem com uma "dica" ou informem se existe algum erro no raciocínio ou no código.
Grato pela atenção.
#2
Posted 16/09/2006, 22:09
você está INICIANDO a sessão, depois de apresentar para o NAVEGADOR targs de HTML!
coloque o SESSION_START() no inicio da página!
<?php
session_start();
?>
//CODIGO HTML... / PHP
T+
coloque o SESSION_START() no inicio da página!
<?php
session_start();
?>
//CODIGO HTML... / PHP
T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951
PALMEIRAS - Primeiro campeão do mundo em 1951
#3
Posted 16/09/2006, 22:52
Obrigado pela dica Goku Jr,
Só não deu certo. O servidor ainda retorna a mesma mensagem de erro.
Eu fiz como você disse:
Na página index.htm, antes da tag <html> iniciei a sessão:
<?php
session_start();
?>
<html>
<body>
<form method="POST" action="autoriza.php"><!Pede usuário e senha e envia para o script autoriza.php>
<p>Usuário: <input type="text" name="usuario" size="4"></p><!Entra com o usuário>
<p>Senha: <input type="password" name="senha" size="4"></p><!Entra com a senha>
<p><input type="submit" value="Enviar" name="B1"></p><!Envia>
</form>
</body>
</html>
Nos codigos php não mexi.
Será que fiz algo errado?
Só não deu certo. O servidor ainda retorna a mesma mensagem de erro.
Eu fiz como você disse:
Na página index.htm, antes da tag <html> iniciei a sessão:
<?php
session_start();
?>
<html>
<body>
<form method="POST" action="autoriza.php"><!Pede usuário e senha e envia para o script autoriza.php>
<p>Usuário: <input type="text" name="usuario" size="4"></p><!Entra com o usuário>
<p>Senha: <input type="password" name="senha" size="4"></p><!Entra com a senha>
<p><input type="submit" value="Enviar" name="B1"></p><!Envia>
</form>
</body>
</html>
Nos codigos php não mexi.
Será que fiz algo errado?
#4
Posted 16/09/2006, 23:24
O <? session_start() ; ?> deve estar no começo de todas as paginas que acessem as session.
Nos codigos que vc passou, parece que vc esqueceu uns { } nos if/else .
Vc pode registrar uma variavel em uma session assim:
$var = true ;
session_register("var");
e entao acessa-la assim:
$_SESSION["var"];
Fora isso, é bom começar o autoriza.php assim:
<?
session_start();
session_destroy();
session_start();
?>
para zerar o registro de sessions.
Boa sorte
Nos codigos que vc passou, parece que vc esqueceu uns { } nos if/else .
Vc pode registrar uma variavel em uma session assim:
$var = true ;
session_register("var");
e entao acessa-la assim:
$_SESSION["var"];
Fora isso, é bom começar o autoriza.php assim:
<?
session_start();
session_destroy();
session_start();
?>
para zerar o registro de sessions.
Boa sorte

#5
Posted 17/09/2006, 11:09
está retornando a mesma mensagem de erro ?
se sim, você está rodando este seus script local, digo em sua maquina ?
-- se for, abra o PHP.INI e verifique se o session.save_path está configurado corretamente, de preferência, coloque o caminho c:/apache/temp para que possa salvar os temporarios da SESSÃO
T+
se sim, você está rodando este seus script local, digo em sua maquina ?
-- se for, abra o PHP.INI e verifique se o session.save_path está configurado corretamente, de preferência, coloque o caminho c:/apache/temp para que possa salvar os temporarios da SESSÃO
T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951
PALMEIRAS - Primeiro campeão do mundo em 1951
#6
Posted 25/09/2006, 00:03
está retornando a mesma mensagem de erro ?
se sim, você está rodando este seus script local, digo em sua maquina ?
-- se for, abra o PHP.INI e verifique se o session.save_path está configurado corretamente, de preferência, coloque o caminho c:/apache/temp para que possa salvar os temporarios da SESSÃO
T+
Ola,
Realmente o erro estava na configuração do servidor onde hospedo o meu site. Enviei um email para o suporte e eles detectaram uma falha na configuração. Eles fizeram uma alteração no php.ini e o erro parou de ocorrer.
Obrigado pelas dicas.
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)