Ir para conteúdo

POWERED BY:

Arquivado

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

Michael2008

Não grava a variável session

Recommended Posts

Pessoal, tenho um site no provedor uolhost a uns 2 anos, tudo estava funcionado perfeitamente, mais de uma hora para outra parou de gravar a session do login, o provedor me disse que eu tenho que criar o php.ini e instalar na diretório /Web (local onde fica as páginas para serem exibidas na internet). Com esse procedimento é usado o meu php.ini. Fiz está criação pelo cPanel do uolhost, até ai tudo bem.

 

Agora eu não sei configurar o php.ini para voltar a gravar os sessions.

 

Simulação do erro : Quando acesso o site e coloco a senha e o login, essas informações são checadas no banco de dados, como o usuário e senha existe é gravado o session e sou direcionado ao outra página.

 

Neste momento o provedor me retorna uma erro em tela, conforme abaixo :

 

 

PHP Warning: session_start() [function.session-start]: open(C:\Users\TEMP.UOLHOST.250\AppData\Local\Temp\\sess_6t2cqbr9ga2716bgsrsutsltu0, O_RDWR) failed: No such file or directory (2) in E:\home\lubclearco\Web\sistema_de_cadastro\logar.php on line 27 PHP Warning: Unknown: open(C:\Users\TEMP.UOLHOST.250\AppData\Local\Temp\\sess_6t2cqbr9ga2716bgsrsutsltu0, 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 () in Unknown on line 0

 

 

Uso o script para login como segue a baixo :

 

<?php

// inclui o arquivo de configuracao do sistema

include ("Config/config_sistema.php");

// recebe dados do formulário

$login = htmlspecialchars($_POST['login']);

$senha = $_POST['senha'];

// verifica se o usuario existe

$consulta = mysql_query("select * from dados_usuarios where Login='$login'");

$campos = mysql_num_rows($consulta);

if($campos != 0) {

// se o usuario existe verifica a senha dele

 if($senha != mysql_result($consulta,0,"Senha")) {
  echo "<font color=red><b>
     <strong>Senha incorreta!</strong><br>
               Click <a href='index.php'>aqui</a> para retornar a tela de login.
     </font></b>";
  exit;

 } else {

  // estiver tudo certo vamos ver se ele e o administrador

  if($login == $login_admin) {

   // se for o login do administrador vamos verificar a senha dele

   // se  igual a do administrador

   if($senha == $senha_admin) {

    // se for o administrador vamos criar a sessão

    session_start();

    $_SESSION['login_usuario'] = $login;
    $_SESSION['senha_usuario'] = $senha;
   
    // redireciona o link para uma outra pagina
                header("Location: admintelaopcoes.htm");
    
   }
  } else {

   // se o login não for do administrador vamos criar a sessão dele

   session_start();

   $_SESSION['login_usuario'] = $login;
   $_SESSION['senha_usuario'] = $senha;
   
   // redireciona o link para uma outra pagina
            header("Location: Usuario/dados_usuario.php");
  }
 }
} else {
 echo "<font color=red><b>
    <strong>O usuario não existe!</strong><br>
           Click <a href='index.php'>aqui</a> para retornar a tela de login.
    </font></b>";
 exit;
}
?>

 

 

Se alguém poder me ajudar ficarei grato !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não deve sair usando session_start, isso só se faz uma vez. Arroba é gambiarra nesse caso.

 

Mas o real problema é que session.save_path não está correto, nesse caso, o host deve solucionar, uma vez que é compartilhado.

 

php.ini na pasta pública? o suporte da UOL host pirou de vez....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não deve sair usando session_start, isso só se faz uma vez. Arroba é gambiarra nesse caso.

 

Mas o real problema é que session.save_path não está correto, nesse caso, o host deve solucionar, uma vez que é compartilhado.

 

php.ini na pasta pública? o suporte da UOL host pirou de vez....

 

Estou ficando louco com isso !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara não me leve a mal não, mas por que você inicia o session_start por duas vezes, se de qualquer forma você vai usá-la?

Acredito que seu problema seja de organização do código, por isso você está se batendo.

Você cria duas verificações de usuário mas usa duas variáveis sem dar valores a ela.

if($login == $login_admin) {
if($senha == $senha_admin) {


Qual os valores estão atribuídos a

$login_admin; 
$senha_admin;

?

Para seu melhor redirecionamento, você poderia criar um campo nível
1 - Admin
2 - Outro nível,

Fazia uma consulta de usuário e senha, validando ... consultava o nível para dar o redirecionamento correto.

Segue somente uma sugestão .... ok? Está incompleto, mas pode ajudar.

<?php
session_start();
include ("Config/config_sistema.php");
$login = htmlspecialchars($_POST['login']);
$senha = $_POST['senha'];

$consulta = mysql_query("select * from dados_usuarios where Login = '$login'");
$campos = mysql_num_rows($consulta);
if($campos != 0){
  // se o usuario existe verifica a senha dele
  if($senha != mysql_result($consulta,0,"Senha")){
      echo "<font color=red><b>
       <strong>Senha incorreta!</strong><br>
         Click <a href='index.php'>aqui</a> para retornar a tela de login.
      </font></b>";
       exit;
   }else{
      $_SESSION['login_usuario'] = $login;
      $_SESSION['senha_usuario'] = $senha;
      if(// Faz a consulta do nível para saber se é ADM sendo ADM){
        header("Location: admintelaopcoes.htm");
      }
      else{
        // O campo nível não é de administrador então redireciona para esta página
           header("Location: Usuario/dados_usuario.php");
     }
   }
}else{
 echo "<font color=red><b>
    <strong>O usuario não existe!</strong><br>
           Click <a href='index.php'>aqui</a> para retornar a tela de login.
    </font></b>";
 exit;
}
?>

 

Mais uma sugestão, veja como fiz a indentação do código acima, fica melhor para se obter ajuda.

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.