Programação  
 
Rede de conhecimento computador >> Programação >> Programação PHP /MySQL >> Content
Como você verifica os dados fornecidos pelo usuário com valores de banco de dados usando o PHP do banco de dados MySQL?
Existem várias maneiras de verificar se os dados fornecidos pelo usuário correspondem aos dados em um banco de dados MySQL usando o PHP. A melhor abordagem depende do que você está comparando e de como deseja lidar com possíveis discrepâncias. Aqui estão alguns exemplos, concentrando -se nas melhores práticas de segurança:

1. Verificando para um único usuário (por exemplo, login):

Este é o cenário mais comum. Vamos verificar se um nome de usuário e senha correspondem a um registro no banco de dados. crucialmente, veremos a senha antes de compará -la. Nunca armazene as senhas em texto simples!

`` `php

// Credenciais de banco de dados (substitua -os por suas credenciais reais!)
$ servername ="your_servername";
$ userName ="your_username";
$ senha ="your_password";
$ dbname ="your_dbname";

// Entrada do usuário (higienize isso!)
$ userNameInput =$ _Post ["nome de usuário"];
$ PasswordInput =$ _Post ["senha"];


// higienizar as entradas do usuário para impedir a injeção de SQL
$ userNameInput =mysqli_real_escape_string ($ conn, $ userNameInput);
$ PasswordInput =mysqli_real_escape_string ($ Conn, $ PasswordInput);


// Crie conexão
$ conn =new mysqli ($ servername, $ nome de usuário, $ senha, $ dbname);

// Verifique a conexão
if ($ conn-> Connect_error) {
Die ("Falha na conexão:". $ Conn-> Connect_error);
}

// preparar e vincular
$ stmt =$ conn-> preparar ("selecione senha_hash dos usuários onde o nome de usuário =?");
$ stmt-> bind_param ("s", $ userNameInput);
$ stmt-> Execute ();
$ resultado =$ stmt-> get_result ();

if ($ resultado-> num_rows> 0) {
$ row =$ resultado-> fetch_assoc ();
$ hashedPassword =$ row ["senha_hash"];

// Verifique se a senha usando a Password_Verify (função de hash de senha integrada do PHP)
if (senha_verify ($ senhaInput, $ hashedpassword)) {
// Login bem -sucedido
eco "Login bem -sucedido!";
} outro {
// Senha incorreta
eco "senha incorreta";
}
} outro {
// nome de usuário não encontrado
eco "nome de usuário não encontrado";
}

$ stmt-> close ();
$ conn-> close ();

?>
`` `

Explicação:

* Credenciais de banco de dados: Substitua as credenciais de espaço reservado pelos seus detalhes reais do banco de dados MySQL.
* Entrada do usuário: Este código assume que o nome de usuário e a senha são enviados por meio de uma solicitação de postagem. Sempre higienize a entrada do usuário Para evitar vulnerabilidades de injeção de SQL. `mysqli_real_escape_string ()` é uma etapa básica, mas declarações preparadas (usadas aqui) são muito mais robustas.
* Declaração preparada: Uma instrução preparada impede a injeção de SQL separando a consulta SQL dos dados fornecidos pelo usuário. É crucial para a segurança.
* Hash de senha: O banco de dados deve armazenar senha *Hashes *, não senhas de texto simples. `Password_hash ()` Cria um hash seguro e `senha_verify ()` compara a entrada do usuário com o hash armazenado.
* Manuseio de erro: O código inclui manuseio básico de erro para conexão com o banco de dados e falhas de consulta.

2. Verificação de várias correspondências (por exemplo, pesquisando uma tabela):

Se você precisar encontrar várias correspondências com base na entrada do usuário (como procurar produtos com um nome específico), você precisará adaptar a consulta:

`` `php
// ... (conexão do banco de dados como acima) ...

$ search term =$ _post ["Search term"];
$ search term =mysqli_real_escape_string ($ conn, $ search term); // Sanitize!

$ sql ="Selecione * de produtos onde o nome como '%$ search term%'"; // Exemplo simples - use uma instrução preparada para melhor segurança!
$ resultado =$ Conn-> Query ($ sql);

if ($ resultado-> num_rows> 0) {
while ($ row =$ result-> fetch_assoc ()) {
// Processar cada linha correspondente
eco "Produto:". $ row ["nome"]. "
";
}
} outro {
eco "nenhum produto encontrado".;
}

// ... (conexão próxima) ...
?>
`` `

Nota importante: O exemplo de pesquisa acima usa concatenação de string, que é vulnerável à injeção de SQL se `$ searchtern` não estiver higienizado . Para uma solução segura, reescreva -a usando declarações preparadas. Exemplo:

`` `php
$ stmt =$ conn-> preparar ("selecione * de produtos onde o nome?");
$ search term ="%". $ search term. "%"; // Adicionar curingas para curtir
$ stmt-> bind_param ("s", $ search termin);
$ stmt-> Execute ();
// ... restante do código para lidar com os resultados ...
`` `


Lembre -se de substituir os nomes da tabela e colunas do espaço reservado pelo seu esquema real de banco de dados. Sempre priorize a segurança usando declarações preparadas e adequada para a higienização de entrada para evitar ataques de injeção de SQL. Considere o uso de consultas parametrizadas para qualquer interação com a entrada do usuário e seu banco de dados. Para cenários mais complexos ou conjuntos de dados grandes, convém explorar técnicas mais avançadas, como procedimentos armazenados.

Anterior :

Próximo :
  Os artigos relacionados
·MySQL ConnectorJ Tutorial 
·Como acessar MySQL De PHP 
·Como consultar MySQL Content Length 
·Como criar uma página com phpgacl 
·Como dividir e retornar um número inteiro Utilizando P…
·Como código PHP e MySQL escolher o Estado 
·Como incluir um arquivo não- PHP 
·Como converter a Epoch Tempo em PHP e MySQL 
·Como obter um arquivo CSV no MySQL 
·Como extrair os links em uma página e colocar o result…
  Artigos em destaque
·Posso colocar várias âncoras em HTML 
·Como configurar implantação para VBS Dados ação per…
·O que é um tipo de programação e como isso afeta o p…
·Como abrir um PDF em C # 
·Como adicionar botões a um Applet Java 
·Por que você não deve usar PHP curto Tags 
·Como Entrar para Perl Com Perforce 
·Como criar uma tabela usando PHP 
·Como executar um pacote DTS com uma página da web 
·Como excluir uma linha em um Flexgrid Visual Basic 
Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados