TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

Σχετικά έγγραφα
TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

Δομημένος Προγραμματισμός

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 3: Server Side Scripting II PHP & MySQL

ΟΔΗΓΙΕΣ ΧΡΗΣΤΗ ΓΙΑ ΤΟ ΠΡΟΓΡΑΜΜΑ ΗΛΕΚΤΡΟΝΙΚΗΣ ΤΑΞΗΣ

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

Ηλεκτρονικοί Υπολογιστές II

Περιεχόμενα. Μέρος 1: Βασικές έννοιες Πληροφορικής και επικοινωνιών Μέρος 2: Χρήση υπολογιστή και διαχείριση αρχείων Πρόλογος...

Χρήση του Office 365 σε τηλέφωνο Android

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

Εργαστήριο «Βάσεις Οικολογικών Δεδομένων και Εφαρμογές»

Ανοικτό Ψηφιακό Μάθημα για την κατάρτιση του προσωπικού υποστήριξης ανάπτυξης ψηφιακών μαθημάτων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ

ΕΦΑΡΜΟΓΗ ΔΙΑΧΕΙΡΙΣΗΣ ΙΣΤΟΣΕΛΙΔΩΝ ΜΕΛΩΝ ΔΕΠ, ΤΜΗΜΑΤΟΣ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΠΑΤΡΩΝ ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΠΛΟΗΓΗΣΗΣ ΚΑΙ ΧΡΗΣΗΣ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Ηλεκτρονικοί Υπολογιστές II

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Υπολογιστικά Συστήματα

Ηλεκτρονικοί Υπολογιστές I

Νέες Τεχνολογίες στην Εκπαίδευση

Ενότητα. Εισαγωγή στη Microsoft Access

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Βάσεις δεδομένων και Microsoft Access Κεφάλαιο 2: Microsoft Access

Ηλεκτρονικοί Υπολογιστές II

Λειτουργικά Συστήματα

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Ενότητα. Σχεδίαση Βάσεων Δεδομένων

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

