Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Android aplikacija logovanje

[es] :: Java :: Android aplikacija logovanje

[ Pregleda: 2968 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon Android aplikacija logovanje23.03.2015. u 21:02 - pre 109 meseci
Radim sa firebird bazom, preko drivera pristupam bazi :
izlistao sam podatke iz baze sada zelim da odradim logovanje, moj deo koda je:

Code:

public class Logovanje extends Activity  {
String username,password;
    
    EditText edtKorisnicko,edtPassword,edtText,edtText1;
    Button btn_login;
    Connection konekcija;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        edtKorisnicko=(EditText)findViewById(R.id.et_un);
        edtPassword=(EditText)findViewById(R.id.et_pw);
        btn_login=(Button)findViewById(R.id.btn_login);
        edtText=(EditText)findViewById(R.id.edtText);
        edtText1=(EditText)findViewById(R.id.edtText1);
        konekcija=konekcija();
        
        
        btn_login.setOnClickListener(new OnClickListener() {
            
            
            @Override
            public void onClick(View v)  {
                // TODO Auto-generated method stub
                
                try
                {
                    if(v.getId() == R.id.btn_login){
                        logovanje(username,password);
                        
                Log.e("IZVRSEN UPIT","DA");
                    }else
                    {
                        
                        Log.e("DUGME","PROBLEM");
                    }
                
                }
                catch(Exception e)
                {
                    
                Log.e( "Sta je problem :",e.getMessage());
                }
                
                } 
            });
        
    }
@SuppressLint("NewApi")
@SuppressWarnings("unused")
protected  Connection konekcija() {
        
        // TODO Auto-generated method stub
         StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
         StrictMode.setThreadPolicy(policy);
         Connection konekcija=null;
         String URL=null;
        
        
        try
        {
            
            
            
            Class.forName("org.firebirdsql.jdbc.FBDriver");
            Properties props = new Properties();
            props.setProperty("user", "xxxx"); 
            props.setProperty("password", "xxxx"); 
            props.setProperty("encoding", "UTF8");
            konekcija = DriverManager.getConnection("jdbc:firebirdsql://xxx.xx.xx.xxx:3050/xxx/cccc.FDB", props);
            
            Log.e("Firebird", "Konekcija");
            
            
        }catch(SQLException se)
        {
            
            Log.e("Problem u bazi",se.getMessage());
            
        }    
        catch(ClassNotFoundException cnfe)
        {
            
            Log.e("Ne postoji klasa", cnfe.getMessage());
        }
            
        
        catch(Exception e)
        {
            
        Log.e("Greska",e.getMessage());
            
        }
        
        return konekcija;
        
    }

public boolean logovanje(String username, String password)  {
        // TODO Auto-generated method stub
        String username1="";
        String password1="";
        
        password=username;
        ResultSet reset;
        
        String upit="select * from RM_KALKULACIJE WHERE SIFKOM='"+usename"'  and SIFKOM='"+password+"' ";//u bazi imam samo jedno polje za sifru komercijaliste, zelim d poistovetim da mi i sifra bude ista kao i passowrd
          
        try{
            
            Statement pstmt =konekcija.createStatement();
            
            
            
        reset = pstmt.executeQuery(upit);
        
        //edtKorisnicko.setText("Ulogoavo sam se");
        //int count=0;
        while(reset.next())
       {
            username1=reset.getString("SIFKOM").toString();
            password1=reset.getString("SIFKOM").toString();
            
        if(username1.equals(username)&&password1.equals(password)){
            edtText.setText("Korektno");
            
           }
            
           else{
               edtText1.setText("Nije dobra sifra ili pasword ");
           }
            
        Log.e("Dobro","Super");
    }catch(SQLException se){Log.e("Baza",se.getMessage());}
        catch(Exception e)
        {
        Log.e("Nije dobro",e.getMessage());
        }
        //return false;
        return false;
        
        }


Ovo ne funkcionise molim za pomoc. Znaci kada na formu unesem podatke da ispitujem da li je podatak koji je unet na formu isti kao u bazi da predjem u novu formu, ako ne da javi gresku.
 
Odgovor na temu

nekicneko99
Programer - ucenik
ETS Mihajlo Pupin
Novi Sad Srbija

Član broj: 323579
Poruke: 108
*.dynamic.sbb.rs.



Profil

icon Re: Android aplikacija logovanje27.03.2015. u 21:14 - pre 109 meseci
Nisam nikad radio sa firebird bazom, ali koliko mi se cini problemi su sledeci:

Code:

password = username;

Ne znam sta radi ova linija, ti u String password ubavis String username.

Ako vec filtriras bazu preko query-ja, onda ne moras kada isfiltriras rezultat porediti sa username-om i password-om, ako si ih vec tako filtrirao, vec samo kiliko rezultata ima.
Ja bih to ovako uradio (otprilike)
Code:

String upit="select * from RM_KALKULACIJE WHERE SIFKOM='"+usename"';\
reset = pstmt.executeQuery(upit);
if(rest.lenght > 0) // ne znam da li ovako ide, nisam radio java sa bazom, nije mi trebalo (proveris koliko redova ima)
{
    if(password.equals(reset.getString("SIFKOM").toString()))
    {
        // Ulogovan
    } else
    {
        // Nije ulogovan (pokresan password)
    }
} else
{
     // Nije ulogovan (pogresan username)
}


Mislim da je greska ovde:
Code:

password = username;

probaj to da zakomentarises.

Filtriras dva puta po sifri:
SIFKOM = username and SIFKOM = pasword, ako si zato stavio username = pasword, probaj da obrises to. I ovaj kometrar kod upita bas ne razumem.

Sta ispise kao rezultat?
 
Odgovor na temu

iglig
Igor Iglič
Beograd, Srbija

Član broj: 300685
Poruke: 80



+16 Profil

icon Re: Android aplikacija logovanje02.04.2015. u 18:05 - pre 109 meseci
Naziv ResultSet promenljive "reset" nije najsrećniji, promeni u "reSet", "rsltst" ili nešto drugo što neće imati dvojako značenje.
Obrati pažnju da je ovaj kod potencijalno ranljiv kada je u piftanju SQL injection, promenljivu si nazvao pstmt a koristiš običnu Statement klasu. Bez salt-a i uz alat poput WireShark-a potpuno je trivijalno dobiti celu tabelu.
Kad proradi upit prouči PreparedStatement klasu, iz baze traži samo neophodne kolone (sigurnost i brže izvršavanje) i načine na koje ćes očistiti korisnički unos od potencijalno zlonamernog koda.
 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: Android aplikacija logovanje06.04.2015. u 08:33 - pre 109 meseci
Kod koji funkcionise, meni je u bazi SIFRA_RUCNI_TERMINAL jedno polje to je jedna vrednost, npr.850, ja sam postavio po zahtevu korisnika da mi ta vrednost bude i username i password..Izvinite sto ranije nisam odgovorio.

Code:

public boolean logovanje() {
        // TODO Auto-generated method stub
        
        
        ResultSet reSet;

        String upit = "select SIFRA_RUCNI_TERMINAL  from GL_KOMERCIJALISTI where SIFRA_RUCNI_TERMINAL = ? and SIFRA_RUCNI_TERMINAL ? ";

        try {

            PreparedStatement pstmt = konekcija.prepareStatement(upit);
            pstmt.setString(1, edtKorisnicko.getText().toString());
            pstmt.setString(2, edtPassword.getText().toString());

            reSet = pstmt.executeQuery();
            
             

            int count = 0;

            while (reSet.next()) {

                count = count + 1;
            }

            if (count == 1) {
                Intent nasIntent = new Intent(Logovanje.this,
                        MainActivity.class);
                startActivity(nasIntent);
                edtText.setText("Korektno");

            } else if (count > 1) {
            
                edtKorisnicko.setText("Postoji isto korisnicko ime ili password.");


            } else {
                
                edtKorisnicko.setText("Nisu ispravni sifra ili password!!");

            }

            Log.e("Dobro", "dobro je");
        } catch (SQLException se) {
            Log.e("Baza", se.getMessage());
        }

        catch (Exception e) {
            Log.e("Nije dobro", e.getMessage());
        }
        return false;
    

    }
    
 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: Android aplikacija logovanje06.04.2015. u 09:13 - pre 109 meseci
Deo koji sledeci radim je korisnik na pocetku kada instalira aplikaciju samo na pocetku treba da upise neku vrednost koja je unapred definisana (npr. dplca) za

sve korisnike, za username i password, pri svakom narednom logovanju svako ce koristiti svoj username i password. Ja pokusavam sada da definisem

u jednom txt file da upisem vrednost 0, kada korinik upise na pocetku dplca, u txt file ce se upisati 1 i nikada vise nece biti potrebno da korisnik upisuje tu

probnu sifru za username i pass ( dplca ) .

Deo koda:

Code:

    btn_login.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                try {

                    if (v.getId() == R.id.btn_login) {
                        provera();
                        edtKorisnicko.setText("");
                        edtPassword.setText("");
                        logovanje();

                        Log.e("IZVRSEN UPIT", "DA");
                    }

                    else {

                        Log.e("DUGME", "PROBLEM");
                    }

                } catch (Exception e) {

                    Log.e("Sta je problem :", e.getMessage());
                }

            }

            private void provera() {
                // TODO Auto-generated method stub
                Scanner scan = null;
                try {
                    scan = new Scanner(new File("provera.txt"));
                    
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                int x = 0;
            while(scan.hasNextInt()){
                 x = scan.nextInt();
                
                
            }
            if(x==0){
                
                
                try {
                    
                    if(edtKorisnicko.getText().equals("dplca") && edtPassword.getText().equals("dplca")){
                    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("provera.txt",true)));
                    out.append("\n");
                    out.append("1");
                
                    out.close();
                    
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }        
            }
                
                
                
            }
        });

    }



Na pocetku je pozvana metoda logovanje(), kod te metoda je u prethodnoj poruci koju sam postavio. Kada na pocetku upisem dplca, idem na

login ako su upisana vrednost dobra (dplca), postaviti edit polja za username i password da budu prazna polja gde cu moci da upisime moj username i

password za svakog korinika ponaosob.

Znaci ako u txt file ne postoji vrednost 1 korisnik prvo mora upisati probnu sifru, ako postoji moze da se loguje sa svojom sifrom i password, ako moze

ovde mala pomoc.




 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: Android aplikacija logovanje06.04.2015. u 12:41 - pre 109 meseci
Dobijam sledecu poruku o gresci :

04-06 11:22:44.919: E/Sta je problem :(1901): Attempt to invoke virtual method 'boolean java.util.Scanner.hasNext()' on a null object reference.


 
Odgovor na temu

[es] :: Java :: Android aplikacija logovanje

[ Pregleda: 2968 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.