Desenvolvimento de um sistema de Login em PHP
Antes de começar lembre se que você precisará de um servidor que suporte a linguagem PHP e MYSQL. Então se você ainda não encontrou um servidor gratuito com estas funcionalidades esta lista poderá lhe adjudar.
Este sistema será simples com usuário e senha definidos previamente em uma tabela no banco de dados (MYSQL).
1. Criando o formulário em (HTML)
Primeiramente temos que criar o formulário onde as informações de usuário e senha serão submetidas.
1. Criando o formulário em (HTML)
Primeiramente temos que criar o formulário onde as informações de usuário e senha serão submetidas.
<form method="post" action="processa.php">
<h2>Usuário</h2>
<input type="text" name="usuario" maxlength="50" />
<h2>Senha</h2>
<input type="password" name="senha" maxlength="50" />
<input type="submit" value="Entrar" />
</form>
2. Criando a Tabela no (MYSQL)
Depois de termos criado o formulário temos que criar uma tabela do MYSQL onde as informações de usuário e senha serão armazenadas. Para criar execute esse código dentro do seu Banco de Dados.
DROP TABLE IF EXISTS `usuarios`;
CREATE TABLE IF NOT EXISTS `usuarios` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`nome` varchar(100) NOT NULL,
`usuario` varchar(50) NOT NULL,
`senha` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `usuario` (`usuario`)
ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
3. Criando uma pagina onde irão ser processados os dados (.processa.php)
Nesta pagina serão incluídas todas configurações. Inclusive as conexões com o banco de dados e as verificações automáticas, para ver se não tem nenhum espertinho tentando bular o sistema.
<?
$_SG['conectaServidor'] = true;
$_SG['abreSessao'] = true;
$_SG['caseSensitive'] = true;
$_SG['validaSempre'] = true;
$_SG['servidor'] = 'localhost';
$_SG['usuario'] = 'root'; // Insira seu usuário do banco de dados
$_SG['senha'] = ''; // Insira a senha do seu Banco de Dados
$_SG['banco'] = 'test'; // Insira o nome do banco de dados
$_SG['paginaLogin'] = 'login.php'; // Insira o local da página de Login
$_SG['tabela'] = 'usuarios'; // Nome da tabela onde os usuários estão armazenados
if ($_SG['conectaServidor'] == true) {
$_SG['link'] = mysql_connect($_SG['servidor'], $_SG['usuario'],$_SG['senha']) or die("MySQL: Não foi possível conectar-se ao servidor [".$_SG['servidor']."].");
mysql_select_db($_SG['banco'], $_SG['link']) or die("MySQL: Não foi possível conectar-se ao banco de dados [".$_SG['banco']."].");
}
if ($_SG['abreSessao'] == true) {
session_start();
}
function validaUsuario($usuario, $senha) {
global $_SG;
$cS = ($_SG['caseSensitive']) ? 'BINARY' : '';
$nusuario = addslashes($usuario);
$nsenha = addslashes($senha);
$sql = "SELECT `id`, `nome` FROM `".$_SG['tabela']."` WHERE ".$cS." `usuario` = '".$nusuario."' AND ".$cS." `senha` = '".$nsenha."' LIMIT 1";
$query = mysql_query($sql);
$resultado = mysql_fetch_assoc($query);
if (empty($resultado)) {
return false;
}
else {
$_SESSION['usuarioID'] = $resultado['id'];
$_SESSION['usuarioNome'] = $resultado['nome'];
if ($_SG['validaSempre'] == true) {
$_SESSION['usuarioLogin'] = $usuario;
$_SESSION['usuarioSenha'] = $senha;
}
return true;
}
}
function protegePagina() {
global $_SG;
if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) {
expulsaVisitante();
} else if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) {
if ($_SG['validaSempre'] == true) {
if (!validaUsuario($_SESSION['usuarioLogin'], $_SESSION['usuarioSenha'])) {
expulsaVisitante();
}
}
}
}
function expulsaVisitante() {
global $_SG;
unset($_SESSION['usuarioID'], $_SESSION['usuarioNome'],$_SESSION['usuarioLogin'], $_SESSION['usuarioSenha']);
header("Location: ".$_SG['paginaLogin']);
}if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$usuario = (isset($_POST['usuario'])) ? $_POST['usuario'] : '';
$senha = (isset($_POST['senha'])) ? $_POST['senha'] : '';
if (validaUsuario($usuario, $senha) == true) {
header("Location: index.php");
} else {
expulsaVisitante();
}
}
?>
4. Autenticando suas paginas acesso restrito
Agora basta inserir este parâmetro no topo de cada uma das paginas onde o usuário vai poder visualizar depois de logado. E colocar seus serviços dentro delas.
<?
include("processa.php");
protegePagina();
?>
<h2>Usuário</h2>
<input type="text" name="usuario" maxlength="50" />
<h2>Senha</h2>
<input type="password" name="senha" maxlength="50" />
<input type="submit" value="Entrar" />
</form>
2. Criando a Tabela no (MYSQL)
Depois de termos criado o formulário temos que criar uma tabela do MYSQL onde as informações de usuário e senha serão armazenadas. Para criar execute esse código dentro do seu Banco de Dados.
DROP TABLE IF EXISTS `usuarios`;
CREATE TABLE IF NOT EXISTS `usuarios` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`nome` varchar(100) NOT NULL,
`usuario` varchar(50) NOT NULL,
`senha` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `usuario` (`usuario`)
ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
3. Criando uma pagina onde irão ser processados os dados (.processa.php)
Nesta pagina serão incluídas todas configurações. Inclusive as conexões com o banco de dados e as verificações automáticas, para ver se não tem nenhum espertinho tentando bular o sistema.
<?
$_SG['conectaServidor'] = true;
$_SG['abreSessao'] = true;
$_SG['caseSensitive'] = true;
$_SG['validaSempre'] = true;
$_SG['servidor'] = 'localhost';
$_SG['usuario'] = 'root'; // Insira seu usuário do banco de dados
$_SG['senha'] = ''; // Insira a senha do seu Banco de Dados
$_SG['banco'] = 'test'; // Insira o nome do banco de dados
$_SG['paginaLogin'] = 'login.php'; // Insira o local da página de Login
$_SG['tabela'] = 'usuarios'; // Nome da tabela onde os usuários estão armazenados
if ($_SG['conectaServidor'] == true) {
$_SG['link'] = mysql_connect($_SG['servidor'], $_SG['usuario'],$_SG['senha']) or die("MySQL: Não foi possível conectar-se ao servidor [".$_SG['servidor']."].");
mysql_select_db($_SG['banco'], $_SG['link']) or die("MySQL: Não foi possível conectar-se ao banco de dados [".$_SG['banco']."].");
}
if ($_SG['abreSessao'] == true) {
session_start();
}
function validaUsuario($usuario, $senha) {
global $_SG;
$cS = ($_SG['caseSensitive']) ? 'BINARY' : '';
$nusuario = addslashes($usuario);
$nsenha = addslashes($senha);
$sql = "SELECT `id`, `nome` FROM `".$_SG['tabela']."` WHERE ".$cS." `usuario` = '".$nusuario."' AND ".$cS." `senha` = '".$nsenha."' LIMIT 1";
$query = mysql_query($sql);
$resultado = mysql_fetch_assoc($query);
if (empty($resultado)) {
return false;
}
else {
$_SESSION['usuarioID'] = $resultado['id'];
$_SESSION['usuarioNome'] = $resultado['nome'];
if ($_SG['validaSempre'] == true) {
$_SESSION['usuarioLogin'] = $usuario;
$_SESSION['usuarioSenha'] = $senha;
}
return true;
}
}
function protegePagina() {
global $_SG;
if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) {
expulsaVisitante();
} else if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) {
if ($_SG['validaSempre'] == true) {
if (!validaUsuario($_SESSION['usuarioLogin'], $_SESSION['usuarioSenha'])) {
expulsaVisitante();
}
}
}
}
function expulsaVisitante() {
global $_SG;
unset($_SESSION['usuarioID'], $_SESSION['usuarioNome'],$_SESSION['usuarioLogin'], $_SESSION['usuarioSenha']);
header("Location: ".$_SG['paginaLogin']);
}if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$usuario = (isset($_POST['usuario'])) ? $_POST['usuario'] : '';
$senha = (isset($_POST['senha'])) ? $_POST['senha'] : '';
if (validaUsuario($usuario, $senha) == true) {
header("Location: index.php");
} else {
expulsaVisitante();
}
}
?>
4. Autenticando suas paginas acesso restrito
Agora basta inserir este parâmetro no topo de cada uma das paginas onde o usuário vai poder visualizar depois de logado. E colocar seus serviços dentro delas.
<?
include("processa.php");
protegePagina();
?>