Jump to content
JoaoVM

[Resolvido] Valida Login

Recommended Posts

JoaoVM

Boa tarde,

Bem, tenho um problema aqui com o meu validar login, deve ser algo pequeno que não estou a conseguir ver, e ponho mais uns tópico aqui para me ajudarem, porque muitas cabeças pensam mais que apenas uma..

Este é o meu valida_login.php, tem uma pagina anterior com um formulário de login, ele inicia a sessão e se for para outra página e ele tem a sessão iniciada, apenas não faz o redirecionamento da página valida_login.php, segue o código:

<?php
require_once ('init.php');
//CONSULTA DO UTILIZADOR
$consulta="select username, passwd, role, rfid from utilizadores where username='" . $_POST['username'] . "' and passwd='" . $_POST['passwd'] . "'";
$resultado=mysql_query($consulta);

if (mysql_num_rows($resultado)>0) //SE O UTILIZADOR E A PASSWORD COINCIDIREM
{
 //COLOCA NA VARIAVEL LINHA OS DADOS DA CONSULTA
 $linha=mysql_fetch_array($resultado);
 //COLOCA O USERNAME EM SESSAO
 $_SESSION['username']=$linha['username'];
 //COLOCA O ROLE EM SESSAO
 $_SESSION['role']=$linha['role'];
 //COLOCA O RFID EM SESSAO
 $_SESSION['rfid']=$linha['rfid'];

 header("location: index.php");
}
else //CASO NAO COINCIDAM
{
 //REDIRECCIONA PARA A PAGINA INICIAL REPORTANDO O ERRO
 header("location: index.php?erro=1");
}
?>

Cumprimento,

João Martins

Share this post


Link to post
Share on other sites
AJBM

Boas!

Antes do primeiro $_Session usa isto session_start();

Edited by AJBM

Share this post


Link to post
Share on other sites
JoaoVM

sim eu sei e eu uso, ele inicia a sessão, a ordem seria, login.php(form)->valida_login.php->index.php, o que sucede é que quando passa do login para o valida_login o valida_login nao avança dai, mas se voltar atras ou for para o index.php pela barra de endereços ele tem o login feito...

Share this post


Link to post
Share on other sites
AJBM

Pelo que percebi ele entra no primeiro if mas não é redireccionado para o index, não sei se é isto, mas tenta header("Location: index.php"), pode ser case sensitive tem cuidado com o caminho tens a certeza que o caminho esta correcto.

Share this post


Link to post
Share on other sites
Virneto

quando passa do login para o valida_login o valida_login nao avança dai, mas se voltar atras ou for para o index.php pela barra de endereços ele tem o login feito...

Epá, eu posso estar só a fazer ruído, mas esta tua afirmação não sugere que o problema está no header()??

Experimentaste a alterar aquela instrução? mudar o endereço para absoluto e verificar que não há output antes do header()?


"Que inquieto desejo vos tortura, Seres elementares, força obscura? Em volta de que ideia gravitais?" >> Anthero de Quental

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Linuxando.com | ...

Share this post


Link to post
Share on other sites
JoaoVM

Sim Virneto o problema está no header, mas não percebo onde, porque tenho outros headers da mesma forma e funcionam, já experimentei com o caminho completo e só com index.php

header("Location: /Applications/MAMP/htdocs/FINAL/FUNC/index.php");

header("Location: index.php");

Também não é por ser case sensitive AJBM.

Pessoal decidi optar por outra solução, é a seguinte:

$url = 'index.php'; 
echo "<script language=\"javascript\">
location.href=\"$url\";
</script>";

Share this post


Link to post
Share on other sites
AJBM

Tens de colocar o caminho do valida_login ate o index. O valida_login e o index estão na raiz?

Share this post


Link to post
Share on other sites
JoaoVM

Sim, está tudo na raiz excepto imagens e mais umas cenas poucas, mas já resolvi, de outra forma mas resolvi:

$url = 'index.php';
echo "<script language=\"javascript\">
location.href=\"$url\";
</script>";

Share this post


Link to post
Share on other sites
Virneto

Procura por algum output ou espaço em branco após fecho da tag ?>

para o header() funcionar corretamente nenhum output pode ser enviado antes do header(). e Repara que output pode ser um echo, print, ou mesmo uma mensagem de erro.

Segundo o php.net também podes contornar o output se utilizares ob_start(). Assim muito resumidamente pões nos teus scripts:

<?php
ob_start();
//o teu código

//a tua header();

//blablabla


ob_flush();
?>

mas eu não seui se isto é seguro. vê na documentação aqui


e em último caso:

echo("<script>location.href = 'http://whatever.com/thankyou.php';</script>");

:D

mas o header() é mais rápido.

Edição:

Pessoal decidi optar por outra solução, é a seguinte:

$url = 'index.php';
echo "<script language=\"javascript\">
location.href=\"$url\";
</script>";

ainda por cima com 11 minutos de diferença...Fair enough!!

:D:P

$working_memory[]='stay updated'=>'hit F5!';

Edited by Virneto

"Que inquieto desejo vos tortura, Seres elementares, força obscura? Em volta de que ideia gravitais?" >> Anthero de Quental

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Linuxando.com | ...

Share this post


Link to post
Share on other sites
JoaoVM

11 minutos de diferença?

é rápido está a funcionar normalmente..opa desde que esteja a funcionar está ;)

Obrigado Virneto e AJBM

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

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.