TEC510 Ανάπτυξη Δικτυακών Τόπων (Ε εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Επιστημονικός συνεργάτης Εργαστηρίου: Γιώργος Μηλιώτης

Δομημένος Προγραμματισμός

Πληροφορική. Εργαστηριακή Ενότητα 2 η : Το βιβλίο εργασίας του MS Excel. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Περιεχόμενα. Εισαγωγή. Οδηγός Χρήστη - Φοιτητή

Εργαστήριο 9. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο. Στόχος. Προετοιμασία περιβάλλοντος εργασίας

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

ΟΔΗΓΙΕΣ ΥΠΟΒΟΛΗΣ ΔΙΔΑΚΤΟΡΙΚΩΝ ΔΙΑΤΡΙΒΩΝ ΣΤΟ ΙΔΡΥΜΑΤΙΚΟ ΑΠΟΘΕΤΗΡΙΟ ΤΟΥ ΟΠΑ "ΠΥΞΙΔΑ"

ΟΔΗΓΙΕΣ ΥΠΟΒΟΛΗΣ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΕΡΓΑΣΙΩΝ ΣΤΟ ΙΔΡΥΜΑΤΙΚΟ ΑΠΟΘΕΤΗΡΙΟ ΤΟΥ ΟΠΑ "ΠΥΞΙΔΑ"

Περιεχόμενα. 1 Tο βιβλίο "με μια ματιά" Εισαγωγή στη Microsoft Access Γνωριμία με τις βάσεις δεδομένων της Access...

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι

Αυτοματοποιημένη χαρτογραφία

Α.Φ.Μ. ΕΠΙΘΕΤΟ ΟΝΟΜΑ ΠΑΤΡΩΝΥΜΟ ΑΡ

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική


Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Τεχνικές Προγραμματισμού και Χρήση Λογισμικού Η/Υ στις Κατασκευές

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Εγχειρίδιο Φοιτητών. 1. Εισαγωγή

ΔΟΜΗ. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ

Εγχειρίδιο Φοιτητών. 1. Εισαγωγή

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη

Λειτουργικά Συστήματα

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ: Εντολές κίνησης και στροφής στο προγραμματιστικό περιβάλλον Scratch. ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Αντικειμενοστρεφής Προγραμματισμός

ΟΔΗΓΙΕΣ ΥΠΟΒΟΛΗΣ ΕΡΕΥΝΗΤΙΚΗΣ ΕΡΓΑΣΙΑΣ ΣΤΟ ΙΔΡΥΜΑΤΙΚΟ ΑΠΟΘΕΤΗΡΙΟ ΤΟΥ ΟΠΑ "ΠΥΞΙΔΑ"

Τεχνολογία Λογισμικού


Εγχειρίδιο Χρήσης Συστήματος Διαχείρισης Ηλεκτρονικών Ερωτηματολογίων Ο.Π.Σ

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

Διαδικτυακές Εφαρμογές Ενότητα 7: Προσπέλαση ΒΔ με το JDBC

ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΔΙΑΔΙΚΤΥΑΚΗΣ ΠΥΛΗΣ ΥΠΗΡΕΣΙΕΣ ΠΡΟΣ ΔΙΔΑΣΚΟΝΤΕΣ

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στο Outlook Κεφάλαιο 2 Βασικές εργασίες με μηνύματα 33

Ενότητα. Επεξεργασία πινάκων

Δομές Δεδομένων. Ενότητα 1: Εισαγωγή-Υλοποίηση του ΑΤΔ Σύνολο με Πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

BlackBerry Internet Service. Οδηγός χρήστη

Πληροφορική ΙΙ Θεματική Ενότητα 7

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Λογική Δημήτρης Πλεξουσάκης Φροντιστήριο 5: Προτασιακός Λογισμός: Κατασκευή Μοντέλων Τμήμα Επιστήμης Υπολογιστών

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Επιστημονικός συνεργάτης Εργαστηρίου: Στέλλα Λάμπουρα

Γενικά. Change Reference

Ακαδημαϊκό Έτος , Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Εγχειρίδιο Χρήστη - Μαθητή

Δομές Δεδομένων. Ενότητα 12: Κατακερματισμός: Χειρισμός Συγκρούσεων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

Σχεδιασμός των Πινάκων μίας Βάσης Δεδομένων

Εργαστηριακός Οδηγός. Βάσεις Δεδομένων της Γ' Τάξης ΕΠΑΛ

Transcript:

TEC610 (ΣΤ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Εαρινό εξάμηνο

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ιόνιο Πανεπιστήμιο» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 1

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons 2

Συνεργασία PHP & Βάσεων Δεδομένων 2

1. Δημιουργία Τροποποίηση του Προτύπου Αντί να δημιουργήσουμε από την αρχή ένα πρότυπο μπορούμε να τροποποιήσουμε αυτό που ήδη έχουμε στους συνδέσμους περιήγησης του αρχείου κεφαλίδας. Ανοίξτε το αρχείο header.html και αλλάξτε τη λίστα των συνδέσμων. 3

2. Σύνδεση στη MySQL Η σύνδεση με το διακομιστή γίνεται με τη συνάρτηση mysqli_connect(): $dbc = mysqli_connect (υπολογιστής_υπηρεσίας, όνομα_χρήστη, κωδικός_πρόσβασης, βάση_δεδομενων); Αν η σύνδεση επιτύχει, η μεταβλητή $dbc, θ ααποτελέσει σημείο αναφοράς για όλες τις επόμενες αλληλεπιδράσεις με τη βάση δεδομένων. Οι περισσότερες συναρτήσεις της PHP που χειρίζονται τη βάση δεδομένων της MySQL, θα έχουν ως πρώτο όρισμα αυτή τη μεταβλητή. Αν προκύψει κάποιο πρόβλημα κατά τη σύνδεση μπορείτε να καλέσετε τη συνάρτηση mysqli_connect_error(), η οποία επιστρέφει ένα κατάλληλο μήνυμα σφάλματος. 4

2.1 Σύνδεση και Επιλογή Βάσης Δεδομένων 1.Δημιουργήστε ένα νέο έγγραφο PHP <?php # Script 8.2 mysqli_connect.php Αυτό το αρχείο θα συμπεριληφθεί σε άλλα σενάρια PHP οπότε δε χρειάζεται να περιέχει κώδικα HTML. 2.Ορίστε σταθερές για τον υπολογιστή υπηρεσίας της MySQL, το όνομα χρήστη, τον κωδικό πρόσβασης και τη βάση δεδομένων. (Ο ορισμός των σταθερών δεν είναι υποχρεωτικός, αλλά γίνεται για λόγους ασφαλείας) 5

3.Συνδεθείτε στη MySQL Αν η σύνδεση είναι επιτυχής η συνάρτηση mysqli_connect.php θα επιστρέψει ένα resource link που αντιστοιχεί στην ανοιχτή σύνδεση. Αυτός ο σύνδεσμος θα ανατεθεί στη μεταβλητή $dbc, ώστε να μπορούν και άλλες συναρτήσεις να χρησιμοποιήσουν τη σύνδεση με τη MySQL. Ο τελεστής απόκρυψης σφαλμάτων (@) εμποδίζει την εμφάνιση του μηνύματος σφάλματος της PHP επειδή αυτό το χειρίζεται η συνάρτηση die() του όρου OR. 6

4. Αποθηκεύστε το αρχείο με το όνομα mysqli_connect.php. 5. Τοποθετήστε το αρχείο έξω από τον κατάλογο εγγράφων της τοποθεσίας. Επειδή το αρχείο περιέχει ευαίσθητες πληροφορίες πρόσβασης στη MySQL πρέπει να αποθηκευτεί σε ασφαλή θέση είτε ένα επίπεδο πάνω είτε κάπου αλλού έξω από τον κατάλογο της τοποθεσίας έτσι ώστε να μην είναι προσπελάσιμο από τους browsers. 6. Τοποθετήστε προσωρινά ένα αντίγραφο του σεναρίου μέσα στον κατάλογο της τοποθεσίας και εκτελέστε το στο φυλλομετρητή σας. 7. Διαγράψτε το προσωρινό αντίγραφο από το φάκελο της τοποθεσίας. 7

2.2 Οργάνωση των Εγγράφων σας Για να ασφαλίσετε ένα αρχείο το οποίο περιέχει όλα τα στοιχειά σύνδεσης με τη βάση δεδομένων πρέπει να το αποθηκεύσετε έξω από τον κατάλογο με τα έγγραφα της τοποθεσίας. 8

3. Εκτέλεση Απλών Ερωτημάτων Αφού συνδεθείτε και επιλέξετε βάση δεδομένων μπορείτε να εκτελέσετε είτε βασικά ερωτήματα (εισαγωγής, ενημέρωσης, διαγραφής) είτε πιο σύνθετα που επιστρέφουν πολλές γραμμές. Σε κάθε περίπτωση η συνάρτηση της PHP που εκτελεί ερωτήματα είναι η mysqli_query(): αποτέλεσμα = mysqli_query(σύνδεση, ερώτημα); Για απλά ερωτήματα όπως τα INSERT, UPDATE, DELETE η μεταβλητή $r θα έχει τιμή TRUE ή FALSE ανάλογα με το αν το ερώτημα εκτελέστηκε σωστά ή όχι. Για σύνθετα ερωτήματα η μεταβλητή $r θα είναι σύνδεσμος πόρου προς τα αποτελέσματα του ερωτήματος αν λειτούργησε σωστά ή FALSE αν απέτυχε. 9

Αν το ερώτημα απέτυχε για να δείτε τι σφάλμα έγινε καλέστε τη συνάρτηση mysqli_error(): echo mysqli_error($dbc); Αν και προαιρετικό για να κλείσετε τη σύνδεση με τη MySQL καλέστε τη συνάρτηση mysqli_close($dbc); Εκτελέστε απλά ερωτήματα 1. Δημιουργήστε ένα νέο σενάριο PHP 2. Πληκτρολογήστε τη συνθήκη υποβολής και δώστε αρχικές τιμές στον πίνακα $errors. 10

3. Επικυρώστε το μικρό όνομα Η συνάρτηση empty() παρέχει ένα σύντομο τρόπο εξασφάλισης ότι συμπληρώθηκε ένα πεδίο κειμένου. 4. Επικυρώστε το επώνυμο και τη διεύθυνση ηλ. ταχυδρομείου 11

5. Επικυρώστε τον κωδικό πρόσβασης Για να επικυρώσει τον κωδικό το σενάριο πρέπει να ελέγξει αν το πεδίο pass1 έχει τιμή και μετά να επαληθεύσει αν οι τιμές των πεδίων pass1 και pass2 είναι ίδιες. 12

8. Ελέγξτε αν όλα είναι εντάξει για την εγγραφή του χρήστη. if (empty($errors)) { Αν τα υποβαλλόμενα δεδομένα πέρασαν όλους τους ελέγχους ο πίνακας $errors δε θα περιέχει τιμές οπότε η παραπάνω συνθήκη θα είναι TRUE. Αν ο πίνακας $errors δεν είναι κενός θα εμφανιστεί το κατάλληλο μήνυμα σφάλματος και στο χρήστη θα δοθεί άλλη μια ευκαιρία να εγγραφεί. 13

7. Προσθέστε το χρήστη στη βάση δεδομένων. Η πρώτη γραμμή του κώδικα θα προσθέσει στο σενάριο το περιεχόμενο του αρχείου mysqli_connect.php, δημιουργώντας μια σύνδεση με τη MySQL και επιλέγοντας τη βάση δεδομένων. Αφού αναθέσουμε το ερώτημα σε μια μεταβλητή το εκτελούμε μέσω της συνάρτησης mysqli_query(), που στέλνει τη διαταγή της SQL στη βάση δεδομένων MySQL. Πριν από την κλήση της mysqli_query() τοποθετούμε τον τελεστή @ για να κρύψουμε τυχόν σφάλματα. 14

8. Αναφέρετε αν η εγγραφή έγινε με επιτυχία. 15

Μπορείτε να χρησιμοποιήσετε τη μεταβλητή $r, στην οποία ανατίθεται η τιμή που επιστρέφει η συνάρτηση mysqli_query(), σε μια συνθήκη για να ελέγξετε αν το ερώτημα εκτελέστηκε με επιτυχία. Αν η $r έχει τιμή TRUE Αν η $r έχει τιμή FALSE 16

9. Κλείστε τη σύνδεση με τη βάση δεδομένων και ολοκληρώστε το πρότυπο της HTML. 10. Τυπώστε τα μηνύματα σφαλμάτων, αν υπάρχουν και κλείστε τη συνθήκη υποβολής της φόρμας. 17

11. Ολοκληρώστε την ενότητα κώδικα της PHP και ξεκινήστε τη φόρμα HTML. 18

Η φόρμα είναι απλή με ένα πλαίσιο κειμένου εισόδου για κάθε πεδίο του πίνακα users. Κάθε είσοδος γίνεται με τον κώδικα 12. Ολοκληρώστε τη φόρμα της HTML. 19

13. Ολοκληρώστε το πρότυπο. 14. Αποθηκεύστε το αρχείο με το όνομα register.php στο φάκελο της τοποθεσίας Ιστού και ύστερα δοκιμάστε το στο φυλλομετρητή σας. 20

3.1 Ανάκτηση Αποτελεσμάτων Ερωτήματος Το βασικό εργαλείο χειρισμού των αποτελεσμάτων ενός ερωτήματος επιλογής SELECT είναι η συνάρτηση mysqli_fetch_array(), η οποία δέχεται ως όρισμα τη μεταβλητή $r, που περιέχει τα αποτελέσματα του ερωτήματος και επιστρέφει μια γραμμή δεδομένων τη φορά, σε μορφή πίνακα. Αυτή τη συνάρτηση πρέπει να τη χρησιμοποιείτε μέσα σε ένα βρόχο που θα εξακολουθεί να προσπελάζει κάθε επιστρεφόμενη γραμμή όσο υπάρχουν γραμμές προς ανάγνωση. Η βασική δομή για την ανάγνωση όλων των εγγραφών ενός ερωτήματος while ($row = mysqli_fetch_array($r)) 21

Η συνάρτηση mysqli_fetch_array(), δέχεται μια δεύτερη προαιρετική παράμετρο που καθορίζει τον τύπο του επιστρεφόμενου πίνακα: συνειρμικός, αριθμοδεικτών ή και τα δυο. Ο συνειρμικός πίνακας σας επιτρέπει να αναφέρεστε στις τιμές των στηλών με το όνομά τους, ενώ ο πίνακας αριθμοδεικτών απαιτεί τη χρήση αποκλειστικά αριθμών. Κάθε παράμετρος ορίζεται με μια σταθερά από τον παρακάτω πίνακα. 22

Η ρύθμιση MYSQLI_NUM είναι οριακά ταχύτερη αλλά η MYSQLI_ASSOC είναι πιο σαφής και μπορεί να εξακολουθήσει να λειτουργεί ακόμα και αν το ερώτημα τροποποιηθεί. Πάρτε τα αποτελέσματα ενός ερωτήματος. 1.Δημιουργήστε ένα νέο έγγραφο PHP 23

2. Συνδεθείτε στη βάση δεδομένων και υποβάλετε ένα ερώτημα. Το ερώτημα αυτό θα επιστρέψει δυο στήλες: τα ονόματα των χρηστών και την ημερομηνία εγγραφής (στις επιστρεφόμενες τιμές δόθηκαν ψευδώνυμα name και dr). 24

3. Εμφανίστε τα αποτελέσματα του ερωτήματος. Για να εμφανίσετε τα αποτελέσματα, δημιουργήστε έναν πίνακα και μια γραμμή κεφαλίδας σε HTML. Στη συνέχεια διατρέξτε τα αποτελέσματα σε ένα βρόχο με τη συνάρτηση mysqli_fetch_array(), και τυπώστε κάθε εγγραφή που προσκομίζεται. Τέλος κλείστε τον πίνακα. 25

4. Απελευθερώστε τους πόρους που δεσμεύει το ερώτημα. mysqli_free_result ($r); (προαιρετικό βήμα) 5. Ολοκληρώστε την κύρια συνθήκη. Το πρώτο μήνυμα σφάλματος είναι γενικό κατάλληλο για μια τοποθεσία σε λειτουργία, το δεύτερο είναι πολύ πιο αναλυτικό επειδή τυπώνει και το μήνυμα σφάλματος της MySQL και το ίδιο το ερώτημα. 26

6. Κλείστε τη σύνδεση με τη βάση δεδομένων και ολοκληρώστε τον κώδικα της σελίδας. 7. Αποθηκεύστε το αρχείο με το όνομα view_users.php στο φάκελο της τοποθεσίας και μετά δοκιμάστε το φυλλομετρητή. 27

3.2 Ασφαλής χρήση της SQL Η ασφάλεια της βάσης δεδομένων σας σε ό,τι αφορά την PHP περιλαμβάνει τρία ζητήματα: 1. Προστασία των πληροφοριών πρόσβασης στη MySQL 2. Να μην αποκαλύπτεται πάρα πολλές πληροφορίες για τη βάση δεδομένων σας. 3. Προσοχή κατά την εκτέλεση των ερωτημάτων και ιδιαίτερα αυτών στα οποία χρησιμοποιούνται δεδομένα που υποβάλλουν οι χρήστες. Τον πρώτο στόχο μπορείτε να τον επιτύχετε τοποθετώντας το σενάριο σύνδεσης της MySQL έξω από το φάκελο της τοποθεσίας, ώστε να μην μπορεί να ανοίξει σε κάποιο φυλλομετρητή. 28

Ο δεύτερος επιτυγχάνεται με την απόκρυψη των μηνυμάτων σφαλμάτων της PHP ή των ερωτημάτων σας από τους χρήστες. Όσο για τον τρίτο στόχο υπάρχουν πολλά που μπορείτε να κάνετε. Πρώτον επικυρώστε ότι έχει υποβληθεί κάποια τιμή ή αν είναι κατάλληλου τύπου. Δεύτερον χρησιμοποιήστε κανονικές παραστάσεις για να εξασφαλίσετε ότι τα υποβαλλόμενα δεδομένα ταιριάζουν με τα αναμενόμενα. Τρίτον μπορείτε να μετατρέψετε τον τύπο ορισμένων τιμών ώστε να εξασφαλίσετε ότι θα είναι αριθμοί. Τέταρτον συνίσταται να περνάτε τα δεδομένα που υποβάλλουν οι χρήστες από τη συνάρτηση mysqli_real_escape_string(). 29

3.2.1 Χρησιμοποιήστε τη συνάρτηση mysqli_real_escape_string() Για να δούμε τη χρήση της mysqli_real_escape_string() θα χρησιμοποιήσουμε το σενάριο που δουλέψαμε λίγο πριν στο κεφάλαιο της εκτέλεσης των απλών ερωτημάτων. 1. Ανοίξτε το αρχείο register.php 2. Μετακινήστε τη γραμμή συμπερίληψης του αρχείου mysqli_connect.php αμέσως μετά την κύρια συνθήκη. 30

3. Τροποποιήστε τις ρουτίνες επικύρωσης έτσι ώστε να περιλαμβάνουν τη συνάρτηση mysqli_real_escape_string(). Αντί η υποβαλλόμενη τιμή να αντιτίθεται σε κάθε μεταβλητή ($fn, $ln, κλπ.) οι τιμές πρώτα περνούν από τη συνάρτηση mysqli_real_escape_string(). Η συνάρτηση trim() χρησιμοποιείται και πάλι για την απαλοιφή των άχρηστων κενών διαστημάτων. 31

4. Προσθέστε μια δεύτερη κλήση της συνάρτησης mysqli_close() πριν από το τέλος της κύριας συνθήκης. mysqli_close($dbc); 5. Αποθηκεύστε το αρχείο με το όνομα register.php στο φάκελο της τοποθεσίας και δοκιμάστε το στο φυλλομετρητή Ιστού σας. 32

3.3 Καταμέτρηση των επιστρεφόμενων εγγραφών Η επόμενη λογική συνάρτηση που θα εξετάσουμε είναι η mysqli_num_rows() όπου επιστρέφει το πλήθος των εγγραφών που ανακτά ένα ερώτημα επιλογής (SELECT). Δέχεται ένα όρισμα, τη μεταβλητή που περιέχει το αποτέλεσμα του ερωτήματος: $num = mysqli_num_rows($r); Είναι απαραίτητη αν θέλετε να σελιδοποιήσετε τα αποτελέσματα του ερωτήματός σας. Καλή ιδέα είναι να χρησιμοποιείτε αυτή η συνάρτηση πριν προσπαθήσετε να προσκομίσετε αποτελέσματα με ένα βρόχο while. 33

Στο παράδειγμα που ακολουθεί θα τροποποιήσουμε το σενάριο view_users.php ώστε να εμφανίζει το συνολικό αριθμό των εγγεγραμμένων χρηστών. 1.Ανοίξτε το σενάριο view_users.php 2.Πριν από τη συνθήκη if ($r) προσθέστε την παρακάτω γραμμή: $num = mysqli_num_rows ($r); Αυτή η γραμμή αναθέτει στη μεταβλητή $num το πλήθος των γραμμών που επιστρέφει το ερώτημα. 3.Αλλάξτε την αρχική συνθήκη $r σε if ($num > 0) { Η προηγούμενη μορφή της συνθήκης έλεγχε αν το ερώτημα εκτελέστηκε με επιτυχία και όχι αν επιστράφηκαν οι εγγραφές. Τώρα θα είναι πιο ακριβής. 34

4. Πριν δημιουργήσετε τον πίνακα της HTML εμφανίστε το πλήθος των εγγεγραμμένων χρηστών. 5. Αλλάξτε το τμήμα else της κύριας συνθήκης σε Η αρχική συνθήκη έλεγχε αν το ερώτημα εκτελέστηκε σωστά ή όχι. Τώρα το μήνυμα σφάλματος απλώς αναφέρει ότι δεν επιστράφηκαν εγγραφές. 35

6. Αποθηκεύστε το αρχείο με το όνομα view_users.php στο φάκελο της τοποθεσίας και δοκιμάστε το στο φυλλομετρητή Ιστού σας. 36

3.4 Ενημέρωση εγγραφών με PHP Η ενημέρωση εγγραφών της βάσης δεδομένων μέσω ενός σεναρίου PHP απαιτεί ένα ερώτημα ενημέρωσης (UPDATE) και η επιτυχής εκτέλεση του πιστοποιείται με τη συνάρτηση mysqli_affected_rows() της PHP. Η συνάρτηση αυτή επιστρέφει το πλήθος των γραμμών που επηρεάζονται από ένα ερώτημα εισαγωγής (INSERT), ενημέρωσης (UPDATE), ή διαγραφής (DELETE). Χρησιμοποιείται με τον εξής τρόπο: $num = mysqli_affected_rows($dbc); Το μοναδικό όρισμα που δέχεται η συνάρτηση αυτή είναι η σύνδεση με τη βάση δεδομένων ($dbc) 37

Το παράδειγμα που ακολουθεί είναι ένα σενάριο το οποίο επιτρέπει στους εγγεγραμμένους χρήστες να αλλάξουν τον κωδικό πρόσβασής τους. Ελέγχει αν το όνομα χρήστη και ο κωδικός πρόσβασης περιλαμβάνονται στις ήδη καταχωρισμένες τιμές. Ενημερώνει τις εγγραφές μιας βάσης δεδομένων με χρήση του πρωτεύοντος κλειδιού ως αναφοράς. 1.Δημιουργήστε ένα νέο σενάριο PHP 38

2. Ξεκινήστε την κύρια συνθήκη Αφού η σελίδα και εμφανίζει και χειρίζεται τα δεδομένα της φόρμας, θα χρησιμοποιεί τη βασική συνθήκη. 3. Συμπεριλάβετε στο σενάριο τη σύνδεση με τη βάση δεδομένων και δημιουργήστε έναν πίνακα για την αποθήκευση των σφαλμάτων. Το αρχικό τμήμα του σεναρίου είναι παρόμοιο με τη φόρμα εγγραφής. 39

4. Επικυρώστε τα πεδία διεύθυνσης ηλεκτρονικού ταχυδρομείου και τρέχοντος κωδικού πρόσβασης Η διαδικασία επικύρωσης κάθε εισόδου είναι η ίδια με το σενάριο register.php 40

5. Επικυρώστε τo το νέο κωδικό πρόσβασης Και αυτός ο κώδικας είναι ίδιος με τον κώδικα του σεναρίου register.php, με τη διαφορά ότι ένας έγκυρος νέος κωδικός πρόσβασης ανατίθεται στη μεταβλητή $np επειδή η μεταβλητή $p περιέχει τον τρέχοντα κωδικό. 41

6. Αν όλοι οι έλεγχοι ολοκληρωθούν με επιτυχία, ανακτήστε τον κωδικό χρήστη (user ID). 42

7. Ενημερώστε τη βάση δεδομένων Αυτό το ερώτημα θα αλλάξει τον κωδικό πρόσβασης, χρησιμοποιώντας τη νέα τιμή που υποβλήθηκε, όπου η στήλη user_id είναι ίση με τον αριθμό που ανακτήθηκε από το προηγούμενο ερώτημα. 43

8. Ενημερώστε τη βάση δεδομένων Αν η συνάρτηση mysqli_affected_rows() επιστρέψει τον αριθμό 1 η εγγραφή έχει ενημερωθεί και εμφανίζεται ένα μήνυμα επιτυχίας. 44

9. Συμπεριλάβετε το υποσέλιδο και τερματίστε το σενάριο. 10. Ολοκληρώστε τη συνθήκη if ($sum == 1). Αν η mysqli_num_rows() δεν επιστρέψει τιμή 1, η διεύθυνση ηλεκτρονικού ταχυδρομείου και ο κωδικός πρόσβασης που υποβλήθηκαν δεν ταιριάζουν με τις τιμές του αρχείου και εμφανίζεται αυτό το μήνυμα σφάλματος. Σε αυτή την περίπτωση η φόρμα θα εμφανιστεί ξανά ώστε ο χρήστης να καταχωρίσει τα σωστά στοιχεία. 45

11. Τυπώστε τα τυχόν μηνύματα σφαλμάτων επικύρωσης. Αυτός ο όρος else εκτελέιται αν ο πίνακας $errors δεν είναι κενός. 12. Κλείστε τη σύνδεση με τη βάση δεδομένων και ολοκληρώστε τον κώδικα της PHP. 46

13. Εμφανίστε τη φόρμα 47

14. Συμπεριλάβετε το αρχείο του υποσέλιδου. 15. Αποθηκεύστε το αρχείο με το όνομα password.php στο φάκελο της τοποθεσίας. 48