Jump to content
Genneral

Verificar se existe uma session se não redireciona para outra página

Recommended Posts

Olá, boa tarde pessoal!

Possuo uma aplicação PHP que a partir do passo 1, localizado em "http://www.meusite.com.br/solicitar/" cria uma nova SESSION. Desta forma, o form vai seguindo em outros passos:

Porém se o usuário acessa diretamente a URL "http://www.meusite.com.br/solicitar/confirmacao" por exemplo, ele mostra erros de sessão, pq não há dados para continuar para o próximo passo....porque a sessão não está aberta.

Desta forma eu tenho o seguinte código que abre a SESSION:

if(!isSet($_SESSION)){
  session_start("primeiro_acesso"); // inicia a sessao se ja nao tiver uma aberta
} 

Para evitar estes erros eu preciso de algo como:

$redirect = "http://www.meusite.com.br/solicitar/";

if(!isSet($_SESSION)){
  session_start("primeiro_acesso"); // inicia a sessao se ja nao tiver uma aberta
} else{
  algo como "header("location:$redirect");"
}

É possível trabalhar com isso de forma que se o usuário acessar o o site sem uma sessão aberta ele direcione para uma página específica?

Obs: a SESSION funciona apenas a partir do /solicitar/ o restante do site não é usado este tipo de SESSION (usa-se o padrão do Wordpress).

Share this post


Link to post
Share on other sites

Pelo que entendi é sim, eu deixo todo o codigo da pagina dentro do primeiro if, e no final da pagina abro o php com else

<?php 
if(!isSet($_SESSION)){
session_start("primeiro_acesso"); // inicia a sessao se ja nao tiver uma aberta
?>
<html>
</html>
<?php } else{
  header("location:$redirect");
} ?>
  • +1 1

Share this post


Link to post
Share on other sites

Crie uma sessão para o usuário e junto crie uma variável pra controlar em qual form ele deveria estar

se ele entrar em solicitar,coloque o valor 1,em confirmação valor 2 e finalização valor 3

se ele entrar na pagina de finalização e na session estiver valor 2,direcione ele para o form anterior.

  • +1 2

Share this post


Link to post
Share on other sites

Ví em algum lugar que agora eu perdi que adicionando o um cache-control sem cache ele não grava o local da sessão..fiz isso e deu certo..

No meu arquivo que carrega a sessão fiz o seguinte:

  • na primeira linha adicionei: header('Cache-Control: no-cache');
  • não fechei o arquivo, ou seja, iniciei com <?php mas não o fechei
No passo 2/3/... fiz o seguinte:
  • no passo /solicitar/confirmacao/ eu fiz uma chamada do arquivo que carrega a sessão com um require_once.

Agora se eu acesso, por exemplo .../solicitar/dados em uma guia anonima ou em outro navegador ele direciona para o inicio automaticamente... que viagem :D

