αναζητηση mysql kai emfanisei se html pinaka

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
johnys22
Δημοσιεύσεις: 13
Εγγραφή: 25 Φεβ 2013 14:02

αναζητηση mysql kai emfanisei se html pinaka

Δημοσίευση από johnys22 » 25 Φεβ 2013 15:48

εχω φτιαξει μια φορμα με dropdown menus και θελω αναλογα με την επιλογη του dropdown menu να μ εμφανιζει τα αποτελεσματα σε html πινακα εχω κανει τον κωδικα πρεπει να φταιει το query oriste o kodikas

η φορμα

Κώδικας: Επιλογή όλων

<form action="Document2.php" method="POST" name="myform">ΠΕΡΙΟΔΟΣ&#58;<select name="periodos" ">
<option value="ΙΟΥΝΙΟΣ 2001">ΙΟΥΝΙΟΣ 2001</option>
<option value="ΙΟΥΝΙΟΣ 2002">ΙΟΥΝΙΟΣ 2002</option>
<option value="ΙΟΥΝΙΟΣ 2003">ΙΟΥΝΙΟΣ 2003</option>
<option value="ΙΟΥΝΙΟΣ 2004">ΙΟΥΝΙΟΣ 2004</option>
<option value="ΙΟΥΝΙΟΣ 2005">ΙΟΥΝΙΟΣ 2005</option>
<option value="ΙΟΥΝΙΟΣ 2006">ΙΟΥΝΙΟΣ 2006</option>
<option value="ΙΟΥΝΙΟΣ 2007">ΙΟΥΝΙΟΣ 2007</option>
<option value="ΙΟΥΝΙΟΣ 2008">ΙΟΥΝΙΟΣ 2008</option>
<option value="ΙΟΥΝΙΟΣ 2009">ΙΟΥΝΙΟΣ 2009</option>
</select><br /> <br />ΜΑΘΗΜΑ&#58;<select name="mathima" ">
<option value="ΧΗΜΕΙΑ">ΧΗΜΕΙΑ</option>
</select><br /> <br />ΤΑΞΗ&#58;<select name="taxi"">
<option value="Γ ΛΥΚΕΙΟΥ">Γ ΛΥΚΕΙΟΥ</option>
</select><br /> <br />ΤΥΠΟΣ ΣΧΟΛΕΙΟΥ&#58;<select name="tipossxoleioy" ">
<option value="ΗΜΕΡΗΣΙΑ">ΗΜΕΡΗΣΙΑ</option>
</select><br /> <input type="searchvalue" type="text"><br> 
<input type="submit" value="Aναζήτηση" align="center" /></form> 

το document2.php

Κώδικας: Επιλογή όλων

<?php
 
$con = mysql_connect &#40;"localhost","root",""&#41;;
if &#40;!$con&#41;&#123;
die&#40;'Could not connect&#58;' .mysql_error&#40;&#41;&#41;;
&#125; 
mysql_query&#40;"SET NAMES 'utf8'", $con&#41;;
mysql_select_db&#40;"seimeioseis", $con&#41;;
 
             
             
 
$mysql_query = "SELECT * FROM themata" ; 
 
$result = mysql_query&#40;$mysql_query,$con&#41;; 
$num=mysql_numrows&#40;$result&#41;;
mysql_close&#40;$con&#41;;
 
?>
<table border=1>
<tr> 
<th>ΠΕΡΙΟΔΟΣ</th> 
<th>ΜΑΘΗΜΑ</th>
<th>ΤΑΞΗ</th>
 <th>ΤΥΠΟΣ ΣΧΟΛΕΙΟΥ</th>
</tr>
 
<?php
$i=0;
while &#40;$i < $num&#41; &#123;
 
$f1=mysql_result&#40;$result,$i,"periodos"&#41;;
$f2=mysql_result&#40;$result,$i,"mathima"&#41;;
$f3=mysql_result&#40;$result,$i,"taxi"&#41;;
$f4=mysql_result&#40;$result,$i,"tipossxoleioy"&#41;;
?>
<tr>
<td><?php echo $f1; ?></td>
<td><a href="<?php echo 'ftp&#58;//localhost/www/themata/'.$f1.'.pdf'; ?>" target="_blank" ><?php echo $f2; ?></a></td>
<td><?php echo $f3; ?></td>
<td><?php echo $f4; ?></td>
 
</tr> 
<?php
$i++;
&#125;
 
?>   
 
</div> 
</body> 
</html>

Άβαταρ μέλους
ideal
Δημοσιεύσεις: 302
Εγγραφή: 12 Φεβ 2011 16:26

αναζητηση mysql kai emfanisei se html pinaka

Δημοσίευση από ideal » 25 Φεβ 2013 15:52

Αν βγαλεις αυτο τι γινεται;
mysql_close($con);
Δεν μπορούμε να λύσουμε τα προβλήματά μας χρησιμοποιώντας τον ίδιο τρόπο σκέψης που χρησιμοποιήσαμε όταν τα δημιουργήσαμε. -Α. Einstein

Rent a Car

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

