Jump to content



Διάφορα περί Java - Need your helps guys!


Recommended Posts

Καλησπέρα σε όλους, έχω διάφορες ερωτήσεις σχετικά με τη Java που χρειάζομαι βοήθεια.

Θα αρχίσω σταδιακά για αρχή για να μην τα βάλω όλα μαζί και χάσουμε τη μπάλα.

 

Έχω μια βάση δεδομένων στην οποία έχω ένα table users. Αυτό εμπεριέχει όλους τους χρήστες όπως καταλαβαίνεται. 

Έπειτα έχω ένα Java πρόγραμμα και θέλω να κάνω loggin και για αρχή να ελέγχει τα στοιχεία της βάσης. Ως εδώ καλά.

 

Έστω ότι μου δίνει σωστά στοιχεία, πως μπορώ εγώ και με ποιο τρόπο να τα κρατήσω κάπου ώστε να τα χρησιμοποιήσω στη συνέχεια;

Να δω ότι όντως έχει κάνει είσοδο, να φτιάξω ένα logout, να τα περάσω σε άλλο πεδία κλπ.

 

Ευχαριστώ!

    private void jLogginActionPerformed(java.awt.event.ActionEvent evt) {                                        

        Connection connection;
        PreparedStatement ps;
        try {
            connection = DriverManager.getConnection("jdbc:mysql://localhost/eshop", "root", "");
            ps = connection.prepareStatement("SELECT `Username`, `Password` FROM `customers` WHERE `Username` = ? AND `Password` = ?");
            ps.setString(1, jTextFieldUsername.getText());
            ps.setString(2, String.valueOf(jPasswordField.getPassword()));
            ResultSet result = ps.executeQuery();
            if(result.next()){
                JOptionPane.showMessageDialog(jPanel1, "Login Successesfully");
            }
            else{
        JOptionPane.showMessageDialog(jPanel1,"Invalide Username Or Password", "ERROR", JOptionPane.ERROR_MESSAGE);
            }
        } catch (SQLException ex) {
            Logger.getLogger(Java_Form_Login.class.getName()).log(Level.SEVERE, null, ex);
        }                
    }       

PS: Γνωρίζω ελάχιστα περί Java, οπότε με το λάου - λάου :p

 

 

Link to comment
Share on other sites

1. ΠΟΤΕ δεν κρατάμε κάπου το password του χρήστη. Χρησιμοποιείς κάποιο authentication token για να επαληθεύεις τον χρήστη αν θέλεις να βάλεις "Remember me".

2. Αν θέλεις προσωρινό login, δηλαδή μέχρι να κλείσει τον browser, τότε αποθηκεύεις τα στοιχεία που χρειάζεσαι σε κάποιο Session.

3. Αν θέλεις δυνατότητα αυτόματου login ("Remember me"), τότε τα βάζεις σε Cookie. ΕΙΔΙΚΑ αν χρησιμοποιήσεις cookie, ποτέ μα ποτέ δεν αποθηκεύεις εκεί password γιατί γράφεται χύμα σε text αρχείο στο δίσκο του.

Link to comment
Share on other sites

πριν 2 ώρες, το μέλος Wizard! έγραψε:

1. ΠΟΤΕ δεν κρατάμε κάπου το password του χρήστη. Χρησιμοποιείς κάποιο authentication token για να επαληθεύεις τον χρήστη αν θέλεις να βάλεις "Remember me".

2. Αν θέλεις προσωρινό login, δηλαδή μέχρι να κλείσει τον browser, τότε αποθηκεύεις τα στοιχεία που χρειάζεσαι σε κάποιο Session.

3. Αν θέλεις δυνατότητα αυτόματου login ("Remember me"), τότε τα βάζεις σε Cookie. ΕΙΔΙΚΑ αν χρησιμοποιήσεις cookie, ποτέ μα ποτέ δεν αποθηκεύεις εκεί password γιατί γράφεται χύμα σε text αρχείο στο δίσκο του.

