Sistema de Login com HTTP AUTH
Antes de tudo, vamos ao código que, vai colocar senha na página:
Agora, vamos as explicações...
Na primeira parte de código, declaramos duas váriaveis ($nome e $senha) que, vão servir de referência para o "programa".
Depois, fazemos um comando IF (Lembrando que, os caracteres || é a mesma coisa que OR, isto é, $PHP_AUTH_USER !=$nome || $PHP_AUTH_PW !=$senha, é a mesma coisa que $PHP_AUTH_USER !=$nome OR $PHP_AUTH_PW !=$senha) para verificar se, as várias estão vazias. Se estiver, ele imprime uma mensagem de erro, caso contrário, ele imprime a sua página.
Esse é um conceito simples (HTTP Authentication) que não precisa de cookies, session ou o que for, e muitas vezes é o suficiente para muitas aplicações. Espero que isso possa ajudar!
<?php // Começo das Configurações $nome = "PHPBrasil"; $senha = "123456"; // Fim das Configurações if ($PHP_AUTH_USER !=$nome || $PHP_AUTH_PW !=$senha) { header("WWW-Authenticate: basic realm='Sistema de Autentificação'"); header("HTTP/1.0 401 Unauthorized"); echo "Nome de Usuário ou Senha Inválidos!\n"; exit; } else { ?> <!-- Aqui vem a sua página --> <!-- Fim da página --> <? } ?>
Agora, vamos as explicações...
Na primeira parte de código, declaramos duas váriaveis ($nome e $senha) que, vão servir de referência para o "programa".
Depois, fazemos um comando IF (Lembrando que, os caracteres || é a mesma coisa que OR, isto é, $PHP_AUTH_USER !=$nome || $PHP_AUTH_PW !=$senha, é a mesma coisa que $PHP_AUTH_USER !=$nome OR $PHP_AUTH_PW !=$senha) para verificar se, as várias estão vazias. Se estiver, ele imprime uma mensagem de erro, caso contrário, ele imprime a sua página.
Esse é um conceito simples (HTTP Authentication) que não precisa de cookies, session ou o que for, e muitas vezes é o suficiente para muitas aplicações. Espero que isso possa ajudar!
Nos código acima. Soh um usuário pode ser autenticado ou todos os usuários tem a mesma senha? Não entendi direito...
06/04/2007 3:56pm
(~17 anos atrás)
Trabalho numa empresa que utiliza intranet. Todos os usuários logan em seu pc utilizando o usuário/senha do NT (da rede). Observei que existem alguns programas na linguagem DELPHI que reconhecem o usuário que está logado no equipamento (diga-se rede) e efetua o logon automaticamente. É possível com PHP identificarmos o usuário desta Rede? E, a partir daí, somente solicitar o nome de usuário/senha se o usuário logado na rede não estiver autorizado a entrar no referido sistema?
02/10/2006 2:38pm
(~17 anos atrás)
Notice: Undefined variable: PHP_AUTH_USER in e:\easyphp1-8\www\php-experiencia\exp\ver.php on line 16
Warning: Cannot modify header information - headers already sent by (output started at e:\easyphp1-8\www\php-experiencia\exp\ver.php:9) in e:\easyphp1-8\www\php-experiencia\exp\ver.php on line 17
Warning: Cannot modify header information - headers already sent by (output started at e:\easyphp1-8\www\php-experiencia\exp\ver.php:9) in e:\easyphp1-8\www\php-experiencia\exp\ver.php on line 18
Nome de Usuário ou Senha Inválidos!
me ta aparecendo isso tudo com o codigo igualzinhu do Heytor... alguem sabe me dizer q tou fazendo errado ?
Warning: Cannot modify header information - headers already sent by (output started at e:\easyphp1-8\www\php-experiencia\exp\ver.php:9) in e:\easyphp1-8\www\php-experiencia\exp\ver.php on line 17
Warning: Cannot modify header information - headers already sent by (output started at e:\easyphp1-8\www\php-experiencia\exp\ver.php:9) in e:\easyphp1-8\www\php-experiencia\exp\ver.php on line 18
Nome de Usuário ou Senha Inválidos!
me ta aparecendo isso tudo com o codigo igualzinhu do Heytor... alguem sabe me dizer q tou fazendo errado ?
21/09/2006 6:47am
(~17 anos atrás)
Gente, estou tentando desenvolver um script utilizando a variável $PHP_AUTH_USER e MySQL. A idéia é buscar usuário e senha no BD. Esta parte já funciona, mas estou com um problema: Gostaria de permitir que o usuário apenas 3 tentativas de login, depois bloquear. Todavia ocorre um problema quando uso algo como $LoginAnterior = $PHP_AUTH_USER. Quando solicito um novo usuário, aparentemente, o conteúdo de $LoginAnterior é automaticamente ajustado. Alguém sabe se, neste caso, é atribuido o ponteiro à variável? Alguém tem uma proposta de solução?
18/02/2004 11:56am
(~20 anos atrás)
if ($PHP_AUTH_USER !=$**** || $PHP_AUTH_PW !=$*****) {
é necessário a utilização dos nomes de variáveis corretamente.
é necessário a utilização dos nomes de variáveis corretamente.
25/11/2003 1:18pm
(~20 anos atrás)
Caro Heytor,
Seu Artigo deu "asas a minha imaginação", aproveitei e integrei sua solução de autenticação com a solução de BD com arquivo TXT do Dionísio (http://www.phpbrasil.com/articles/article.php/id/129). Só que ainda estou tendo problemas... Como sua muuuito iniciante no PHP não estou conseguindo depurar o erro.
A idéia foi a seguinte:
* httpauth.htm - contém um <form> que envia as variáveis ($user, $pw, e $cod) para o httpauth.php
* No mesmo diretório, temos dois arquivos texto nome.txt (com o nome dos usuarios) e pw.txt (com a senha) - é interessante observar que a linha em que se encontra o nome e a senha, deverão ser as mesmas e é a essa linha a qual se refere a variável $cod
* O código da pagina httpauth.php ficou assim:
<?php
// Começo das Configurações
$arqnome = "nome.txt";
$fpnome = fopen($arqnome, "r");
$linhanome = file($arqnome);
$resultnome = $linhanome[$cod];
$arqpw = "pw.txt";
$fppw = fopen($arqpw, "r");
$linhapw = file($arqpw);
$resultpw = $linhapw[$cod];
// Fim das Configurações
if ($user !=$resultnome || $pw !=$resultpw) {
header("WWW-Authenticate: basic realm='Sistema de Autentificação'");
header("HTTP/1.0 401 Unauthorized");
echo "Nome de Usuário ou Senha Inválidos!\n";
exit;
} else {
?>
// PÁGINA A SER EXIBIDA (COD. HTML)
<?
}
?>
//fim do código da página httpauth.php
Bem, apesar dos valores estarem retornando direitinho, eu não estou conseguindo fazer a validação...
Onde eu estou errando?
[ ]'s Andre Rigueira
Seu Artigo deu "asas a minha imaginação", aproveitei e integrei sua solução de autenticação com a solução de BD com arquivo TXT do Dionísio (http://www.phpbrasil.com/articles/article.php/id/129). Só que ainda estou tendo problemas... Como sua muuuito iniciante no PHP não estou conseguindo depurar o erro.
A idéia foi a seguinte:
* httpauth.htm - contém um <form> que envia as variáveis ($user, $pw, e $cod) para o httpauth.php
* No mesmo diretório, temos dois arquivos texto nome.txt (com o nome dos usuarios) e pw.txt (com a senha) - é interessante observar que a linha em que se encontra o nome e a senha, deverão ser as mesmas e é a essa linha a qual se refere a variável $cod
* O código da pagina httpauth.php ficou assim:
<?php
// Começo das Configurações
$arqnome = "nome.txt";
$fpnome = fopen($arqnome, "r");
$linhanome = file($arqnome);
$resultnome = $linhanome[$cod];
$arqpw = "pw.txt";
$fppw = fopen($arqpw, "r");
$linhapw = file($arqpw);
$resultpw = $linhapw[$cod];
// Fim das Configurações
if ($user !=$resultnome || $pw !=$resultpw) {
header("WWW-Authenticate: basic realm='Sistema de Autentificação'");
header("HTTP/1.0 401 Unauthorized");
echo "Nome de Usuário ou Senha Inválidos!\n";
exit;
} else {
?>
// PÁGINA A SER EXIBIDA (COD. HTML)
<?
}
?>
//fim do código da página httpauth.php
Bem, apesar dos valores estarem retornando direitinho, eu não estou conseguindo fazer a validação...
Onde eu estou errando?
[ ]'s Andre Rigueira
04/08/2003 2:25pm
(~21 anos atrás)
É, isso exatamente acontece!! E, no IE, tb tem a opção de lembrar senha que, se vc deixar marcado, vai sempre estar com a senha, mesmo depois que vc fecahr o browser... Isso realmente acontece e, eu não sei como resolver... Por isso mesmo que, estou fazendo um artigo de Como fazer um Sistema de Login Utilizando cookies...
14/05/2002 7:30pm
(~22 anos atrás)
Existe sim... Mas, é um pouco mais dificil...
1º Crie um arquivo com o nome .htaccess
Dentro dele, coloque isso:
AuthName Área Restrita - Acesso somente com password
AuthType Basic
AuthUserFile path/para/o/arquivo/.htpasswd
require valid-user
2º Crie um arquivo com o nome .htpasswd
Dentro dele, coloque:
nome:senha_criptografada
Ele vai funcionar do mesmo jeito que o script que fiz aqui em PHP...
1º Crie um arquivo com o nome .htaccess
Dentro dele, coloque isso:
AuthName Área Restrita - Acesso somente com password
AuthType Basic
AuthUserFile path/para/o/arquivo/.htpasswd
require valid-user
2º Crie um arquivo com o nome .htpasswd
Dentro dele, coloque:
nome:senha_criptografada
Ele vai funcionar do mesmo jeito que o script que fiz aqui em PHP...
27/04/2002 11:56am
(~22 anos atrás)