αναζητηση mysql kai emfanisei se html pinaka

Δημοσίευση από dva_dev » 25 Φεβ 2013 18:38

Μάλλον θα του φέρνει ότι έχει και δεν έχει μέσα ο πίνακας.
$mysql_query = "SELECT * FROM themata" ;
Αν δουλέψει το παραπάνω, μετά δοκίμασε να κάνεις και το query σου κάπως έτσι:

Κώδικας: Επιλογή όλων

$periodos = mysql_real_escape_string&#40;$_POST&#91;'periodos'&#93;&#41;;
$mysql_query = "SELECT * FROM themata WHERE periodos='$periodos';";

Άβαταρ μέλους
ideal
Δημοσιεύσεις: 302
Εγγραφή: 12 Φεβ 2011 16:26

αναζητηση mysql kai emfanisei se html pinaka

Δημοσίευση από ideal » 25 Φεβ 2013 20:02

Συγνωμη για τη "σφηνα" αλλα θελω να σε ρωτησω το παρακατω ειναι επαρκης ασφαλεια;
dva_dev έγραψε: $periodos = mysql_real_escape_string($_POST['periodos']);
Δεν μπορούμε να λύσουμε τα προβλήματά μας χρησιμοποιώντας τον ίδιο τρόπο σκέψης που χρησιμοποιήσαμε όταν τα δημιουργήσαμε. -Α. Einstein

Rent a Car

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

αναζητηση mysql kai emfanisei se html pinaka

Δημοσίευση από mrpc » 01 Μαρ 2013 16:49

Όχι... αλλά είναι καλύτερο από το να μην υπάρχει καθόλου.

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

αναζητηση mysql kai emfanisei se html pinaka

Δημοσίευση από mrpc » 01 Μαρ 2013 16:54

Και για να εξηγήσω τι εννοώ (που μάλλον στο συγκεκριμένο παράδειγμα δεν μας ενδιαφέρει), σκέψου το εξής:

Κώδικας: Επιλογή όλων

$user_input = mysql_real_escape_string&#40;$_GET&#91;'user_input'&#93;&#41;;
$query = "SELECT * FROM `users` WHERE `id` = $user_input";
$result = mysql_query&#40;$query&#41;;
Αν το user_input είναι 0 or 9=9 τότε έχουμε injection.
Για αυτές τις περιπτώσεις, καλό είναι να κάνουμε έναν επιπλέον έλεγχο, ότι τα δεδομένα που δεχόμαστε είναι του τύπου που θέλουμε (π.χ. με is_numeric()), να βάζουμε σε quotes ακόμα και τις αριθμητικές τιμές κ.λ.π.

Ακόμα καλύτερα (και για πολλούς άλλους λόγους) η χρήση prepared statements.

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

αναζητηση mysql kai emfanisei se html pinaka

Δημοσίευση από gvre » 01 Μαρ 2013 17:26

mrpc έγραψε:Ακόμα καλύτερα (και για πολλούς άλλους λόγους) η χρήση prepared statements.
+1
Επίσης, το mysql extension είναι deprecated. Αυτό σημαίνει ότι δεν πρέπει να χρησιμοποιείται πλέον. Εναλλακτικά extensions είναι το pdo και το mysqli.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

αναζητηση mysql kai emfanisei se html pinaka

Δημοσίευση από Apostolis_38 » 02 Μαρ 2013 21:53

mrpc έγραψε: καλό είναι να κάνουμε έναν επιπλέον έλεγχο, ότι τα δεδομένα που δεχόμαστε είναι του τύπου που θέλουμε (π.χ. με is_numeric()),
Η για πιο απλά και γρήγορα

Κώδικας: Επιλογή όλων

$user_input = &#40;int&#41; $_GET&#91;'user_input'&#93;;

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

αναζητηση mysql kai emfanisei se html pinaka

Δημοσίευση από mrpc » 02 Μαρ 2013 22:00

Αυτό είναι εν μέρη σωστό, γιατί το (int)$_GET['user_input'] σε οτιδήποτε δεν είναι numeric μας επιστρέφει 0, και σε οτιδήποτε numeric δεν είναι integer μας κάνει αυτόματα μετατροπή.
Ουσιαστικά λοιπόν δεν αποτρέπουμε την εκτέλεση του statement όταν τα δεδομένα δεν είναι έγκυρα, αλλά το εκτελούμε με διαφορετικά δεδομένα, λιγότερο επικίνδυνα, αλλά πάλι μη έγκυρα.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

αναζητηση mysql kai emfanisei se html pinaka

Δημοσίευση από Apostolis_38 » 02 Μαρ 2013 22:15

Τι εννοείς οτι κάνει μετατροπή;
Ποτέ δεν μου έχει μετατρέψει float σε integer (για παράδειγμα).
Απλώς το value δεν "περνάει".

Για να μην παρεξηγηθώ, δεν εννοώ οτι αυτός και μόνο ο τρόπος είναι αρκετός για να αποτρέψει οποιοδήποτε πρόβλημα από κακόβουλη χρήση.
Εξυπακούεται οτι χρειαζονται κι άλλοι έλεγχοι και μέθοδοι αποφυγής.

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