Για Java μιλάμε εεε; Γιατί έτσι όπως το διάβασα τα πέρασα για PHP / SQL :p

 

Προφανώς με ενδιαφέρει η ασφάλεια, γι αυτό και ο τόσο απλοϊκός παραπάνω τρόπος.

Link to comment
Share on other sites

πριν 33 λεπτά, το μέλος Wizard! έγραψε:

Όχι, δε μιλάω για Java, μιλάω για γενικές αρχές web software. Δεν έχω ιδέα από Java, αλλά αυτά παίζουν σε όελς τις γλώσσες :)

Ναι, τα ξέρω αυτά. Σε Java πως γίνεται η υλοποίηση είναι το θέμα.

Link to comment
Share on other sites

Για τις εντολές, θα τις βρεις στο επίσημο site.

Για τη μεθοδολογία τώρα, ουσιαστικά υπάρχουν δύο τρόποι:

 

1. Έχεις έναν πίνακα στη βάση σου με τους Online Users. Όταν ο χρήστης κάνει login, γράφεις τα στοιχεία που θέλεις, έτσι δεν έχει κανείς πρόσβαση, και του δίνεις ένα ID, OXI αριθμητικό, καλύτερα τυχαίο ή GUID, με το οποίο επικοινωνείς. Αυτό το γράφεις στο Session ή σε Cookie και το ζητάς σε κάθε κλήση. Ανάλογα με την υλοποίηση, καθαρίζεις και τον πίνακα όποτε χρειαστεί.

 

2. Φτιάχνεις έναν δικό σου αλγόριθμο όπου βάζεις τα στοιχεία του χρήστη που χρειάζεσαι σε ένα string, προσθέτεις μπροστά και πίσω 10-20-50 χαρακτήρες και μετά το κρυπτογραφείς με κάποιο reversible αλγόριθμο (πχ SHA1/2/256/512). Αντίστοιχα στην εκάστοτε κλήση, το ζητάς από το χρήστη, το αποκωδικοποιείς και έχεις ότι στοιχεία χρειάζεσαι. Καλό θα είναι πάλι να μην αποθηκεύεις το password, παρά μόνο το ID του χρήστη πχ, και παίρνεις ότι χρειάζεσαι από τη βάση.

Link to comment
Share on other sites

Βρε συ, εγώ θέλω να κρατάω τα στοιχεία όπως είναι (από text) κάπου στο τρέχον πρόγραμμα. Δε με ενδιαφέρει ουδεμία η ασφάλεια για αυτό δεν έχω κάνει λόγο και σε sda, md5 και εγώ δε ξέρω τι. Δε θα βγει κάπου, δε θα το χρησιμοποιήσει κάποιος, ένα απλό project είναι.

Link to comment
Share on other sites

Με δεδομένο πως δεν σε ενδιαφέρει η ασφάλεια ΚΑΘΟΛΟΥ, το πιο απλό που μπορείς να κάνεις είναι:

1) Από το πεδίο του login, βάζεις σε 2 μεταβλητές τα στοιχεία εισόδου. Α για το userid και Β για το password. Επίσης δηλώνεις μια boolean C η οποία είναι false.

2) Στο πάτημα του κουμπιού, θα χρησιμοποιείς το connection με τη βάση και θα ρωτάς τη βάση αν ο χρήστης με userid Α, έχει για password το B. Τόσο απλό.

3) Αν ναι, η C θα γίνεται True και θα πηγαίνεις παρακάτω κρατώντας τις τιμές στα Α και Β.

    Αν όχι, η C θα παραμένει False και θα δίνεις κενό string σαν αρχικοποίηση στα Α και Β. Και ξανά από την αρχή. Πιο απλά δε νομίζω να γίνεται.

Η C απλά βοηθά στον έλεγχο που θα έχεις, για το αν θα πας "παρακάτω".

Link to comment
Share on other sites

