Ir para conteúdo

POWERED BY:

Arquivado

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

Marostegan

[Resolvido] Acesso Restrito

Recommended Posts

olá pessoal... fiz o seguinte para poder fazer um acesso restrito a algumas páginas no meu site:

 

criei o BD MySQL assim:

 

CREATE TABLE login (
   id int(11) NOT NULL auto_increment,
   login varchar(200) NOT NULL,
   senha varchar(200) NOT NULL,
   UNIQUE id (id, login)
)


e depois fiz...


INSERT INTO login VALUES ( '1', 'dan', '123');

para as páginas, montei da seguinte forma:

 

CONFIG.PHP

 

<?

function conecta () {
 mysql_connect('localhost','nome_do_usuario','senha') or die ("erro na conexão");
mysql_select_db('nome_do_bd') or die ("erro ao conectar ao banco");

};
?>

VERIFICA.PHP

 

<?
require'config.php';
conecta();
$sql = @mysql_query("SELECT * FROM login WHERE login='$login' and senha='$senha'") or die ();
$resultado = @mysql_num_rows($sql);
if($resultado == 1){
session_start();
$_SESSION["user"] = $login;
$_SESSION["pass"] = $senha;
session_register("user");
session_register("pass");
header("location: index.php");
}else{
echo"Usuario ou senha não conferem... Clique <a href=\"javascript:history.back(-1)\">aqui</a> para se logar novamente...";
};
?>

INDEX.PHP

 

<?
session_start();
if(!session_is_registered("user") AND !session_is_registered("pass")){
echo"Você não está logado.. Clique <a href=\"login.php\">aqui</a> para se logar...";
}else{
?>

Você esta logado... Seja bem vindo
<?
};
?>

LOGIN.PHP

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Teste de login</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name="form1" method="post" action="verifica.php">
  <p>Login : 
    <input name="login" type="text" id="login">
  </p>
  <p>Senha: 
    <input name="senha" type="password" id="senha">
</p>
  <p align="center">
    <input type="submit" name="Submit" value="Enviar">
  </p>
</form>
</body>
</html>

 

quando eu tento entrar com o usuário que cadastrei no BD "dan" "1234" ele não aceita... é como se não tivesse isso ai cadastrado no BD.

 

o que eu fiz de errado?

 

 

obrigado pessoal!

 

ahh... e a idéia é depois para as paginas que eu quiser proteger, é colocar o seguinte codigo no começo de cada uma:

 

<?
session_start();
if(!session_is_registered("user") AND !session_is_registered("pass")){
echo"Você não está logado.. Clique <a href=\"login.php\">aqui</a> para se logar...";
}else{
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não há a necessidade de usar $_SESSION["user"] = $login; e session_register("user");

$_SESSION já é automaticamente registrada

 

Leia a documentação: http://www.php.net/session_register

 

Troque seus

 

if(!session_is_registered("user") AND !session_is_registered("pass")){
por

 

if(!isset($_SESSION["user"]) AND !isset($_SESSION["pass"])){
Não se esqueça que a senha tem de ser criptografada antes de ser gravada em seu BD.

Trabalhar com register_globals on é fatal para segurança de seu sistema.

 

Aconselho a rever seu desenvolvimento

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que ele não esta recusando porque você cadastrou assim:

 

INSERT INTO login VALUES ( '1', 'dan', '123');
e esta tentando logar assim:

 

quando eu tento entrar com o usuário que cadastrei no BD "dan" "1234" ele não aceita... é como se não tivesse isso ai cadastrado no BD.

 

:huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

E não da erro algum?

 

Utilizar mysql_error() e retirar os @'s para ver que erro ocorre ajuda.

 

Outro problema pode ser se você usa register_globals on localmente e estiver

testando em um servidor com register_globals off ou se ainda copiou este código

de algum lugar onde o register_globals está on e está testando em um servidor onde

o register_globals está off. Ai não vai mesmo.

 

De um echo de sua query e veja se $login e $senha possuem algum valor.

 

Debug seu código e nos diga os erros que encontrou.

 

Aparentemente o código esta correto para quem usa register_globals on.

 

Adicione as linhas:

$login = $_POST['login'];

$senha = $_POST['senha'];

 

Talve modificar o trecho abaixo resolva seu problema.

 

verifica.php

 

<?
require'config.php';
conecta();
$login = $_POST['login'];
$senha = $_POST['senha'];
$sql = @mysql_query("SELECT * FROM login WHERE login='$login' and senha='$senha'") or die ();
$resultado = @mysql_num_rows($sql);
if($resultado == 1){
session_start();
$_SESSION["user"] = $login;
$_SESSION["pass"] = $senha;
session_register("user");
session_register("pass");
header("location: index.php");
}else{
echo"Usuario ou senha não conferem... Clique <a href=\"javascript:history.back(-1)\">aqui</a> para se logar novamente...";
};
?>
Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu to usando o servidor da locaweb...

 

como eu vejo esse register_global se está on ou off??

 

você pode me ajudar com isso --> De um echo de sua query e veja se $login e $senha possuem algum valor.?

 

desculpa tantas perguntas e obrigado por estar dando essa força

Compartilhar este post


Link para o post
Compartilhar em outros sites

para verificar se está on ou off faça uma pagina com a função php_info()

 

para ver os valores das variáveis utilize a função echo()

 

Ex: echo $sql;

 

Aconselho estudar melhor o PHP antes de se aventurar a fazer páginas.

 

Na locaweb com certeza o register_globals está off.

 

Leia com carinho as informações do link abaixo antes de prosseguir com seus desenvolvimentos.

 

http://www.php.net/manual

 

^_^

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

então amigo, é que na verdade eun não trabalho com php...

 

essa é a única coisa que eu preciso...

 

=/

 

me da uma força por favor, preciso mto que isso funcione... =//

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já te dei a solução amigo :mellow:

 

Adicione as linhas:

$login = $_POST['login'];

$senha = $_POST['senha'];

 

Talve modificar o trecho abaixo resolva seu problema.

 

verifica.php

 

<?
require'config.php';
conecta();
$login = $_POST['login'];
$senha = $_POST['senha'];
$sql = @mysql_query("SELECT * FROM login WHERE login='$login' and senha='$senha'") or die ();
$resultado = @mysql_num_rows($sql);
if($resultado == 1){
session_start();
$_SESSION["user"] = $login;
$_SESSION["pass"] = $senha;
session_register("user");
session_register("pass");
header("location: index.php");
}else{
echo"Usuario ou senha não conferem... Clique <a href=\"javascript:history.back(-1)\">aqui</a> para se logar novamente...";
};
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aee agora funcionou.

 

brigadão =) =) =)

 

## EDIT ##

 

desculpa mais uma pergunta...

 

mas como faço o botão de logoff?

 

pq dps de logado se eu digitar o endereço de alguma página que deveria ser restrita.. ele acessa sem pedir a senha nvoamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal.. se alguem precisar fazer um logout...

 

<?
session_start();
session_destroy();
session_unset(); 
echo "<script>alert('Desconectado!');top.location.href='pagina_de_suaescolha.html';</script>";
?>

 

abraçosss

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.