Quando os usuários projetam e mantêm sites, muitas vezes precisam restringir o acesso a determinados arquivos ou informações importantes. Normalmente, podemos usar o mecanismo de autenticação do usuário baseado no protocolo HTTP embutido no servidor WEB. Quando um visitante navega em uma página protegida, o navegador do cliente exibirá uma janela de diálogo solicitando que o usuário insira um nome de usuário e uma senha para verificar a identidade do usuário e determinar se ele tem o direito de acessar a página. Dois métodos são usados para ilustrar seu princípio de implementação.
1. Use cabeçalhos HTTP para implementar
cabeçalhos O cabeçalho é uma string enviada pelo servidor antes de transmitir informações HTML ao navegador usando o protocolo HTTP. HTTP usa um modelo de desafio/resposta para autenticar usuários que tentam entrar em áreas protegidas por senha. Especificamente, quando um usuário faz uma solicitação ao servidor WEB para acessar uma área protegida pela primeira vez, o processo de desafio é iniciado e o servidor retorna um cabeçalho 401 especial, indicando que a identidade do usuário não foi verificada. Depois de detectar a resposta acima, o navegador do cliente exibe automaticamente uma caixa de diálogo solicitando que o usuário insira um nome de usuário e uma senha. Depois que o usuário conclui a entrada e clica em OK, suas informações de identificação são enviadas ao servidor para verificação. Se o nome de usuário e a senha inseridos pelo usuário forem válidos, o servidor WEB permitirá ao usuário entrar na área protegida e manter a validade da sua identidade durante todo o processo de acesso. Pelo contrário, se o nome de usuário ou a senha inseridos pelo usuário não puderem ser verificados, o navegador do cliente exibirá continuamente uma janela de entrada solicitando ao usuário que tente inserir as informações corretas novamente. Todo o processo continuará até que o usuário insira o local correto das informações. Você também pode definir o número máximo de tentativas que o usuário pode fazer. Quando excedido, a solicitação de acesso do usuário será automaticamente negada.
No script PHP, use a função header() para enviar diretamente o cabeçalho HTTP ao navegador do cliente, para que a janela de entrada de nome de usuário e senha apareça automaticamente no cliente para implementar nossa função de autenticação de identidade. No PHP, as informações inseridas pelo usuário cliente são salvas automaticamente nas três variáveis globais $PHP_AUTH_USER, $PHP_AUTH_PW e $PHP_AUTH_TYPE após serem transmitidas ao servidor. Usando essas três variáveis, podemos verificar a identidade do usuário com base nas informações da conta do usuário armazenadas no arquivo de dados ou banco de dados.
No entanto, os usuários precisam ser lembrados de que $PHP_AUTH_USER e $PHP_AUTH_PW só podem ser usados em PHP instalado como um módulo. e as três variáveis $PHP_AUTH_TYPE. Se o usuário estiver usando PHP em modo CGI, a função de verificação não poderá ser implementada. O método de instalação do módulo PHP está anexado no final desta seção.
Abaixo utilizamos o banco de dados Mysql para armazenar a identidade do usuário. Precisamos extrair o nome de usuário e a senha de cada conta do banco de dados para comparar com as variáveis $PHP_AUTH_USER e $PHP_AUTH_PW para determinar a autenticidade do usuário.
Primeiro, crie um banco de dados no MySql para armazenar informações do usuário.
O nome do banco de dados é XinXiKu e o nome da tabela é usuário. A definição da tabela é a seguinte:
create table user().
ID INT(4) NÃO NULO AUTO_INCREMENT,
nome VARCHAR(8) NÃO NULO,
senha CHAR(8) NÃO NULO,
CHAVE PRIMÁRIA (ID)
)
Descrição:
1. ID é um número de série, que não é zero e é incrementado automaticamente. É a chave primária
2. name é o nome do usuário e não pode estar vazio
;
a seguir está o arquivo de verificação do usuário login.php
//Determine se o nome de usuário está definido
if(!isset($PHP_AUTH_USER)) {
header("WWW-Authenticate:Basic realm="Função de autenticação"");
header("HTTP/1.0 401 Não autorizado");
echo "Falha na autenticação, você não tem permissão para compartilhar recursos de rede!";
saída();
}
/*Conecta ao banco de dados*/
$db=mysql_connect("localhost","root","");
//Seleciona o banco de dados
mysql_select_db("XinXiKu",$db);
//Verifica se o usuário existe
$resultado=mysql_query("SELECT * FROM usuário onde nome='$PHP_AUTH_USER' e senha='$PHP_AUTH_PW'",$db);
if ($minhalinha = mysql_fetch_row($resultado)) {
//A seguir estão as operações relacionadas após autenticação bem-sucedida
...
} outro {
//A autenticação não foi bem sucedida, solicita ao usuário que digite novamente
header("WWW-Authenticate:Basic realm="Função de autenticação"");
header("HTTP/1.0 401 Não autorizado");
echo "Falha na autenticação, você não tem permissão para compartilhar recursos de rede!";
saída();
}
?>
Descrição do programa:
No programa, primeiro verifique se a variável $PHP_AUTH_USER foi definida. Se não estiver definido, significa que a autenticação é necessária. O script envia um cabeçalho de número de erro HTTP 401 para informar ao navegador do cliente que a autenticação é necessária. O navegador do cliente exibe uma janela de autenticação, solicitando que o usuário insira o nome de usuário e. senha. Após a conclusão da entrada, o banco de dados de conexão, verifique se o nome de usuário e a senha estão corretos, permita o login para realizar as operações relacionadas. Se incorreto, continue solicitando que o usuário insira o nome de usuário e a senha.
Descrição da função:
1. isset(): usado para determinar se uma variável recebeu um valor. Dependendo se o valor da variável existe, retorne verdadeiro ou falso
2. header(): usado para enviar cabeçalhos HTTP específicos. Observe que ao usar a função header(), certifique-se de chamá-la antes de qualquer código HTML ou PHP que produza a saída real.
3. mysql_connect(): Abra a conexão do servidor MySQL.
4. mysql_db_query(): Envie a string de consulta (query) para o banco de dados MySQL.
5. mysql_fetch_row(): Retorna cada campo de uma única coluna.
2. Use a sessão para implementar a verificação do servidor.
Para páginas que requerem autenticação, é melhor usar a verificação do servidor Apache. No entanto, a interface de verificação do servidor Apache não é amigável o suficiente. Além disso, o PHP no modo CGI e o PHP no IIS não podem ser verificados usando o servidor Apache. Desta forma, podemos usar a sessão para salvar a identidade do usuário entre diferentes páginas para realizar a verificação de identidade.
No backend, também usamos o banco de dados Mysql acima para armazenar informações do usuário.
Primeiro escrevemos uma interface de login do usuário, o nome do arquivo é login.php, o código é:
____________________________________________________________
<form action="login1.php">
Nome de usuário:<input type="text" name="name"><br>
Senha :<input type="text" name="pass"><br>
<input type="submit" value="Login">
</form>
______________________________________________________________
login1.php processa o formulário enviado, o código é o seguinte:
$ db=mysql_connect("localhost","root","");
mysql_select_db("XinXiKu",$db);
$resultado=mysql_query("SELECT * FROM usuário onde nome='$nome' e senha='$pass'",$db);
if ($minhalinha = mysql_fetch_row($resultado)) {
// Cadastra usuário
sessão_start();
session_register("usuário");
$usuário=$minhalinha["usuário"];
// Verificação de identidade bem-sucedida, execute operações relacionadas
...
} outro {
echo "Falha na autenticação, você não tem permissão para compartilhar recursos de rede!";
}
?>
Deve-se observar aqui que os usuários podem usar **http://domainname/next.php?user=username** em operações subsequentes para ignorar a autenticação. Portanto, as operações subsequentes devem primeiro verificar se a variável está registrada: se estiver registrada, execute a operação correspondente, caso contrário será considerado login ilegal. O código relevante é o seguinte:
sessão_start();
if (!session_is_registered("usuário")){
echo "Falha na autenticação, login ilegal!";
} outro {
//Faça login com sucesso para realizar operações relacionadas
...
}
?>
Apêndice: Como instalar o PHP em modo módulo
1. Primeiro baixe o arquivo: mod_php4-4.0.1-pl2. [Se o seu não for PHP4, atualize o mais rápido possível!]
Após descompactar, existem três arquivos: mod_php4.dll, mod_php4.conf, readme.txt
2. Copie os arquivos relacionados
mod_php4.dll para o diretório de módulos do
.diretório de instalação do apache.
Copie mod_php4.conf para o diretório conf do diretório de instalação do apache.
Copie o arquivo msvcrt.dll para o diretório de instalação do apache.
3. Abra o arquivo conf/srm.conf e adicione a frase
Incluir conf/mod_php4.conf.
para fazer isso. Antes, remova todas as instruçõesde
configuração sobre o modo CGI em seu httpd.conf, ou seja, a parte semelhante à seguinte!
Aplicativo AddType/x-httpd-php4 .php
Aplicativo AddType/x-httpd-php4 .php3
Aplicativo AddType/x-httpd-php4 .php4
Action application/x-httpd-php4 /php4/php.exe
Se você quiser fazer o PHP suportar mais sufixos, não há problema. O arquivo de configuração mod_php4.conf fornecido já suporta três sufixos: php, php3 e php4. Se quiser suportar mais sufixos, você pode alterar este arquivo.
4.
Use <?phpinfo(); Você verá que o valor da API do servidor é apache, não cgi, e também há informações sobre informações de cabeçalhos HTTP.