Controle de usuarios de um sistema em php.
Pessoal estou com dificuldades em logar nesse sitema basico que fiz. tenho os usuarios cadastrados no banco, quero acessar com tal perfil determinada pagina referente a esse perfil mais não consigo nem logar.
Quem puder ajudar agradeço.
segue os codigos.
Arquivo index.php
<!-- Formulário de Login -->
<form action="validacao.php" method="post">
<fieldset>
<legend>Dados de Login</legend>
<label for="txUsuario">Usuário</label>
<input type="text" name="usuario" id="txUsuario" maxlength="25" />
<label for="txSenha">Senha</label>
<input type="password" name="senha" id="txSenha" />
<input type="submit" value="Entrar" />
</fieldset>
</form>
Arquivo validação.php
<?php
// Verifica se houve POST e se o usuário ou a senha é(são) vazio(s)
if (!empty($_POST) AND (empty($_POST['usuario']) OR empty($_POST['senha']))) {
header("Location: index.php"); exit;
}
?>
<?php
// Verifica se houve POST e se o usuário ou a senha é(são) vazio(s)
if (!empty($_POST) AND (empty($_POST['usuario']) OR empty($_POST['senha']))) {
header("Location: index.php"); exit;
}
// Tenta se conectar ao servidor MySQL
mysql_connect('localhost', 'root', '9999') or trigger_error(mysql_error());
// Tenta se conectar a um banco de dados MySQL
mysql_select_db('usuarios') or trigger_error(mysql_error());
$usuario = mysql_real_escape_string($_POST['usuario']);
$senha = mysql_real_escape_string($_POST['senha']);
?>
<?php
// Verifica se houve POST e se o usuário ou a senha é(são) vazio(s)
if (!empty($_POST) AND (empty($_POST['usuario']) OR empty($_POST['senha']))) {
header("Location: index.php"); exit;
}
// Tenta se conectar ao servidor MySQL
mysql_connect('localhost', 'root', '9999') or trigger_error(mysql_error());
// Tenta se conectar a um banco de dados MySQL
mysql_select_db('usuarios') or trigger_error(mysql_error());
$usuario = mysql_real_escape_string($_POST['usuario']);
$senha = mysql_real_escape_string($_POST['senha']);
// Validação do usuário/senha digitados
$sql = "SELECT id, nome, nivel FROM usuarios WHERE (usuario = ". $usuario .") AND (senha = ". sha1($senha) .") AND (ativo = 1) LIMIT 1";
$query = mysql_query($sql);
if (mysql_num_rows($query) != 1) {
// Mensagem de erro quando os dados são inválidos e/ou o usuário não foi encontrado
echo "Login inválido!";
exit;
} else {
// Salva os dados encontados na variável $resultado
$resultado = mysql_fetch_assoc($query);
}
?>
<?php
if (mysql_num_rows($query) != 1) {
// Mensagem de erro quando os dados são inválidos e/ou o usuário não foi encontrado
echo "Login inválido!"; exit;
} else {
// Salva os dados encontados na variável $resultado
$resultado = mysql_fetch_assoc($query);
// Se a sessão não existir, inicia uma
if (!isset($_SESSION)) session_start();
// Salva os dados encontrados na sessão
$_SESSION['UsuarioID'] = $resultado['id'];
$_SESSION['UsuarioNome'] = $resultado['nome'];
$_SESSION['UsuarioNivel'] = $resultado['nivel'];
// Redireciona o visitante
header("Location: restrito.php"); exit;
}
?>
Arquivo restrito.php
<?php
// A sessão precisa ser iniciada em cada página diferente
if (!isset($_SESSION)) session_start();
// Verifica se não há a variável da sessão que identifica o usuário
if (!isset($_SESSION['UsuarioID'])) {
// Destrói a sessão por segurança
session_destroy();
// Redireciona o visitante de volta pro login
header("Location: index.php"); exit;
}
?>
<h1>Página restrita</h1>
<p>Olá, <?php echo $_SESSION['UsuarioNome']; ?>!</p>
<?php
// A sessão precisa ser iniciada em cada página diferente
if (!isset($_SESSION)) session_start();
$nivel_necessario = 2;
// Verifica se não há a variável da sessão que identifica o usuário
if (!isset($_SESSION['UsuarioID']) OR ($_SESSION['UsuarioNivel'] < $nivel_necessario)) {
// Destrói a sessão por segurança
session_destroy();
// Redireciona o visitante de volta pro login
header("Location: index.php"); exit;
}
?>
script banco de dados
CREATE TABLE IF NOT EXISTS usuarios(
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
nome VARCHAR( 50 ) NOT NULL ,
usuario VARCHAR( 25 ) NOT NULL ,
senha VARCHAR( 40 ) NOT NULL ,
email VARCHAR( 100 ) NOT NULL ,
nivel INT(1) UNSIGNED NOT NULL DEFAULT '1',
ativo BOOL NOT NULL DEFAULT '1',
cadastro DATETIME NOT NULL ,
PRIMARY KEY (id),
UNIQUE KEY usuario (usuario),
KEY nivel (nivel)
) ENGINE=MyISAM ;
Discussão (1)
Carregando comentários...