Αυτό που θέλω να κάνω είναι να αντλώ τα στοιχεία του χρήστη (όλα ή σχεδόν όλα) από τη βάση ώστε να τα χρησιμοποιώ στο προφιλ του πχ.

Έτσι όπως τα λέει @Delijohn το έχω υλοποιήσει προς το παρόν για να βοηθήσω.

 

Με λίγα λόγια θέλω να κρατάω κάπου τα στοιχεία της βάσης δεδομένων του χρήστη μέχρι να κάνει logout. Ή μήπως να μη τα κρατάω καν και να ξανακάνω Query όταν πάει να μπει στο  προφίλ το πχ βάση του ονόματος που μου έδωσε στο login; 

 

 

Link to comment
Share on other sites

Δεν είναι λογικό και δεν σε συμφέρει κι από άποψη ταχύτητας και πόρων, να τα κρατάς όλα από την αρχή.

Δεν τραβάς πολλά. Μόνο το password για το id που θα σου δώσει. Αν παίξει, πας παρακάτω. Ανοίγεις καρτέλα προφίλ; Ανοίγεις τα στοιχεία του. Αν είναι λίγα σε μεταβλητές, αν είναι πολλά, σε ένα πινακάκι. Προσπαθείς απλά κ μπακαλίστικα, οπότε δεν έχει κ νόημα να τα φέρνεις όοοοολα.

Link to comment
Share on other sites

Ωραία, πάμε παρακάτω. Πως μπορώ να υλοποιήσω το παρακάτω; Τα στοιχεία θα αντλούνται από τη βάση.

fYGn5ZV.png

Ο κώδικας που χρησιμοποιώ τώρα το μόνο που κάνει είναι ακριβώς το ίδιο με το Select * from ..... της SQL.
Μου επιστρέφει δηλαδή τα ονόματα των column ενός table και τα στοιχεία τους σε ένα table. Αν θέλετε μου λέτε και τον ποστάρω.

 

Ψάχνω δηλαδή το αντίστοιχο..............  mysqli_fetch_assoc .......... $row["column"]

Link to comment
Share on other sites

πριν 2 ώρες, το μέλος nucleus έγραψε:

https://docs.oracle.com/javase/tutorial/jdbc/basics/jdbcswing.html

 

Αν και νομίζω ότι είναι με swing και όχι με javafx

Δεν έχει σημασία η υλοποίηση για το fetch από την βάση πρέπει να είναι κοινή. Το πώς τα δείχνεις είναι αλλο θέμα (swing / javafx)

  • Like 1
Link to comment
Share on other sites

Το ανέφερα επειδή για αρκετούς πια το swing θεωρείται ξεπερασμένο και προτείνουν το javafx.  Απο την άλλη ξαναβλέποντας το url λέει jdbcswing οπότε είναι σίγουρα με swing :)

 

Πάντως θα είναι ωραία εξάσκηση να δει τον κώδικα σε swing και να το υλοποιήσει σε javafx

Link to comment
Share on other sites

Δεν έχω νέα σχετικά με αυτό διότι ασχολιόμουν ένα άλλο πράγματα (login, register, methods, etc).

 

Κάτι άλλο, πως μπορώ να κρύψω ή να εμφανίσω ένα κουμπί; Όχι enabled, disabled.

Θέλω να μην φαίνεται καν σε ορισμένες περιπτώσεις πχ.

Link to comment
Share on other sites

https://docs.oracle.com/javase/7/docs/api/index.html?javax/swing/JButton.html

 

Παράθεση


setVisible


public void setVisible(boolean aFlag)
Makes the component visible or invisible. Overrides Component.setVisible.
Overrides:
setVisible in class Component
Parameters:
aFlag - true to make the component visible; false to make it invisible
See Also:
Component.isVisible(), Component.invalidate()

 

 

Υπάρχει το παραπάνω method για το JButton inherited απο το javax.swing.JComponent

 

Java Tutorial http://docs.oracle.com/javase/tutorial/uiswing/components/button.html

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.