Edited by Genneral

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Alberto Nascimento
      Estou tendo problemas de acesso ao Session, onde quando realizo login via computador, consigo "pegar" os dados que foram armazenados na sesion, mas quando utilizo o sistema de login no telefone ( android, por exemplo ) a session não esta conseguindo carregar os dados do usuário logado e exibir na página seguinte.
       
      Outra coisa que observei é que não consigo trabalhar com session em pastas diferentes, isso é normal? Veja só:
       
       
      Utilizando esta estrutura, não consigo ter acesso ao session no sistema ANDROID
       
      Agora se ao invés de ser como esta acima, faço uma pasta com todos os arquivos juntos, já consigo "pegar" os dados da session. Isso é normal?
    • By tony_lu
      Ola pessoal, tenho uma hospedagem de php na hostgator e estou tentando rodar uma rotina com session e esta dando erro, na pagina só tem este código:
       
      <?php  session_start();  ?> E esta dando este erro:
      Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home2/sitewww/public_html/carrinho.php:1) in /home2/sitewww/public_html/carrinho.php on line 2
       
      Alguem pode me ajudar?
    • By Evandrorussi
      Olá pessoal,
       
      Trabalho com PHP a uns 6 anos e me deparei com um problema de session que nunca ouvi falar, pelo menos não encontrei nada pela internet desse tipo. Tenho um servidor dedicado no Google Cloud e o site tem um sistema de login via session. O problema é que a session funciona aleatoriamente, tem hora que não funciona, o cliente troca de tela e o servidor perde a session e pede pra logar novamente, isso não acontece com todos usuários, comigo por exemplo não acontece.
      O cara que trabalha comigo não ocorria esse problema mas agora começou a acontecer e ele reparou que com guia anônima o problema não ocorre.
       
      Caso alguém pergunte, session_start() está iniciando em todas as páginas.
       
      Abraço
       
       
    • By darkside88
      Esse é meu código porém não está exibindo dentro dos inputs as informações recuperadas da página EDITAR nos campos! <?php //ini_set('display_errors', 0); include('conexao/connection.php'); session_start(); $cli_codigo = intval($_GET['usuario']); if(isset($_POST['confirma'])){     //Registrar Dados     if(!isset($_SESSION))         session_start();       foreach($_POST as $chave=>$valor)         $_SESSION[$chave] = $con->real_escape_string($valor);       //Validar     if (strlen($_SESSION['nome']) == 0)     $erro[] = "Preencha o campo Nome";            if (strlen($_SESSION['wpp']) == 0)     $erro[] = "Preencha o campo WhatsApp";       if (strtotime($_SESSION['dt1']) > strtotime($_SESSION['dt2']) || strtotime($_SESSION['dt1']) == strtotime($_SESSION['dt2']))     $erro[] = "A Data de Criação no IPTV deve ser menor que a Data de Vencimento no IPTV ou não podem ser iguais";           //Inserir       if(count($erro) == 0){         $sql_code = "UPDATE cadastrocliente set             nomecli = '$_SESSION[nome]',             email = '$_SESSION',             wpp = '$_SESSION[wpp]',             srv = '$_SESSION[srv]',              srv = '$_SESSION[dt1]',                         dataVI = '$_SESSION[dt2]',             app = '$_SESSION[app]'             WHERE nomecli = '$cli_codigo'";         $confirma = $con->query($sql_code) or die($con->error);         if($confirma){             unset(                 $_SESSION[nome],                 $_SESSION,                 $_SESSION[wpp],                 $_SESSION[srv],                 $_SESSION[dt1],                 $_SESSION[dt2],                 $_SESSION[app]                          );                         header("Location: index.php?p=listarcliente");         }else{             $erro[] = $confirma;         }     }else{         $sql_code = "SELECT * FROM cadastrocliente WHERE id_cliente= '$cli_codigo'";         $sql_query = $con->query($sql_code) or die($con->error);         $linha = $sql_query->fetch_assoc();           $_SESSION[nome] = $linha['nomeCli'];         $_SESSION = $linha['email'];         $_SESSION[wpp] = $linha['wpp'];         $_SESSION[srv] = $linha['srv'];         $_SESSION[srv] = $linha['dt1'];         $_SESSION[dt2] = $linha['dt2'];         $_SESSION[app]  = $linha['app'];     } }   ?> <?php   if (count($erro) > 0) {     echo "<div class='alert alert-danger'>";     foreach ($erro as $valor)         echo "$valor <br>";          echo "</div>";}  ?> <form class="container-fluid" action="index.php?p=editar&usuario=<?php echo $cli_codigo?>" method="POST">     <label for="nome">Nome do Cliente</label>     <input type="text" name="nome" value="<?php echo $_SESSION[nome]?>" class="form-control" placeholder="Nome Completo do Cliente">     <label for="email">Email</label>     <input type="email" name="email" value="<?php echo $_SESSION?>" class="form-control" placeholder="nome@exemplo.com">     <label for="mensagem">WhatsApp</label>     <input type="text" name="wpp" value="<?php echo $_SESSION[wpp]?>" class="form-control" placeholder="Digite o seu Whatsapp (DD) 9 XXXX-XXXX"         id="celular" name="mensagem">     <script type="text/javascript">     $("#telefone,#celular").mask("(00) 0 0000-0000");     </script>     <label for="srv">Servidor do Cliente</label>     <input type="text" name="srv" value="<?php echo $_SESSION[wpp]?>" class="form-control" placeholder="Servidor do Cliente">     <label for="dt1">Data de Criação no IPTV</label>     <input type="date" value="<?php echo $_SESSION[dt1]?>" data- provide="datepicker" name="dt1" class="form-control">     <label for="dt2">Data de Vencimento no IPTV</label>     <input type="date" name="dt2" value="<?php echo $_SESSION[dt2]?>" class="form-control">     <label for="app">App doCliente</label>     <input type="text" name="app" value="<?php echo $_SESSION[app]?>" class="form-control" placeholder="App do Cliente">     <input type="submit" name="confirma" class="form-control btn btn-dark mt-4 mb-4 " value="Cadastrar">   </form>
    • By fabina
      Ola tenho um questionario feito  em php  guardo o valor das respostas no banco   e depois    tem um resultado por cada area  que ele respondeu ate ai responde  super bem mais quando  duas pessoas começam a fazer  ele  perde o valor da session e nao  exibe o valor para o meu usuario ,ou as vezes troca o nome do usuario x para y 
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.