αναζητηση mysql kai emfanisei se html pinaka

Δημοσίευση από mrpc » 02 Μαρ 2013 23:34

Apostolis_38 έγραψε:Τι εννοείς οτι κάνει μετατροπή;
Ποτέ δεν μου έχει μετατρέψει float σε integer (για παράδειγμα).
Απλώς το value δεν "περνάει".

Για να μην παρεξηγηθώ, δεν εννοώ οτι αυτός και μόνο ο τρόπος είναι αρκετός για να αποτρέψει οποιοδήποτε πρόβλημα από κακόβουλη χρήση.
Εξυπακούεται οτι χρειαζονται κι άλλοι έλεγχοι και μέθοδοι αποφυγής.
Π.χ.:

Κώδικας: Επιλογή όλων

$var = "1,2";
echo &#40;int&#41;$var;
τυπώνει 1.

Κώδικας: Επιλογή όλων

$var = "δοκιμή";
echo &#40;int&#41;$var;
τυπώνει 0.

Περνάει value, αλλά όχι το value που θα ήθελες. Και αυτό μπορεί να έχει περίεργα αποτελέσματα σε κάποιες περιπτώσεις.
Σκέψου π.χ. ότι έτσι μπορεί να δημιουργήσεις πρόβλημα με foreign keys (αν είσαι σε innodb θα φας error, αν τα foreign keys ουσιαστικά είναι δικά σου σε μια myisam, θα δημιουργήσεις προβλήματα στην κανονικοποίηση).
Μπορεί να επιστρέψεις πράγματα από ένα select που δεν θες.
Π.χ. select * from products where price > $var. Αν το var πάρει τιμή 0, τότε επιστρέφεις τα πάντα, πράγμα που δεν το θες εκείνη τη στιγμή.

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

αναζητηση mysql kai emfanisei se html pinaka

Δημοσίευση από Khronos » 03 Μαρ 2013 06:55

Αν κάνεις τις απαραίτητες ενέργειες έτσι ώστε να μη σου κάνει ο άλλος ζημιά, τι σε νοιάζει τι αποτελέσματα θα του επιστρέψεις?

Ίσα ίσα θα έπρεπε να του επιστρέψεις "ανάλογο" μήνυμα αν δίνει "λάθος" παραμέτρους.

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

αναζητηση mysql kai emfanisei se html pinaka

Δημοσίευση από gvre » 03 Μαρ 2013 12:21

Khronos έγραψε:Ίσα ίσα θα έπρεπε να του επιστρέψεις "ανάλογο" μήνυμα αν δίνει "λάθος" παραμέτρους.
Συμφωνώ κι εγώ με αυτό. Το καλύτερο που έχεις να κάνεις σε περίπτωση που δεν έχεις σωστό input είναι να γυρίσεις το ανάλογο μήνυμα στον χρήστη. Δεν έχει σημασία, αν πχ το 0 έχει προέλθει από το type casting ή από τον ίδιο τον χρήστη, αν δεν είναι αποδεκτή τιμή. Το ελέγχεις και δεν το στέλνεις καθόλου στη βάση.
Με τους ακεραίους γίνεται δουλειά και με το type casting. Το πρόβλημα είναι με τα strings. Εκεί ο μόνος τρόπος για να κοιμάσαι ήσυχος είναι τα prepared statements. Σε κάποιες περιπτώσεις είναι ταχύτερα από τα απλά queries (όταν στέλνεις το ίδιο query στη βάση αλλάζοντας μόνο τις παραμέτρους).

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

αναζητηση mysql kai emfanisei se html pinaka

Δημοσίευση από mrpc » 03 Μαρ 2013 15:04

Khronos έγραψε:Αν κάνεις τις απαραίτητες ενέργειες έτσι ώστε να μη σου κάνει ο άλλος ζημιά, τι σε νοιάζει τι αποτελέσματα θα του επιστρέψεις?

Ίσα ίσα θα έπρεπε να του επιστρέψεις "ανάλογο" μήνυμα αν δίνει "λάθος" παραμέτρους.
Δεν διαφωνούμε καθόλου. Αυτό λέω τόση ώρα: με το (int) κάνεις type casting και στέλνεις λάθος statement, για αυτό καλύτερα να κάνεις άλλου είδους validation, π.χ. να ελέγχεις αν όντως είναι τα δεδομένα που παίρνεις στον τύπο που περιμένεις, όχι να τα μετατρέπεις. Αν δεν είναι, μην στείλεις κανένα statement.
Η διαφωνία μου δηλαδή ήταν με το
Apostolis_38 έγραψε:Η για πιο απλά και γρήγορα

Κώδικας: Επιλογή όλων

$user_input = &#40;int&#41; $_GET&#91;'user_input'&#93;;
που κάνει type casting και στέλνει το statement αντί να εμφανίσει error στον χρήστη.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

αναζητηση mysql kai emfanisei se html pinaka

Δημοσίευση από Apostolis_38 » 04 Μαρ 2013 09:56

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

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης