Boa noite galera.
Sempre que eu mando o usuário e a senha, o que imprime na tela é "Login ou senha invalidos".
Mas pelo que eu vejo está tudo certinho, pelo menos o usuario, senha e a tabela do mysql está tudo certo.
E aproveitando o tópico, como eu faço para colocar mais segurança contra SQL Injection?
Eu dei uma lida em um artigo sobre PreparedStatement mas não entendi nada.
<%@page import="login.Autenticar"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title> Page</title>
</head>
<body>
<%
Autenticar us = new Autenticar();
String login = request.getParameter("login");
String senha = request.getParameter("senha");
boolean status = us.verificarUsuario(login,senha);
if(us.result == true)
out.println("Login feito com sucesso " + us.nome);
else
out.println("Login ou senha invalidos");
%>
</body>
</html>
package login;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Autenticar {
public Connection conectarBD()
{
Connection conn = null;
try
{
Class.forName("com.mysql.Driver.Manager").newInstance();
String url = "jdbc:mysql:127.0.0.1/test?user=root&password=secreto";
conn = DriverManager.getConnection(url);
} catch (Exception e){}
return conn;}
public String nome="";
public boolean result = false;
public boolean verificarUsuario(String login, String senha)
{
String sql = "";
Connection conn = conectarBD();
//Instrução SQL
sql += "select nome, login, senha from clientes ";
sql += "where login = " + "'" + login + "';";
try{
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
if(rs.next())
{
result = true;
nome = rs.getString("nome");
}
}
catch (Exception e){}
return result;
}
}