pananton Δημοσ. 14 Μαΐου 2010 Δημοσ. 14 Μαΐου 2010 εχω φτιαξει μια φορμα (.html) που ο χρηστης συμπληρωνει username και password...το action της φορμας (δηλαδη το submit) με πεταει στο αρχειο proccess.php το proccess.php ελεγχει την συμπληρωση των πεδιων.μονο που μου εχει σπασει τα νευρα και πεταει τα μηνυματα στην τυχη...τι μπορω να κανω ωστε ο ελεγχος να γινεται σωστα? > <HTML> <HEAD> <TITLE> Testing of filling fields </TITLE> </HEAD> <BODY> <body bgcolor=white> <?php $username = $_POST["username"]; $password = $_POST["password"]; if(strcmp($username,"") && $password !="") {$result = "Username and password are not provided";} elseif(!strcmp($username,"") && $password !="") {$result = "Thank you";} elseif(strcmp($username,"") && $password ="") {$result = "Password is not provided";} else {$result = "Username is not provided";} ?> <H1 align="center"> <?php echo $result ?></H1> </BODY> </HTML>
dewn735 Δημοσ. 14 Μαΐου 2010 Δημοσ. 14 Μαΐου 2010 Για ποιο λόγο χρησιμοποίησες την strcmp; Ίσως θα ήταν καλύτερα με την strlen: ><?php $res=0; if (strlen($password)==0) $res+=1; if (strlen($username)==0) $res+=2; switch ($res) { case 0: $str="Thank you";break; case 1: $str="Password is not provided";break; case 2: $str="Username is not provided";break; case 3: $str="Username and password are not provided";break; } ?> Και με μια δεύτερη ματιά, είδα γιατί αυτό που έγραψες δε πρόκειται ποτέ να παίξει σωστά: >elseif(strcmp($username,"") && $password ="") το συγκριτικό ίσον (=) είναι πάντα διπλό, δηλαδή, η εντολή if ($a=1) λέει "δώσε στη μεταβλητή a τη τιμή 1 και μετά κάνε και τον λογικό έλεγχο" (πράγμα το οποίο και θα σου γυρίζει πάντα true). Αντίθετα, η if ($a==1) εκτελεί απευθείας τον έλεγχο, χωρίς δυσάρεστες παρενέργειες...
Uberalles_gr Δημοσ. 14 Μαΐου 2010 Δημοσ. 14 Μαΐου 2010 ΠΑΝΤΑ να ελέγχεις τι ποστάρεις.... Και να τα περνάς μέσα από κάποιες συναρτήσεις της php για να κάνεις escape τα αυτάκια, τα tags και άλλα περίεργα που μπορεί να βάλει κάποιος.....
pananton Δημοσ. 14 Μαΐου 2010 Μέλος Δημοσ. 14 Μαΐου 2010 ευχαριστω για τις απαντησεις..ναι οντως dewn735 μου ειχε ξεφυγει το δευτερο ισον εκει. τελικα το δουλεψα αφου εβαλα τον ελεγχο σε μια συναρτηση και ολα κομπλε... (προκειται για εργασια σχολης και λογω πιεσης χρονου μπορει να σας ξαναενοχλησω, ευχαριστω παντως για τις απαντησεις και για τον χρονο σας). @Uberalles_gr : τι εννοεις? αναφερεσαι σε ειδικους χαρακτηρες αν καταλαβα σωστα ε? και γιατι να τους πειραξει καποιος?? με το ιδιο σκεπτικο γιατι να μην πειραξει την συναρτηση??
Uberalles_gr Δημοσ. 14 Μαΐου 2010 Δημοσ. 14 Μαΐου 2010 Στο συγκεκριμένο παράδειγμα έχεις 2 μεταβλητές την username και password τις οποίες τις παίρνεις από μία φόρμα που συμπληρώνει ο χρήστης. Ένας κακόβουλος χρήστης μπορεί από το να σου βγάζει ένα alert μέχρι και να σου σβήσει ολόκληρο πίνακα στην βάση (εάν έχεις βάση και κάνεις connect)
pananton Δημοσ. 14 Μαΐου 2010 Μέλος Δημοσ. 14 Μαΐου 2010 Στο συγκεκριμένο παράδειγμα έχεις 2 μεταβλητές την username και password τις οποίες τις παίρνεις από μία φόρμα που συμπληρώνει ο χρήστης. Ένας κακόβουλος χρήστης μπορεί από το να σου βγάζει ένα alert μέχρι και να σου σβήσει ολόκληρο πίνακα στην βάση (εάν έχεις βάση και κάνεις connect) ναι σκοπος της εργασιας ειναι να συνδεομαστε στην βαση που εχουμε ανεβασει και να την επεξεργαζομαστε. επειδη νομιζω καταλαβα τι λες εχω ενα αρχειο mysql_lib μεσα στο οποιο εχω τις functions της συνδεσης με βαση,επιλογη βασης και τελος εκτελεση των queries...οπου μπορω γενικα να χρησιμοποιω functions.
pananton Δημοσ. 15 Μαΐου 2010 Μέλος Δημοσ. 15 Μαΐου 2010 εφτασα στο σημειο να συνδεομαι με βαση και να πρεπει να κανω validate τo username και password που δινει ο χρηστης..το θεμα ειναι πως αυτα ειναι αποθηκευμενα σε πινακες σε μια βαση δεδομενων... πως μπορω να κανω αυτο το validate?? σκεφτηκα να τρεχω queries που θα μου δινουν τα username και passwords και μετα απο απειρα if κλπ κλπ κλπ...
dewn735 Δημοσ. 15 Μαΐου 2010 Δημοσ. 15 Μαΐου 2010 σκέφτηκα να τρέχω queries που θα μου δίνουν τα username και passwords και μετά από άπειρα if κλπ κλπ κλπ... Μα... γιατί πνίγεσαι σε μια κουταλιά νερό; Από τη στιγμή που (όπως λες) έχεις τη σύνδεση στη βάση: >$query="SELECT * FROM users WHERE username = '".$username."' AND password = '".$password."'"; $res=mysql_query($query); if (mysql_numrows ($res)) { //Έχουμε κάποιον χρήστη... } else { //Αποτυχία σύνδεσης. Ρίξτους στον λάκο με τους κροκόδειλους... } όπου users ο πίνακας με τους χρήστες. Αυτονόητο ότι έχει προηγηθεί ότι έχει προηγηθεί έλεγχος στα δεδομένα που σου δίνει ο χρήστης. Ψάξε στη google για "php mysql injection"
pananton Δημοσ. 16 Μαΐου 2010 Μέλος Δημοσ. 16 Μαΐου 2010 ευχαριστω πολυ..τλκ το εκανα ετσι οπως ειπες με κατι μικρες διορθωσεις... τωρα ειμαι σε φαση να φτιαχνω τα sessions! I'll be back!
pananton Δημοσ. 25 Μαΐου 2010 Μέλος Δημοσ. 25 Μαΐου 2010 και ενω η εργασια εχει φτασει σε ενα ικανοποιητικο σταδιο ξανακολλησα! γινεται να φτιαξουμε ενα drop down box αλλα τα πεδια του να ειναι αποτελεσμα ενος query που τρεχω? (το ιδιο πραγμα σε fields σε μια φορμα το καταφερα αλλα σε drop down box που θελω δεν μου πιανει...)
Uberalles_gr Δημοσ. 25 Μαΐου 2010 Δημοσ. 25 Μαΐου 2010 > <select name="mydropdown" id="mydropdown"> <?php $result = mysql_query("SELECT id,name FROM `mytable` ORDER BY name ASC"); while ($row = mysql_fetch_array($result)) { ?> <option value="<?php echo $row['id'] ?>"><?php echo $row['name']; ?></option> <?php } ?> </select>
routsounmanman Δημοσ. 27 Μαΐου 2010 Δημοσ. 27 Μαΐου 2010 και ενω η εργασια εχει φτασει σε ενα ικανοποιητικο σταδιο ξανακολλησα! γινεται να φτιαξουμε ενα drop down box αλλα τα πεδια του να ειναι αποτελεσμα ενος query που τρεχω? (το ιδιο πραγμα σε fields σε μια φορμα το καταφερα αλλα σε drop down box που θελω δεν μου πιανει...) Καλό θα ήταν να αλλάξεις τον έλεγχο της βάσης δεδομένων από >$query="SELECT * FROM users WHERE username = '".$username."' AND password = '".$password."'"; σε >$query="SELECT * FROM users WHERE username = '".md5($username)."' AND password = '".md5($password)."'"; και να δημιουργείς εξαρχής όλους τους κωδικούς σε md5.
pananton Δημοσ. 28 Μαΐου 2010 Μέλος Δημοσ. 28 Μαΐου 2010 δεν ξερω τι ειναι το md5..λιγο που το εψαξα κατι functions ειδα σε php... δεν εχω χρονο τωρα για περισσοτερο ψαξιμο...τα εκανα οπως μας τα δειξανε στο εργαστηριο ... σε ευχαριστω παντως για την υποδειξη..
Uberalles_gr Δημοσ. 28 Μαΐου 2010 Δημοσ. 28 Μαΐου 2010 Φίλε pananton η συνάρτηση md5 σου κρυπτογραφεί ένα string. Έτσι π.χ. το apple στο κρυπτογραφεί στο 1f3870be274f6c49b3e31a0c6728957f @routsounmanman για να το κάνει αυτό θα πρέπει να το έχει σώσει και στην βάση έτσι...
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.