Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá Pessoal.
Estou tentando fazer um esqueminha simples, onde se o user tentar acessar uma página interna, mas não estiver logado, ele vai pra página de login, e quando logar, cai na página que ele tentou acessar quando não estava logado.
Teoricamente eu achei que estava tudo certo, mas não esta funcionando.
Alguém sober de um código melhor, ou qual é o erro deste ?
pagina interna
<?php
session_start();
$basepage = basename($_SERVER['PHP_SELF']);
if (($basepage != "login.php") && ($basepage != "index.php")){
$_SESSION["lastpage"] = $basepage;
?>
login.php
<?php
session_start();
//funções q verificam se é valido e retorna true para $login se for...
if ($login){
//funções para habilitar cookies para logar o user
print "<script>window.location=('" . $_SESSION['lastpage'] . "')</script>";
}
?>Não....
quando eu coloco "<script>window.location=('index.php')</script>";
por exemplo... ele vai redirecionar certinho pra index.php
agora se o $_SESSION['lastpage'] = "index.php";
"<script>window.location=('" . $_SESSION['lastpage'] . "')</script>";
ele não redireciona.. ele carrega a pagina login.php denovo!
quando abro a pagina do login... pelos echos q fiz... a session ta com a variavel guardada... mas quando dou o enter do form... a session esta empty...
> agora se o $_SESSION['lastpage'] = "index.php";
Mas, segundo esta parte do script, $_SESSION['lastpage[] nunca será index.php:
if (($basepage != "login.php") && ($basepage != "index.php")){:unsure:
Tente dar um alert() para ver qual é o conteúdo da variável
Sim sim... lapso meu na explicação....
ignore o index...
eh para qualquer outra página.... q não seja o index e/ou login
tentou usar o alert()? Qual é o valor mostrado? uma string vazia?
sim.... retorna vazio
login.php
<?php
session_start();
//funções q verificam se é valido e retorna true para $login se for...
if ($login){
//funções para habilitar cookies para logar o user
echo "<script LANGUAGE=\"JavaScript\">{ alert ('" . $_SESSION['lastpage'] . "')}</script>";
print "<script>window.location=('" . $_SESSION['lastpage'] . "')</script>";
}
?>
fiz um teste com cookie, também não funcionou =SOlá fcootf e beraldo,
tente mudar o operador &&(E) para ||(OU) no código ou somente se for diferente de login.php
<?php
session_start();
$basepage = basename($_SERVER['PHP_SELF']);
if (($basepage != "login.php") || ($basepage != "index.php"))
{
$_SESSION["lastpage"] = $basepage;
}
?>
Creio que seja isso... se for diferente de login, ou se for diferente de index.php ele grava a session...
abraços,
léo
O problema, léo, é que nem a index.php nem a login.php podem estar nessa variável de sessão. Então tem que usar AND, mesmo.
fcottf, você tem certeza de que acessou uma página diferente da index.php e da login.php antes de efetuar login?
humm... tah phoda...
Olá Beraldo e fcottf,
tcottf fiz um teste e queria saber de onde vem a variavel $login. É de uma consulta do banco??
esta parte aqui não esta indo...
if ($login){
//funções para habilitar cookies para logar o user
print "<script>window.location=('" . $_SESSION['lastpage'] . "')</script>";
}
A sessão não esta vazia aqui...
Abraços,
léo
Ola leonardo e beraldo..
eu tentei com cookie fiz a mesma coisa e deu certo!
=S ... então acho q pode dar por encerrado o tópico...
invez de usar as sessions, tentando cookie depois de uns probleminhas ou outros rolou!
=D
nao sei se vai ajudar alguem dps de tanto tempo...
eu fiz do mesmo jeito do fcottf e nao estava funcionando mas com o header('Location:'.$ultima); funciona
O que está acontecendo? Dá erro?