Skip to content

Instantly share code, notes, and snippets.

@gabcarvalhogama
Last active December 22, 2023 19:58
Show Gist options
  • Star 12 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gabcarvalhogama/f5f94c2cef8b9cba9a90 to your computer and use it in GitHub Desktop.
Save gabcarvalhogama/f5f94c2cef8b9cba9a90 to your computer and use it in GitHub Desktop.
Como criar um sistema de Login em PHP(Sem MySQL)
<!DOCTYPE html>
<html lang="pt-br">
<head>
<title>Sistema de Login :: Toolmmer</title>
<meta charset="UTF-8" />
<!-- Estilos da Index.php -->
<style type="text/css">
body{
background: linear-gradient(45deg, #f0f9ff 10%, #cbebff 47%, #a1dbff 100%);
}
div.global{
width: 40%;
height: auto;
background-color: #fff;
border: 1px solid #606060;
padding: 50px;
box-shadow: 0px 0px 10px #000;
margin-top: 10%;
/* Centralizando a div
*O atributo text-align foi depreciado.
*/
margin-left: auto;
margin-right: auto;
}
input[type='text'], input[type='password']{
width: 300px;
height: 25px;
border: solid 1px #606060;
border-radius: 5px;
}
input[type='password']{
margin-left: 10px;
}
input[type='submit']{
width: 150px;
}
</style>
</head>
<body>
<div class="global">
<!-- Aqui temos o formulário
*Action é vazia por que vamos fazer a validação e o redirecionamento nesta mesma página.
-->
<form name="" method="post" action="">
<label>Usuário: <input type="text" name="user" /></label><br /><br />
<label>Senha: <input type="password" name="pass" /></label><br /><br />
<input type="submit" name="submit" value="Logar!" />
</form>
<?php
/* Declaração de Variáveis */
$user = @$_REQUEST['user'];
$pass = @$_REQUEST['pass'];
$submit = @$_REQUEST['submit'];
/* Declaração das variáveis que possuem os usuarios e as senhas */
$user1 = 'toolmmer';
$pass1 = 'a1b24d';
$user2 = 'gabrielsooco';
$pass2 = 'b3gabriel';
/* Testa se o botão submit foi ativado */
if($submit){
/* Se o campo usuário ou senha estiverem vazios geramos um alerta */
if($user == "" || $pass == ""){
echo "<script:alert('Por favor, preencha todos os campos!');</script>";
}
/* Caso o campo usuario e senha não
*estejam vazios vamos testar se o usuário e a senha batem
*iniciamos uma sessão e redirecionamos o usuário para o painel */
else{
if(($user == $user1 && $pass == $pass1) || ($user == $user2 && $pass == $pass2)){
session_start();
$_SESSION['usuario']=$user;
$_SESSION['senha']=$pass;
header("Location: painel.php");
}
/* Se o usuario ou a senha não batem alertamos o usuario */
else{
echo "<script>alert('Usuário e/ou senha inválido(s), Tente novamente!');</script>";
}
}
}
?>
</div>
</body>
</html>
@EduApps-CDG
Copy link

Obrigado!

@jprzimba
Copy link

e como protege a pagina apos o login? se digitar endereço entra direto rsrs

@danielalvesti
Copy link

e como protege a pagina apos o login? se digitar endereço entra direto rsrs

Considerando a proposta simples, acredito que resolva incluindo o código, nas paginas que deseja proteger.

@rxhxtx
Copy link

rxhxtx commented Aug 16, 2020

e como protege a pagina apos o login? se digitar endereço entra direto rsrs

basta colocar isso em cada página que irá ser protegida:

<?php @session_start(); if(!isset($_SESSION['usuario'])){header("Location: index.php"); exit();}?>

explicando:
session_start(); = para trabalhar com as sessions
if(!isset($_SESSION['usuario'])){ = Verifica se existe uma session 'usuario' criada.. o ! é para verificar "ao contrario", se NÃO foi setada....
header = direciona para a pagina index, ou onde estará o login
exit = para garantir que nao sera executado mais nada caso a session nao tenha sido criada

traduzindo para a lingua "humana":
trabalhe com seções;
se(if) nao(!) existir(isset) uma $_session chamada 'usuario'{
redirecione(header) para (location) a página 'index.php';
para de executar tudo (exit)
}

abraço

@eawewqaea
Copy link

@DeGondim
Copy link

DeGondim commented Dec 9, 2021

Desculpa a pergunta, sou novo!
Feito esse processo, ao fazer login, gostaria que caísse na pagina desejada, onde adiciono o link da pagina?
Quando faço login, com a senha e usuário correto aparece:

Not Found
The requested URL was not found on this server.

@rxhxtx
Copy link

rxhxtx commented Dec 10, 2021

Oi amigo, nessa parte
header("Location: painel.php");

Substitui o painel.php pela página que vc quer q redirecione e protege ela conforme falei ali em cima...

Mas vc precisa se atentar que este exemplo não é nada profissional, é só pra alguma coisinha simples que só vc e mais poucas pessoas tenham acesso, pois não existe segurança e não tem como adicionar novos usuários.

No YouTube tem um tutorial bem legal de login com MySQL de bem fácil entendimento... Procure como "Curso cadastro login PHP MySQL"... Se não me falha a memória é do webdesign em foco... Vale a pena, vc faz algo bem mais profissional e funcional

@rx1983
Copy link

rx1983 commented Mar 27, 2023

ta blz, tudo certo, só que eu queria que a senha e o login nao ficasse dentro da pagina, ficasse separado, pq vou ter que colocar 50 logins.. e de uma maneira protegida, assim dentro do php fica protegido ?

@rxhxtx
Copy link

rxhxtx commented Apr 7, 2023

ta blz, tudo certo, só que eu queria que a senha e o login nao ficasse dentro da pagina, ficasse separado, pq vou ter que colocar 50 logins.. e de uma maneira protegida, assim dentro do php fica protegido ?

Bom dia amigo, eu não recomendo por 3 motivos:
1 - praticidade: é totalmente não funcional vc colocar todos os logins e senhas dentro do seu arquivo php, ja imaginou vc repetir isso 50 vezes if(($user == $user1 && $pass == $pass1) || ($user == $user2 && $pass == $pass2)){
2- segurança: se vc nao filtrar/sanatizar o campo que vem do input direito, fica muito facil para expor todo o seu código para um invasor, alem das senhas armazenadas.
3- como vc vai genrenciar as senhas dos usuarios? não etm como inserindo elas no código.

o problema é não conseguir mexer com o mysql?
se for esse o problema, é bem facil de resolver, tem uns exemplos funcionais bem bons de como vc acessar banco de dados e a parte da segurança é basicamente a mesma que você terá que se preocupar.

PROCURE COMO "CRUD PDO"

vou te passar um passo a passo que seguindo ele e com 2 minutos de google em cada etapa, vc vai tirar de letra:

  1. formulario.html -> você faz um formulário, normal, igual vc ta fazendo.
    use o required em cada campo e voce já tera o passo 1 das verificações.
  2. valida.php -> para onde o seu formulário vai mandar via POST as informações
    nesse arquivo voce vai iniciar colocando if(isset($_POST)), para ninguem acessar diretamente via url
    depois vc coloca em cada campo um if(isset)
    se todos estiverem preenchidos, voce faz uma verificação de caracteres maliciosos

ou voce ja pode fazer da seguinte maneira:
if (isset($_POST['name'])) {
$nome = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
} else {
$nome = null;
}
if (isset($_POST['email'])) {
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
} else {
$email = null;
}
assim por diante...

depois voce coloca if($email != null && $nome != null) com isso voce ja garante que todos os campos foram preenchidos e ja faz um filtro neles
ou vc pode colocar $erro=0 e em cada erro vc coloca $erro = $erro+1; e entao vc comeca com if($erro ==0).
3)se tudo tiver ok, voce comeca a conectar o seu DB... recomendo usar o PDO pq é mais facil de entender, tem mais literatura e faz maios sentido visualmente
4) apos a conexao vc insere/verifica(select) os dados no seu DB e cria as sessions ou retorna uma msg de cadastro
nao esqueça de usar hash de senha para as senhas dos seus usuarios, tem muito exemplo basico de como fazer de forma eficiente e segura
leve em conta que esse exemplo do amigo ai serve para vc fazer coisas jogo rapido sem deixar tudo aberto, mas nao serve para interagir com clientes, usuario etc.. so pra fechar de curioso rapidão antes de voce continuar oq ta fazendo.... ou sei la pra que, mas nao use com clintes ou usuarios

veja esse exemplo do devmedia
https://www.devmedia.com.br/crud-com-php-pdo/28873

@rx1983
Copy link

rx1983 commented Apr 9, 2023

ta blz, tudo certo, só que eu queria que a senha e o login nao ficasse dentro da pagina, ficasse separado, pq vou ter que colocar 50 logins.. e de uma maneira protegida, assim dentro do php fica protegido ?

Bom dia amigo, eu não recomendo por 3 motivos: 1 - praticidade: é totalmente não funcional vc colocar todos os logins e senhas dentro do seu arquivo php, ja imaginou vc repetir isso 50 vezes if(($user == $user1 && $pass == $pass1) || ($user == $user2 && $pass == $pass2)){ 2- segurança: se vc nao filtrar/sanatizar o campo que vem do input direito, fica muito facil para expor todo o seu código para um invasor, alem das senhas armazenadas. 3- como vc vai genrenciar as senhas dos usuarios? não etm como inserindo elas no código.

o problema é não conseguir mexer com o mysql? se for esse o problema, é bem facil de resolver, tem uns exemplos funcionais bem bons de como vc acessar banco de dados e a parte da segurança é basicamente a mesma que você terá que se preocupar.

PROCURE COMO "CRUD PDO"

vou te passar um passo a passo que seguindo ele e com 2 minutos de google em cada etapa, vc vai tirar de letra:

1. formulario.html -> você faz um formulário, normal, igual vc ta fazendo.
   use o required em cada campo e voce já tera o passo 1 das verificações.

2. valida.php -> para onde o seu formulário vai mandar via POST as informações
   nesse arquivo voce vai iniciar colocando if(isset($_POST)), para ninguem acessar diretamente via url
   depois vc coloca em cada campo um if(isset)
   se todos estiverem preenchidos, voce faz uma verificação de caracteres maliciosos

ou voce ja pode fazer da seguinte maneira: if (isset($_POST['name'])) { $nome = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_FULL_SPECIAL_CHARS); } else { $nome = null; } if (isset($_POST['email'])) { $email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); } else { $email = null; } assim por diante...

depois voce coloca if($email != null && $nome != null) com isso voce ja garante que todos os campos foram preenchidos e ja faz um filtro neles ou vc pode colocar $erro=0 e em cada erro vc coloca $erro = $erro+1; e entao vc comeca com if($erro ==0). 3)se tudo tiver ok, voce comeca a conectar o seu DB... recomendo usar o PDO pq é mais facil de entender, tem mais literatura e faz maios sentido visualmente 4) apos a conexao vc insere/verifica(select) os dados no seu DB e cria as sessions ou retorna uma msg de cadastro nao esqueça de usar hash de senha para as senhas dos seus usuarios, tem muito exemplo basico de como fazer de forma eficiente e segura leve em conta que esse exemplo do amigo ai serve para vc fazer coisas jogo rapido sem deixar tudo aberto, mas nao serve para interagir com clientes, usuario etc.. so pra fechar de curioso rapidão antes de voce continuar oq ta fazendo.... ou sei la pra que, mas nao use com clintes ou usuarios

veja esse exemplo do devmedia https://www.devmedia.com.br/crud-com-php-pdo/28873

bom dia amigo, agradeço a sua resposta, mas realmente nao é essa a solução que eu estava procurando, ate porque o que voce disse ai a internet esta cheio de soluções iguais a essa, consegui ontem, é só colocar o login e senha dentro de um array, da não precisa fazer mts comparações, basta a função de procurar, mt simples, não faz sentido BANCO DE DADOS e muito menos as complicações de PDO, como o sistema é pequeno é bem melhor usar array, tive que pesquisar em ingles, pq as pagina em portugues não tem o que eu quero..

https://code-boxx.com/simple-php-login-without-database/

é só usar o que esta neste link, o mais dificil vai ser lidar com o array, tipo montar desmontar, montar outro organizado em cima de um antigo, mas como disse consegui ontem, filtrar, pesquisar, apagar vazios, e etc... mas nada como um estudo e paciencia voce vai em frente, essa ideia em que se ensina e se diz que tudo deve ser feita com banco de dados nao procede... ate conseguiria fazer, agora a orientação a objeto ainda nao entrei nessa area, que pra mim tb só serve pra complicar

@rxhxtx
Copy link

rxhxtx commented Apr 9, 2023

Fala ami

ta blz, tudo certo, só que eu queria que a senha e o login nao ficasse dentro da pagina, ficasse separado, pq vou ter que colocar 50 logins.. e de uma maneira protegida, assim dentro do php fica protegido ?

Bom dia amigo, eu não recomendo por 3 motivos: 1 - praticidade: é totalmente não funcional vc colocar todos os logins e senhas dentro do seu arquivo php, ja imaginou vc repetir isso 50 vezes if(($user == $user1 && $pass == $pass1) || ($user == $user2 && $pass == $pass2)){ 2- segurança: se vc nao filtrar/sanatizar o campo que vem do input direito, fica muito facil para expor todo o seu código para um invasor, alem das senhas armazenadas. 3- como vc vai genrenciar as senhas dos usuarios? não etm como inserindo elas no código.
o problema é não conseguir mexer com o mysql? se for esse o problema, é bem facil de resolver, tem uns exemplos funcionais bem bons de como vc acessar banco de dados e a parte da segurança é basicamente a mesma que você terá que se preocupar.
PROCURE COMO "CRUD PDO"
vou te passar um passo a passo que seguindo ele e com 2 minutos de google em cada etapa, vc vai tirar de letra:

1. formulario.html -> você faz um formulário, normal, igual vc ta fazendo.
   use o required em cada campo e voce já tera o passo 1 das verificações.

2. valida.php -> para onde o seu formulário vai mandar via POST as informações
   nesse arquivo voce vai iniciar colocando if(isset($_POST)), para ninguem acessar diretamente via url
   depois vc coloca em cada campo um if(isset)
   se todos estiverem preenchidos, voce faz uma verificação de caracteres maliciosos

ou voce ja pode fazer da seguinte maneira: if (isset($_POST['name'])) { $nome = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_FULL_SPECIAL_CHARS); } else { $nome = null; } if (isset($_POST['email'])) { $email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); } else { $email = null; } assim por diante...
depois voce coloca if($email != null && $nome != null) com isso voce ja garante que todos os campos foram preenchidos e ja faz um filtro neles ou vc pode colocar $erro=0 e em cada erro vc coloca $erro = $erro+1; e entao vc comeca com if($erro ==0). 3)se tudo tiver ok, voce comeca a conectar o seu DB... recomendo usar o PDO pq é mais facil de entender, tem mais literatura e faz maios sentido visualmente 4) apos a conexao vc insere/verifica(select) os dados no seu DB e cria as sessions ou retorna uma msg de cadastro nao esqueça de usar hash de senha para as senhas dos seus usuarios, tem muito exemplo basico de como fazer de forma eficiente e segura leve em conta que esse exemplo do amigo ai serve para vc fazer coisas jogo rapido sem deixar tudo aberto, mas nao serve para interagir com clientes, usuario etc.. so pra fechar de curioso rapidão antes de voce continuar oq ta fazendo.... ou sei la pra que, mas nao use com clintes ou usuarios
veja esse exemplo do devmedia https://www.devmedia.com.br/crud-com-php-pdo/28873

bom dia amigo, agradeço a sua resposta, mas realmente nao é essa a solução que eu estava procurando, ate porque o que voce disse ai a internet esta cheio de soluções iguais a essa, consegui ontem, é só colocar o login e senha dentro de um array, da não precisa fazer mts comparações, basta a função de procurar, mt simples, não faz sentido BANCO DE DADOS e muito menos as complicações de PDO, como o sistema é pequeno é bem melhor usar array, tive que pesquisar em ingles, pq as pagina em portugues não tem o que eu quero..

https://code-boxx.com/simple-php-login-without-database/

é só usar o que esta neste link, o mais dificil vai ser lidar com o array, tipo montar desmontar, montar outro organizado em cima de um antigo, mas como disse consegui ontem, filtrar, pesquisar, apagar vazios, e etc... mas nada como um estudo e paciencia voce vai em frente, essa ideia em que se ensina e se diz que tudo deve ser feita com banco de dados nao procede... ate conseguiria fazer, agora a orientação a objeto ainda nao entrei nessa area, que pra mim tb só serve pra complicar

Fala amigo, pena não ter ajudado, se surgir alguma dúvida que não encontrar sobre trabalhar com as arrays, pode mandar que, se eu souber, ficarei feliz em ajudar. Abraço

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment