• Nenhum resultado encontrado

Διαδραστική διαδικτυακή εφαρμογή για τη διαχείρηση βιβλιογραφικών δεδομένων με τη χρήση του συστήματος διαχείρησης βάσεων δεδομένων MySQL και των γλωσσών PHP και HTML

N/A
N/A
Protected

Academic year: 2023

Share "Διαδραστική διαδικτυακή εφαρμογή για τη διαχείρηση βιβλιογραφικών δεδομένων με τη χρήση του συστήματος διαχείρησης βάσεων δεδομένων MySQL και των γλωσσών PHP και HTML"

Copied!
50
0
0

Texto

(1)

ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ www.teikav.edu.gr

ν

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

^ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ MYSQL ΚΑΙ ΤΩΝ ΓΛΩΣΣΩΝ ΡΗΡ ΚΑΙ HTML

ΞΕΣΦΥΓΓΗ ΜΑΡΙΑ

ΟΚΤΩΒΡΙΟΣ 2009

ΕΠΟΠΤΗΣ ΚΑΘΗΓΗΤΗΣ

(2)

1 ΠΡΟΛΟΓΟΣ 4

2 ΕΙΣΑΓΩΓΗ 4

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

ΕΦΑΡΜΟΓΗΣ 6

3.1 PhpMyAdmin 6

3.2 Php Maker 5 7

3.3 Adobe Dreamweaver CS3 7

3.4 Adobe Photoshop CS3 extended 8

4 ΤΑ ΤΡΙΑ ΚΥΡΙΑ ΠΡΟΓΡΑΜΜΑΤΑ ΥΛΟΠΟΙΗΣΗΣ ΤΗΣ ΕΦΑΡΜΟΓΗΣ 8

4.1 Ο Apache Server 8

4.2 PHP Hypertext Preprocessor 11

4.3 Η MySQL 16

5 ΠΑΡΑΔΕΙΓΜΑ ΧΡΗΣΗΣ PHP ΚΑΙ MYSQL 17

5.1 Παράδειγμα δημιουργίας χρηστών 17

5.1.1 Λειτουργία υπενθύμισης κωδικού χρήστη 18

5.1.2 Επαλήθευση 20

5.1.3 Δυναμική επαλήθευση 23

6 Ο ΚΩΔΙΚΑΣ PHP ΚΑΙ MYSQL ΤΗΣ ΕΦΑΡΜΟΓΗΣ 25

6.1 Ο κώδικας PHP 25

6.1.1 Ο έλεγχος ταυτότητας με PHP και MySQL 25

6.1.2 Υλοποίηση του Ελέγχου Πρόσβασης 26

6.1.3 Sessions 32

6.1.4 Παράδειγμα κώδικα σελίδων αναφορών 33

6.1.5 Η ημερομηνία και ώρα εγγραφής 34

6.2 Η Βάση Δεδομένων του συστήματος 35

7 ΤΟ ΔΙΑΓΡΑΜΜΑ ΣΥΣΧΕΤΙΣΕΩΝ ΤΩΝ ΠΙΝΑΚΩΝ ΤΗΣ ΒΑΣΗΣ 37

8 Ο ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΤΗΣ ΕΦΑΡΜΟΓΗΣ 39

(3)

8.1 Εγχειρίδιο για τον καθηγητή 39

8.2 Εγχειρίδιο για τον επισκέπτη 44

8.3 Εγχειρίδιο για τον Administrator 46

9 ΕΠΙΛΟΓΟΣ 48

10 ΒΙΒΛΙΟΓΡΑΦΙΑ 49

(4)

1 Πρόλογος

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

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

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

2 Εισαγωγή

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

Η εργασία πραγματοποιήθηκε με χρήση της γλώσσας προγραμματισμού για διαδικτυακές εφαρμογές PHP. Η PHP είναι μια γλώσσα script της οποίας ο κώδικας ενσωματώνεται σε μια HTML σελίδα και εκτελείται κάθε φορά που επισκεπτόμαστε την συγκεκριμένη σελίδα. Η βάση δεδομένων δημιουργήθηκε με την MySQL.

(5)

Οι δύο αυτές τεχνολογίες συνεργάστηκαν με τον διαδικτυακό διακομιστή Apache Server.

Η διαδικτυακή αυτή εφαρμογή, διαθέτει μοντέρνο interface, εύκολα προσβάσιμο μενού και έχει δυνατότητα επέκτασης. Όσον αφορά το περιβάλλον της εφαρμογής, σχεδιάστηκε με γνώμονα την απλότητα και τη λειτουργικότητα. Κρίθηκε σκόπιμο να αποφευχθούν οι περιττές "βαριές"

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

αξιοπιστίας.

Ο κώδικας είναι σαφής και λειτουργικός και η χρήση συναρτήσεων καθιστά την εφαρμογή εύκολη στη συντήρησή της.

Η εφαρμογή είναι προσαρμοζόμενη σε οποιαδήποτε σύγχρονη βάση δεδομένων που βασίζεται στη γλώσσα SQL. Με ελάχιστες μόνο μετατροπές μπορεί να συνεργαστεί με συνέπεια, με τα μεγαλύτερα λογισμικά δημιουργίας και συντήρησης βάσεων δεδομένων παγκοσμίως. Επίσης, η εφαρμογή μπορεί να λειτουργήσει χωρίς πρόβλημα στις πλατφόρμες των λειτουργικών

συστημάτων (OS) Unix καθώς και στα λειτουργικά συστήματα της Microsoft, Windows 9x/ME/2000/XP.

Το πλέον ουσιαστικό όμως πλεονέκτημα της εφαρμογής είναι ότι λειτουργεί δυναμικά. Παρέχει πληροφορίες οι οποίες δεν βασίζονται σε στατικές HTML σελίδες και αποθηκευμένα PDF αρχεία, αλλά σε εγγραφές της βάσης δεδομένων. Η εφαρμογή που δημιουργήθηκε, συνδυάζει τη δυναμικότητα και αποδοτικότητα της PHP σε συνάρτηση με την ταχύτητα της MySQL.

(6)

3 Τα εργαλεία που χρησιμοποιήθηκαν για την ανάπτυξη της εφαρμογής

3.1 PhpMyAdmin

Το PhpMyAdmin είναι ένα εργαλείο γραμμένο σε Php το οποίο διαχειρίζεται την MySQL στο δίκτυο. Μπορεί να χειρίζεται πλήρως βάσεις δεδομένων, πίνακες, πεδία πινάκων αλλά και ολόκληρο τον MySQL Server. Υποστηρίζει 47 γλώσσες μεταξύ των οποίων και τα Ελληνικά και είναι λογισμικό ανοιχτού κώδικα. [24]

Δυνατότητες του PhpMyAdmin:

Το PhpMyAdmin μπορεί να:

• Δημιουργεί και να διαγράφει βάσεις δεδομένων

• Δημιουργεί, τροποποιεί, διαγράφει, αντιγράφει και μετονομάζει πίνακες

• Κάνει συντήρηση της βάσης

• Προσθέτει, διαγράφει και τροποποιεί πεδία πινάκων

• Εκτελεί Sql ερωτήματα, ακόμα και ομαδικά (batch)

• Διαχειρίζεται κλειδιά σε πεδία

• "Φορτώνει" αρχεία κειμένου σε πίνακες

• Δημιουργεί και διαβάζει πίνακες

• Εξάγει δεδομένα σε μορφή CVS (Concurrent Versions System- πρόγραμμα το οποίο δίνει τη δυνατότητα στον προγραμματιστή να έχουν αρχείο από διαφορετικές εκδόσεις κώδικα), Latex, XML

• Διαχειρίζεται πολλούς διακομιστές

• Διαχειρίζεται τους χρήστες MySQL και τα δικαιώματά τους

• Ελέγχει την αναφορική ακεραιότητα των δεδομένων των MyISAM (Μηχανή Αποθήκευσης) πινάκων

• Δημιουργεί PDF γραφικών του layout της βάσης δεδομένων

• Εκτελεί αναζητήσεις σε όλη τη βάση ή μέρος αυτής

(7)

• Υποστηρίζει πίνακες InnoDB (μηχανή αποθήκευσης) και ξένα κλειδιά

• Υποστηρίζει MySQLi, μια βελτιωμένη επέκταση της MySQL

3.2 Php M a k e r 5

Το PhpMaker είναι ένα ισχυρό εργαλείο(για windows) που με αυτοματοποιημένες ως επί το πλείστον λειτουργίες μπορεί να παράγει ολοκληρωμένο κώδικα php σε μικρό χρονικό διάστημα διαβάζοντας μια βάση δεδομένων MySql.

Χρησιμοποιώντας το PhpMaker, μπορούμε να δημιουργήσουμε άμεσα ιστοσελίδες που επιτρέπουν σε χρήστες να εκτελούν λειτουργίες όπως view, edit, search, add, delete ενώ είναι online. Το PhpMaker είναι σχεδιασμένο για να προσφέρει υψηλή ευελιξία, πολυάριθμες επιλογές που με την επιλογή τους μας επιτρέπουν να παράγουμε php applications σύμφωνα με τις ανάγκες μας. Οι κώδικες που παράγονται είναι καθαροί, ευθείς και εύκολοι στη διαχείριση.

3.3 Adobe Dream w eaver CS3

[16] Το Dreamweaver CS3 αποτελεί το κορυφαίο πρόγραμμα δημιουργίας website και διαδικτυακών εφαρμογών, προσφέρει δυνατότητες δημιουργίας προηγμένων γραφικών, οπτικά εργαλεία περιγράμματος, χαρακτηριστικά ανάπτυξης εφαρμογών και υποστήριξη επεξεργασίας κώδικα μέσω ενός περιβάλλοντος τεχνολογίας ανεξαρτήτου πλατφόρμας.

Με αυτό το πρόγραμμα συχνωνεύσαμε το γραφικό με το προγραμματιστικό μέρος της σελίδας μας καθώς και ρυθμίσαμε τα μεγέθη των διαφόρων πεδίων ώστε να πετύχουμε ένα πιο ομοιόμορφο οπτικό αποτέλεσμα.

(8)

3.4 Adobe Photoshop CS3 extended

[16] Το Adobe Photoshop CS3 είναι το επαγγελματικό πρότυπο στην επεξεργασία εικόναε, παρέχονταε περισσότερα από όσα θα μπορούσαμε να επιθυμούμε. Με ριζοσπαστικά δημιουργικά εργαλεία που μαε βοηθούν να επιτύχουμε εξαιρετικά αποτελέσματα, το Photoshop ενσωματώνεται με πρωτοφανή προσαρμοστικότητα στον τρόπο που δουλεύουμε.

Χρησιμοποιήσαμε το Photoshop για να δημιουργήσουμε όλα τα γραφικά τηε ιστοσελίδαε, να επεξεργαστούμε τα screenshots και τα λογότυπα για το Microsoft Word. [5]

4 Τα τρία κύρια προγράμματα υλοποίησης της εφαρμογής

4.1 Ο Apache Server

(9)

Ο Server (εξυπηρετητήε) είναι έναε υπολογιστήε που έχει τον κεντρικό έλεγχο ενόε δικτύου, παρέχονταε βασικέε υπηρεσίεε στουε χρήστεε του. Σε ένα δίκτυο ο server ελέγχει την όλη λειτουργία και για λόγουε ασφαλείαε επιτρέπει την πρόσβαση μόνο σε εξουσιοδοτημένοι χρήστεε, παραχωρώνταε τουε λειτουργίεε ανάλογα με τα δικαιώματα που έχουν. [17]

Μια κατηγορία server είναι οι web servers οι οποίοι προσφέρουν τιε ζητούμενεε ιστοσελίδεε (web pages). Οι πιο γνωστοί servers είναι ο Apache και ο IIS.

Ο Apache Web Server είναι έναε πολύ δημοφιλήε διακομιστήε διαδικτύου που διανέμεται ελεύθερα στο διαδίκτυο. Αναπτύχθηκε και συντηρείται από μια ομάδα εθελοντών που ήθελαν να υλοποιήσουν έναν εύρωστο κώδικα για διακομιστή δικτύου, που να μην είναι εμπορικόε αλλά να υποστηρίζει πολλά χαρακτηριστικά.

Ο Apache όπωε έχει αποδειχτεί είναι ο πιο γρήγοροε, σταθερόε, ασφαλήε και υποστηρίζει τα περισσότερα χαρακτηριστικά από οποιονδήποτε άλλο διακομιστή δικτύου. Ο Apache είναι εγκατεστημένοε στο 80% των διακομιστών παγκοσμίωε (πάνω από 6 εκατομμύρια διακομιστέε). Πάνω του είναι εγκατεστημένα εκατομμύρια sites που δέχονται εκατομμύρια hits καθημερινά χωρίε να παρουσιάζεται κανένα απολύτωε πρόβλημα.

Σήμερα ο Apache θεωρείται από τουε πιο σταθερούε διακομιστέε δικτύου που κυκλοφορούν και θα πρέπει να τονίσουμε ότι αρκετοί εμπορικοί διακομιστέε διαδικτύου, όπωε ο HTTP Server τηε IBM, χρησιμοποιούν τον πυρήνα του Apache. [4]

Χαρακτηριστικά του Apache 2

1. Unix treading: Υποστήριξη συστημάτων Unix με νήματα POSIX, όπου ο Apache μπορεί να "τρέχει" πολλέε διεργασίεε ταυτόχρονα.

2. Υποστήριξη πολλαπλών πρωτοκόλλων: Υποστηρίζει πιο γρήγορα και πιο σταθερά λειτουργικά όπωε BeOS, OS/2 και Windows.

3. Φίλτρα: Υποστήριξη φίλτρων που διανέμονται από και προε τουε διακομιστέε.

(10)

4. Λάθη: Τα μηνύματα λαθών μπορούν να εμφανίζονται σε διάφορες γλώσσες.

5. Απλοποιημένη παραμετροποίηση: Εχουν απλοποιηθεί κάποια directives που ως τώρα ήταν κάπως μπερδεμένα.

6. Υποστήριξη Unicode: Ο Apache 2 σε Windows NT χρησιμοποιεί μόνο utf- 8 κωδικοποίηση.

7. Κανονικές εκφράσεις: Υποστήριξη της βιβλιοθήκης PCRE δηλαδή όλες οι κανονικές εκφράσεις που υποστηρίζει η Perl 5. [14]

Λόγω της εμφάνισης ορισμένων προβλημάτων με την εγκατάσταση του Apache server σε Windows Vista καλούμαστε να κάνουμε ορισμένες ρυθμίσεις για να λειτουργεί σωστά ο διακομιστής μας.

1. Από το μενού programs επιλέγουμε Accessories, κάνουμε δεξί κλικ στο Command Prompt και επιλέγουμε Run as administrator (ίσως χρειαστεί να εισάγουμε τον κωδικό του Administrator αν είμαστε συνδεμένοι ως απλός χρήστης).

2. Με την εντολή cd μετακινούμαστε στον φάκελο που υπάρχει το αρχείο apache*.msi και πληκτρολογούμε την εντολή: msiexec /i apache*.msi

* * * Όπου apache*.msi είναι το πλήρες όνομα του αρχείου π.χ. apache_2.2.4- win32-x86-no_ssl.msi

Υπάρχει μία ακόμα λύση η οποία μας επιτρέπει να «τρέχουμε» τις εφαρμογές Mysql και Apache χωρίς προβλήματα είναι να χρησιμοποιήσουμε το XAMPP.

Εμείς χρησιμοποιήσαμε το XAMPP.

3. Ακολουθούμε τις οδηγίες της εγκατάστασης του apache

Αφού τελειώσει η εγκατάσταση θα χρειαστεί να κάνουμε κάποιες ρυθμίσεις ώστε να μπορούμε να τρέξουμε το Monitor Apache Servers και τις συντομεύσειςStart, Stop,Restart. Πηγαίνουμε > Programs -> Apache HTTP Server x.x.x -> Control Apache Server μετά κάνουμε δεξί κλικ στο Monitor

(11)

Apache Servers και επιλέγουμε properties. Κάνουμε κλικ στο Compatibility, τσεκάρουμε το Run this program in compatibility mode for: και επιλέγουμε Windows XP (Service Pack 2). Στο Privilege Level τσεκάρουμε το Run this program as an administrator. Για τις συντομεύσεις Run,Stop,Restart θα τσεκάρουμε μόνο το Run this program as an administrator από το Privilege Level.

4.2 PHP Hypertext Preprocessor

H PHP ξεκίνησε σαν hack της Perl από τον Rasmus Lerdorf το 1994 και χάρη στην εκπληκτική της ευχρηστία, την ελαστικότητα και την ισχύ έγινε το πιο δημοφιλές module του Apache. Σημειώνουμε ότι η PHP είναι case-sensitive, δηλαδή η μεταβλητή $myvar είναι διαφορετική από τη $MyVar. [19]

Επειδή η PHP δουλεύει κυρίως με ιστοσελίδες, θα χρειαστούμε έναν web server. Σχεδόν όλες οι διανομές Linux έχουν κάποια έκδοση του Apache, του πιο δημοφιλούς web server, που η εγκατάσταση του είναι συνήθως μερικά κλικς από τον διαχειριστή πακέτων της διανομής.

Η PHP είναι μια γλώσσα προγραμματισμού ειδικά για την κατασκευή δυναμικών ιστοσελίδων. Με τον όρο δυναμική εννοείται μια ιστοσελίδα που αλλάζει αυτόματα, ανάλογα με τα στοιχεία του θεατή της.

Στοιχεία όπως το λειτουργικό του σύστημα, η διεύθυνση IP του κ.ά. Η PHP χρησιμοποιείται όχι για την διακόσμηση μιας ιστοσελίδας αλλα για τον χειρισμό των λειτουργιών και εργασιών που θα διεκπεραιώνει. Συνεπώς, ο κώδικας που γράφεται για μια ιστοσελίδα σε γλώσσα PHP δεν γίνεται άμεσα αντιληπτός αλλα μετά απο την επέμβαση του θεατή στην ιστοσελίδα. Για να γίνει αυτό κατανοητό: η PHP χρησιμοποιείται ευρέως για τον χειρισμό ιστοσελίδων με δυνατότητες όπως η εγγραφή χρηστών (user registration), τα φόρουμ κ.ά. Λειτουργεί με την βοήθεια της HTML και πλέον και με την XHTML (νέα αναθεωρημένη έκδοση της HTML). Σε συνδυασμό και με την MySQL μπορεί να χρησιμοποιηθεί κάλλιστα για την διαχείρηση δεδομένων μέσα σε βάσεις. [26]

(12)

Η PHP είναι μια γλώσσα "server-side". Αυτό σημαίνει ότι ο κώδικας PHP που περιέχει μια σελίδα εκτελείται στον server (όπου είναι αποθηκευμένη η σελίδα), ενώ τα αποτελέσματα εμφανίζονται με μορφή HTML στον τελικό χρήστη. [10]

Το σχεδιάγραμμα που ακολουθεί παρουσιάζει αναλυτικά τον τρόπο με τον οποίο δουλεύει ένας web server (απαραίτητο λογισμικό για την επεξεργασία και τη λειτουργία μιας ιστοσελίδας) στον οποίο υπάρχει εγκατεστημένη η PHP.

Ο χρήστης "καλεί" μια σελίδα και ο server κάνει τις αντίστοιχες διεργασίες, για να παρουσιάσει το επιθυμητό αποτέλεσμα πίσω στο χρήστη. Μια απλή σελίδα HTML παρακάμπτει το εγκατεστημένο λογισμικό της PHP στον web server και εμφανίζεται όπως ακριβώς είναι στο χρήστη.

Το πρώτο script σε PHP

Το πρώτο μας script είναι το παραδοσιακό ’Hello World’. Ανοίγουμε ένα κειμενογράφο, γράφουμε τη γραμμή:

<?php echo 'Hello, World!'; ?>;

και αποθηκεύουμε το αρχείο με το όνομα hello.php στο φάκελο του localhost (που συνήθως είναι το /var/www). Κατόπιν, ανοίγουμε έναν browser και δίνουμε το URL:

http://localhost/hello.php

Θα πρέπει να εμφανιστεί το μήνυμα Hello, World. Αν όχι, τότε θα πρέπει να δούμε αν είναι όλα ΟΚ με τον Apache. Ας δούμε όμως τι σημαίνει ο κώδικας που γράψαμε. Στην αρχή, υπάρχει ένα <?php και στο τέλος ένα ?>. Αυτά είναι τα ’σημάδια’ που δείχνουν ότι ’μπαίνουμε’ και ’βγαίνουμε’ αντίστοιχα από την κατάσταση PHP . Δηλαδή ότι γράψουμε ανάμεσα στα <?php και ?> θεωρείται

(13)

κώδικας της PHP και εκτελείται ως τέτοιος. Μετά το <?php, υπάρχει η echo, μια συνάρτηση που τυπώνει δεδομένα (κείμενο, μεταβλητές κτλ) κατευθείαν στην έξοδο. Οτιδήποτε βρίσκεται εκτός της 'κατάστασης PHP' στέλνεται κατευθείαν στον Apache (ή την τυπική έξοδο). Επιπλέον δεν υπάρχει όριο στο πόσες φορές μπορούμε να μπούμε και να βγούμε από την κατάσταση PHP σε ένα σκριπτάκι. Να ένα παράδειγμα:

<?php echo 'Hello,'; ?> World! [19]

Μεταβλητές

Στην PHP, οι μεταβλητές δεν δηλώνονται στην αρχή, αλλά δημιουργούνται όταν τις χρησιμοποιούμε. Έτσι, οι μεταβλητές δεν έχουν τύπο, δηλαδή μπορούμε να αλλάξουμε μια integer (ακέραιος) σε string (συμβολοσειρά), μετά σε double και ξανά σε string. Η μόνη απαίτηση είναι οι μεταβλητές να ξεκινούν υποχρεωτικά με $. Στο παρακάτω παράδειγμα, βλέπουμε τη συνένωση δύο strings μέσω της αντίστοιχης συνάρτησης-τελεία (.):

<?php

$String1 = 'Hello, ';

$String2 = 'World';

echo $String1 . $String2;

?>

Αλληλεπίδραση

Τα δεδομένα που εισάγει ένας χρήστης σε μία φόρμα HTML (π.χ. ένα πεδίο κειμένου) είναι γενικώς επίφοβα, γι' αυτό η PHP δημιουργεί μερικές 'super global' μεταβλητές, μία για κάθε είδος αιτήματος HTTP. Έτσι οι μεταβλητές που

εισάγονται από τον χρήστη σε μια φόρμα μέσω του HTTP post μπαίνουν στην

$_POST, εκείνες που περνάνε μέσω του HTTP get αποθηκεύονται στην $_GET ενώ ένα ανάμεικτο σύνολο μπαίνει στην $_REQUEST. Να μια απλή φόρμα, test.html:

(14)

<html>

<form method='post' action='form.php'>

Enter your age: <input type='text' name='age' />

<input type='submit' />

</form>

</html>

Και να το script τηε PHP, που πρέπει να σώσουμε ωε form.php:

<?php

echo 'Your age is:' . $_POST['age'];

>

Στην HTML σελίδα έχουμε μια φόρμα, τηε οποίαε το action 'δείχνει' στο σκριπτάκι τηε PHP, και στην οποία περνάμε μόνο ένα πεδίο-μεταβλητή, την ηλικία ('age'). Τα περιεχόμενα αυτού του πεδίου είναι διαθέσιμα στο σκριπτάκι από τη μεταβλητή $_POST['age'] και τα ξανατυπώνουμε πίσω στο χρήστη. Αντιγράφουμε τα δύο αρχεία στο φάκελο του Apache στο σύστημά μαε και μετά από τον browser πηγαίνουμε στο http://localhost/test.html. Θα πρέπει να εμφανιστεί ένα πεδίο κειμένου που μαε ρωτά για την ηλικία μαε.

Χρήση arrays

Ένα array είναι μια 'σειρά' (ή πίνακαε) δεδομένων αποθηκευμένα σε μια μεταβλητή. Για παράδειγμα, μπορεί να έχουμε ένα array επτά τιμών, μία για κάθε ημέρα τηε εβδομάδαε ή ένα array με τα ονόματα των παικτών μιας ομάδαε. Τα arrays στην PHP δουλεύουν σαν κανονικέε μεταβλητέε.

Υπάρχουν δύο τρόποι για να φτιάξουμε ένα array:

<?php

$FirstArray = new arrayO;

ή

$SecondArray[] = 'Blue';

$SecondArray[] = 'Green';

?>

(15)

Ο πρώτος τρόπος λέγεται explicit και μας δίνει ένα κενό array, στο οποίο πρέπει μετά να εισάγουμε χειροκίνητα τα δεδομένα. Με το δεύτερο τρόπο, δημιουργούμε το $SecondArray απλώς προσθέτοντάς του στοιχεία με τον τελεστή []. Με αυτόν τον τρόπο μπορούμε να φτιάξουμε όσα arrays θέλουμε ανεξαρτήτως τύπου (strings, integers, κτλ). Τώρα το $SecondArray περιέχει δύο στοιχεία, το 'Blue' με δείκτη 0 και το 'Green' με δείκτη 1. Αυτά τα τυπώνουμε με την echo() και τα $SecondArray[0] και $SecondArray[1]

αντίστοιχα. Για ευκολία μπορούμε να χρησιμοποιήσουμε associative arrays χωρίς αριθμούς ως δείκτες. Δηλαδή, αντί για δείκτες 0 και 1 θα μπορούσαμε να βάζαμε λέξεις, π.χ. jason, γιατί το $MyArray['jason'] είναι πιο ευνόητο από το $MyArray[13].

Ορισμένα tips

Δύο πλεονεκτήματα της PHP σε σχέση με άλλες γλώσσες είναι ότι έχει απίστευτες δυνατότητες για βάσεις δεδομένων (ΒΔ) αλλά και μια μεγάλη συλλογή από έτοιμες και χρησιμότατες συναρτήσεις. Θα δούμε μερικές από τις βασικότερες συναρτήσεις της PHP. Καταρχήν, η isset() επιστρέφει true (αλήθεια) αν έχει οριστεί κάποια μεταβλητή στο αντίστοιχο context (αυτό δεν σημαίνει ότι η μεταβλητή πρέπει να έχει και κάποια τιμή). Τώρα μπορούμε να ξαναγράψουμε το σκριπτάκι για την ηλικία σε ένα μοναδικό αρχείο ως εξής:

<html>

<?php

if (isset($_POST['age·])) { echo 'Your age is: ' .

$_POST['age'];

} else {

?>

<br>

<form method='post' action='form.php'>

Enter your age: <input type='text' name='age' />

<input type='submit' />

</form>

<?php

(16)

}

?>

</html>

Η συνύπαρξη HTML και PHP κώδικα στο ίδιο αρχείο είναι συνήθης τακτική.

Στο παράδειγμα, φαίνεται ότι ελέγχουμε το super global $_POST για να διαπιστώσουμε αν έχει οριστεί η μεταβλητή age και αν όχι τυπώνουμε ξανά την φόρμα. Ο τρόπος λειτουργίας παραμένει ίδιος.

Δύο συναρτήσεις που είναι ιδιαίτερα χρήσιμες είναι οι explode() και implode(). Η πρώτη παίρνει ένα string που έχει κάποιο σύμβολο διαχωρισμού (π.χ. την κόμα) και παράγει ένα array από τα μεμονωμένα στοιχεία. Για παράδειγμα, το 'this,is,a,test' θα γίνει ένα array με τα εξής τέσσερα στοιχεία: 'this', 'is', 'a', και 'test'. Η implode() κάνει το εντελώς αντίθετο, δηλαδή παίρνει ένα array οσωνδήποτε στοιχείων και παράγει ένα string με σύμβολα διαχωρισμού. Για να τα δούμε όλα αυτά σε ένα παράδειγμα, μπορούμε να μετατρέψουμε το 'comma,separated,string' στο 'commaIseparatedlstring' με τον εξής κώδικα:

<html>

<?php

$string = 'comma,separated,string';

echo $string;

?>

<p>

<?php

$exploded = explode(',', $string);

$imploded = implode('!', $exploded);

echo $imploded;

?>

</html> [7]

4.3 Η MySQL

Η MySQL βάση δεδομένων server είναι η πιο δημοφιλήε βάση δεδομένων ανοιχτού κώδικα διακομιστή. Πάνω από έξι εκατομμύρια εγκαταστάσειε χρήση τηε βάσηε δεδομένων MySQL server στην εξουσία υψηλού όγκου web

(17)

sites και των άλλων κρίσιμων επιχειρηματικών αποστολών των συστημάτων, συμπεριλαμβανομένων των ηγετών της βιομηχανίας, όπως η NASA, το Yahoo, το Associated Press (AP), SUZUKI, και Sabre Holdings. [27]

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

MySQL προσφέρει πολλά πλεονεκτήματα:

• Αξιοπιστία και απόδοση.

• Ευκολία χρήσης και ανάπτυξης. Η MySQL αρχιτεκτονική καθιστά εξαιρετικά γρήγορη την προσαρμογή.

• Ελευθερία από Πλατφόρμα Lock-in. Παρέχοντας εύκολη πρόσβαση στον πηγαίο κώδικα, MySQL AB προσέγγιση εξασφαλίζει την ελευθερία της.

• Cross-Υποστήριξη Πλατφόρμας. Η MySQL είναι διαθέσιμη σε πάνω από είκοσι διαφορετικές πλατφόρμες, συμπεριλαμβανομένων όλων των μεγάλων διανομέων Linux, Unix, Microsoft Windows και Mac OS X.

• Εκατομμύρια εκπαιδευμένοι και πιστοποιημένοι Developers. Η MySQL είναι η πιο δημοφιλής βάση δεδομένων ανοικτού κώδικα. Αυτό καθιστά εύκολο να βρεθούν knowledgable και έμπειροι database administrators και προγραμματιστές.

5 Παράδειγμα χρήση$ PHP και MySQL

5.1 Παράδειγμα δημιουργίας χρηστών

Από την έκδοση 4, η PHP έχει το πλεονέκτημα να υποστηρίζει ενδογενώς τη MySQL. Αυτό ήταν το αποτέλεσμα πολλών συναντήσεων που είχαν οι δύο ομάδες ανάπτυξης με σκοπό να ενισχύσουν την ήδη πολύ καλή σχέση μεταξύ των δύο έργων. Το αποτέλεσμα αυτής της ολοκλήρωσης αλλά και των πολλών πλεονεκτημάτων της MySQL είναι ότι η τελευταία είναι σήμερα με διαφορά το πιο δημοφιλές σύστημα διαχείρισης βάσης δεδομένων (ΒΔ) για

(18)

χρήση με την PHP. Στα παρακάτω, υποθέτουμε ότι έχουμε δημιουργήσει ένα χρήστη 'php' και του έχουμε δώσει τον κωδικό 'alm65z'. Ο τρόπος δημιουργίας χρηστών στη MySQL περιγράφεται στην τεκμηρίωσή της. Το script μας τώρα γίνεται:

<?php

mysql_connect("localhost", "php", "alm65z");

mysql_select_db("phpdb‘);

$result = mysql_query("select * from users where id = '$ID' and password = '$pass';");

if (mysql_num_rows($result)) { echo "Επιτυχής Ταυτοποίηση!";

} else {

echo "Λανθασμένο όνομα χρήστη και κωδικός!";

}

?>

Οι πρώτες δύο γραμμές κάνουν τη σύνδεση με το MySQL server στο τοπικό μηχάνημα (localhost) χρησιμοποιώντας όνομα χρήστη 'php' και κωδικό 'alm65z'. Η υποβολή ενός ερωτήματος (query) στη MySQL γίνεται με τη συνάρτηση mysql_query(). Αυτή επιστρέφει μια αναφορά (στη μεταβλητή

$result) σε όλες τις γραμμές της ΒΔ που ταιριάζουν με το ερώτημά μας. Μόλις έχουμε την αναφορά μπορούμε να κάνουμε διάφορες ενέργειες σε αυτήν μέσω συναρτήσεων για να πάρουμε περισσότερες πληροφορίες από τα δεδομένα μας. Στο παραπάνω παράδειγμα καλούμε την mysql_num_rows().

Η τελευταία επιστρέφει τον αριθμό των γραμμών που περιέχει η αναφορά, δηλαδή τον αριθμό των γραμμών που ταιριάζουν με το ερώτημά μας. Η διακλάδωση if μας εξασφαλίζει ότι θα τυπωθεί το μήνυμα επιτυχίας στην περίπτωση που υπάρχει τουλάχιστον μια γραμμή στα δεδομένα που να ταιριάζει με το ερώτημά μας (το όνομα χρήστη και τον κωδικό).

5.1.1 Λειτουργία υπ ενθύμισ α κωδικού χρήστη

H PHP υποστηρίζει πολλές ακόμα ΒΔ, όπως την PostgreSQL, την Oracle και το MS SQL Server. Μπορούμε να υποβάλουμε ένα ερώτημα στην PostgreSQL αλλάζοντας τη συνάρτηση mysql_query() με την pg_query() και να

(19)

μετρήσουμε ns γραμμές που θα επιστρέψει με την pg_num_rows(). As δούμε όμω5 ένα ακόμα παράδειγμα αλληλεπίδρασης με ΒΔ. Αυτό λειτουργεί ως υπενθύμιση του κωδικού ενός χρήστη:

<?php

i f (isset($_POST['email'])) {

mysql_connect("localhost", "php", "alm 65z");

mysql_select_db("phpdb ");

$EmailToCheck = $_POST['email'];

$result = mysql_query("select username, password from users where emailaddress = '$EmailToCheck';");

i f (mysql_num_rows($result)) {

$r = mysql_fetch_array($result);

$TheirUser = $r['username'];

$TheirPW = $r['password'];

mail($EmailToCheck, "Password Reminder", "Your username is $TheirUser, and your password is $TheirPW.", "From: password@somesite.com");

echo "Your info have been emailed to you a t $EmailToCheck";

} else {

echo "We do n o t have an account for th a t email address!";

} } else {

?>

Για να ανακτήσετε το όνομα χρήστη και τον κωδικό σας, πρέπει να δώσετε τη διεύθυνση email σας.

<form method="post">

Email Address: <input type="text" name="email" /> < b r />

<input type="submit" />

</form >

<?php }

?>

Τα νέα στοιχεία του παραδείγματος βρίσκονται κοντά στη συνάρτηση mysql_fetch_array(). Επειδή ένα ερώτημα στη MySQL μπορεί να επιστρέψει πολλές γραμμές, η PHP μας επιτρέπει να χειριστούμε κάθε γραμμή ανεξάρτητα. Για παράδειγμα, η mysql_fetch_row() παίρνει την επόμενη γραμμή ξεκινώντας από την πρώτη, διαβάζει τις τιμές σε όλα τα πεδία της και τα τοποθετεί σε ένα array (εδώ το $r). Έτσι τα στοιχεία $r['username'] και

(20)

$r['password'] αποκτούν αυτόματα xis τιμές του ονόματος χρήστη και του κωδικού που ταιριάζει με την διεύθυνση email που έδωσε ο χρήστης.

5.1.2 Επαλήθευση

Απ' ότι είδαμε μέχρι εδώ, καταλαβαίνει κανείς ό,τι η PHP είναι μια γλώσσα που επιτρέπει ακόμα και στον αρχάριο να γράψει απλά scripts σε πολύ μικρό χρόνο. Παρακάτω θα χρησιμοποιήσουμε ό,τι μάθαμε για να κάνουμε αναγνώριση και επαλήθευση (authentication) χρήστη μέσω HTTP.

Η επαλήθευση HTTP παραδοσιακά έχει τη μορφή διάσπαρτων αρχείων .htaccess που βρίσκονται σε όσους φακέλους θέλουμε να κρατήσουμε απροσπέλαστους. Ένα τυπικό αρχείο .htaccess σε συνδυασμό με ένα αρχείο .htpasswd περιέχει πληροφορίες για τους χρήστες που έχουν δικαίωμα πρόσβασης σε ένα φάκελο. Αν και ο Apache επιτρέπει την προσαρμογή των δικαιωμάτων πρόσβασης, αυτή η μέθοδος δεν είναι βολική. Κανείς δεν θέλει να επεξεργάζεται αρχεία κάθε φορά που προσθέτει χρήστες.

Η επαλήθευση HTTP συνίσταται κυρίως στην αποστολή ειδικών HTTP headers στον "πελάτη’ (client) με τους οποίους του ζητείται να αποστείλει στοιχεία πρόσβασης, και είναι αρκετά εύκολη στην υλοποίηση με PHP αρκεί να την έχουμε εγκαταστήσει ως module του Apache. Για να δούμε ένα βασικό παράδειγμα επαλήθευσης, πρέπει να δημιουργήσουμε το αρχείο ’auth.php’

το οποίο θα περιέχει τα εξής:

<?php

if (!isset($_SERVER['PHP_AUTH_USER'])) {

header('WWW-Authenticate: Basic realm="LXF Private Area”');

header('HTTP/1.0 401 Unauthorized');

/ / Αν δεν δώσει στοιχεία

echo "Λυπούμαστε. Πρέπει να είστε μέλος για να δείτε αυτή την ιδιωτική περιοχή!\η";

exit;

} else {

/ / Αν δώσει στοιχεία

echo "Καλωσήλθατε στην περιοχή,

{$_SERVER['PHP_AUTH_USER']} - χρησιμοποιήσατε το {$_SERVER['PHP_AUTH_PW']} ως κωδικό.";

(21)

}

?>

Οι αγκύλες (τα σύμβολα { και }) χρησιμοποιούνται μέσα στην τελευταία δήλωση echo γιατί με αυτήν τυπώνουμε μια τιμή ενός array και οι αγκύλες λένε στην PHP ότι θα πρέπει να χειριστεί το $_SERVER['PHP_AUTH_USER'] σαν μια μεταβλητή array που πρέπει να την αντικαταστήσει με την τιμή της. Για να ξεκινήσουμε την διαδικασία, στέλνουμε δύο HTTP headers χρησιμοποιώντας τη συνάρτηση header() της PHP. Με την header() μπορούμε να στείλουμε οποιαδήποτε header θέλουμε αρκεί να το κάνουμε πριν την αποστολή κώδικα HTML. To WWW-Authenticate μας επιτρέπει να ορίσουμε μια περιοχή όπου η πρόσβαση είναι περιορισμένη. Αυτή μπορεί να είναι, λόγου χάρη, μια περιοχή για μέλη μόνο με τίτλο "Members Area". Το όνομα της περιοχής εμφανίζεται στους χρήστες όταν καλούνται να δώσουν όνομα μέλους (χρήστη) και τον κωδικό τους. Η δεύτερη header() στέλνει τον HTTP κωδικό κατάστασης "401" που σημαίνει απλά "δεν έχετε πρόσβαση". Αυτό συνήθως σημαίνει ότι είτε δεν δόθηκε όνομα χρήστη και κωδικός είτε δεν είναι σωστά. Έτσι, ενώ η WWW Authenticate λέει στον browser τι χρειάζεται για να ταυτοποιηθεί ο χρήστης ως μέλος, η 401 του απαγορεύει την πρόσβαση και φυσικά χρειάζονται και οι δύο για σωστή επαλήθευση. Εάν ο χρήστης πατήσει "Cancel" θα πρέπει να εμφανιστεί κάτι άλλο και όχι μια απλή κενή ιστοσελίδα. Στο παραπάνω παράδειγμα, εμείς έχουμε βάλει τη γραμμή echo() που του λέει "Λυπούμαστε. Πρέπει να είστε μέλος...". Η τελευταία δήλωση echo, "Καλωσήλθατε στην περιοχή" αφορά όσους επαληθεύτηκαν επιτυχώς.

Προς το παρόν, αρκεί να δώσει κανείς οποιοδήποτε όνομα και κωδικό για να περάσει την επαλήθευση, αφού δεν ελέγχουμε τι ακριβώς δίνει!

if ( !isset($ SERVERf'PHP AUTH USER'!)) {

Η γραμμή αυτή είναι ο πυρήνας της επαλήθευσης με PHP. Όταν οι χρήστες δίνουν όνομα και κωδικό, η PHP τα αποθηκεύει στις μεταβλητές

$_SERVER['PHP_AUTH_USER'] και

$_SERVER['PHP_AUTH_PW'] αντίστοιχα. Ελέγχοντας αν έχει οριστεί (isset) η

(22)

$_SERVER['PHP_AUTH_USER'] είναι σαν να λέμε "Εδωσε ο χρήστηε το όνομά του;" Αν όχι, τότε στέλνουμε ένα αίτημα επαλήθευσή με την WWWAuthenticate και τελειώνουμε το script. Όταν οι επισκέπτεε δώσουν όνομα και κωδικό, τότε το script ξεκινά ξανά. Αυτή τη φορά η δήλωση if αληθεύει και κάνει echo το μήνυμα καλωσορίσματοε. Τα περισσότερα sites θα θέλουν φυσικά να έχουν κάποιο τρόπο ελέγχου του ονόματοε χρήστη και του κωδικού του για να έχει αξία η επαλήθευση. Γι' αυτό αλλάζουμε το script μαε προσθέτοντάε του έναν απλό έλεγχο των πληροφοριών:

<?php

if (!isset($_SERVER['PHP_AUTH_USER'])) {

header('WWW-Authenticate: Basic realm=\"LXF Private AreaV");

header('HTTP/1.0 401 Unauthorized');

echo "Λυπούμαι. Δεν υπάρχει τέτοιος χρήστης.\π";

exit;

} else {

if (($_SERVER['PHP_AUTH_USER'] == 'lxf') &&

($_SERVER['PHP_AUTH_PW'] == 'bestseller')) { echo "Καλωσήλθατε στην ιδιωτική περιοχή!";

} else {

header('WWW-Authenticate: Basic realm="LXF Private Area"');

header('HTTP/1.0 401 Unauthorized');

echo "Λυπούμαι. Δεν υπάρχει τέτοιος χρήστης.\π'^χΚ;

} }

?>

Ο παραπάνω κώδικαε επιτρέπει την πρόσβαση μόνο στουε χρήστεε με όνομα 'lxf' και κωδικό 'bestseller'. Έχουμε δύο συνθήκεε συνδυαζόμενεε με ένα λογικό ΚΑΙ (&&) που σημαίνει ότι η δήλωση if είναι αληθήε μόνο αν και το όνομα είναι 'lxf' και ο κωδικόε είναι 'bestseller'. Το σύστημά μαε είναι πολύ καλύτερο τώρα, αλλά θα πρέπει να γράφουμε μέσα στον κώδικα τα ονόματα των χρηστών και τουε κωδικούε τουε, πράγμα ασύμφορο.

(23)

5.1.3 Δυναμική επαλήθευση

Μια πολύ καλύτερη μέθοδος επαλήθευσης των χρηστών είναι να συγκρίνουμε τα στοιχεία τους με έναν πίνακα μελών μιας Βάσης Δεδομένων (ΒΔ). Αποθηκεύοντας όλα τα δεδομένα σε μία ΒΔ, μπορούμε εύκολα να προσθέτουμε, να τροποποιούμε και να αφαιρούμε την πρόσβαση από τους χρήστες χρησιμοποιώντας απλές PHP ιστοσελίδες και λίγες εντολές SQL. Στα επόμενα άρθρα θα δούμε περισσότερα για τις ΒΔ, αλλά προς το παρόν ας δούμε ένα απλό παράδειγμα για να κάνουμε πολύ πιο καλή την επαλήθευση μέσω SQL. Φυσικά θα πρέπει να έχουμε εγκαταστήσει τη MySQL στο σύστημά μας.

Λοιπόν, στο prompt της MySQL δίνουμε το εξής ερώτημα με το οποίο δημιουργείται ο απαραίτητος πίνακας που θα κρατά τα στοιχεία των χρηστών- μελών:

CREATE TABLE userauth (ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Username VARCHAR(30), Password VARCHAR(30));

Η εντολή αυτή δημιουργεί έναν πίνακα με όνομα "userauth' που περιέχει τρία πεδία δεδομένων σε κάθε γραμμή: έναν ακέραιο ID και τα μεταβλητού μεγέθους πεδία χαρακτήρων "Username" και "Password" , δηλαδή ό,τι χρειαζόμαστε για να επαληθεύουμε τους χρήστες. Το ID το έχουμε βάλει για να αναφερόμαστε σε κάθε ξεχωριστή γραμμή. Έτσι μπορούμε να αναφερόμαστε σε έναν έγκυρο χρήστη με τον αριθμό της γραμμής παρά με το όνομα και τον κωδικό του. Για ευκολία, θα επιτρέψουμε στους χρήστες να προσθέτουν τους εαυτούς τους στον πίνακα επαλήθευσης. Δημιουργούμε λοιπόν το αρχείο 'addauth.php' που θα έχει τον εξής κώδικα:

<html>

<body>

<?php

if (isset($_POST['username'])) {

mysql_connect("localhost", "<username>", "<password>");

mysql_select_db("lxf");

mysql_query("INSERT INTO userauth (Username, Password) VALUES

({$_POST['username']}, {$_POST['password']});");

(24)

echo "Welcome to the system, {$_POST['username']}!";

?>

<?php } else { ?>

<form method="post" action="addauth.php">

Username: <input type="text" name="username" /><br />

Password: <input type="password" name="password" /><br />

<input type="submit" value=" Add User ">

</form>

<?php } ?>

</body>

</html>

Σημειώνουμε ότι στο παράδειγμα χρησιμοποιούμε τη βάση δεδομένων "lxf".

Θα πρέπει λοιπόν να υπάρχει αυτή η ΒΔ, την οποία δημιουργούμε με την SQL εντολή create database lxf; από το prompt τηε MySQL. Με κλήση στο mysq

L

query

O

στην αρχή του script, εισάγουμε το νέο ζευγάρι στοιχείων (όνομα και κωδικό) στον πίνακα και στο πελάτη στέλνεται ένα μικρό μήνυμα επιβεβαίωσή. Αν τρέξουμε το script, μπορούμε να παρακολουθούμε τις αλλαγέε που κάνει αυτό στον πίνακα userauth τηε βάσηε lxf από το prompt τηε MySQL δίνονταε απλά την εντολή: SELECT * FROM userauth;

Τώρα που οι χρήστεε μπορούν δυναμικά να προστίθενται με το addauth.php, μπορούμε να τροποποιήσουμε το αρχικό σκριπτάκι auth.php για να ελέγχουμε τα στοιχεία που εισάγει κάθε επισκέπτηε σε σχέση με αυτά που υπάρχουν στη ΒΔ. Γι' αυτό τροποποιούμε την παρακάτω γραμμή

if (($_SERVER['PHP_AUTH_USER'] == 'lxf') && ($_SERVER['PHP_AUTH_PW'] ==

'bestseller')) {

ως εξής:

mysql_connect("localhostM,"<yourmysqlusemame>",

"<yourmysqlpassword>");

mysql_select_db("lxf");

$result = mysqLqueryCSELECT ID FROM userauth WHERE Username='{$_SERVER['PHP_AUTH_USER']}'AND

Password='{$_SERVER['PHP_AUTH_PW']}';");

if (mysql_num_rows($result)) {

(25)

Αντί να συγκρίνουμε τα εισαχθέντα από το χρήστη στοιχεία (όνομα και κωδικό) με δεδομένα που έχουμε μέσα στον κώδικα του script, ελέγχουμε τώρα αν υπάρχουν αυτά στον πίνακα userauth. Αν η συνάρτηση mysql_num_rows($result) επιστρέψει τουλάχιστον μία γραμμή του πίνακα, τότε υπάρχει τουλάχιστον ένα μέλος με τα στοιχεία που δόθηκαν και μπορούμε να επιτρέψουμε την πρόσβαση.

6 Ο κώδικας PHP και MySQL της εφαρμογής

6.1 Ο κώδικας PHP

Όλα τα αρχεία που αποτελούν την εφαρμογή είναι γραμμένα σε κώδικα HTML και PHP. [20]

Παρακάτω, ακολουθεί μία αναλυτική αναφορά σε ορισμένα επιλεγμένα σημεία του κώδικα PHP έτσι ώστε να επεξηγήσουμε καλύτερα την διαδικασία σύνδεσης της εφαρμογής με τη βάση δεδομένων.

6.1.1 Ο έλεγχος ΐα υ ΐό ΐη ΐα ς με PHP και MySQL

Πολλές Web τοποθεσίες παρέχουν ελκυστικούς τρόπους να κάνουν τους χρήστες να παρέχουν τις πληροφορίες τους. Η εφημερίδα New Yorl Times (http://wwwnytimes.com), δίνει τα περιεχόμενά της δωρεάν, αλλά μόνο σε άτομα που θέλουν να παρέχουν πληροφορίες, όπως το όνομα, το φύλο και το συνολικό εισόδημά τους. Η τοποθεσία συζητήσεων και νέων Slashdot (http://www.slashdot.org), επιτρέπει σε εγγεγραμμένους χρήστες να συμμετέχουν σε συζητήσεις με ψευδώνυμα και να προσαρμόζουν το περιβάλλον που χρησιμοποιούν. Οι περισσότερες τοποθεσίες ηλεκτρονικού εμπορίου καταγράφουν τις πληροφορίες των πελατών τους όταν κάνουν την πρώτη τους παραγγελία. Αυτό σημαίνει ότι ένας πελάτης δεν χρειάζεται να πληκτρολογεί τις πληροφορίες του κάθε φορά. [23]

(26)

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

Η συνηθισμένη μέθοδοε ελέγχου ταυτότηταε που χρησιμοποιείται σε Web τοποθεσίεε, είναι να ζητάμε από τουε επισκέπτεε να εισάγουν ένα μοναδικό όνομα σύνδεσηε και ένα κωδικό πρόσβασηε. Ο έλεγχοε ταυτότηταε συνήθωε χρησιμοποιείται για να επιτρέπει ή να μην επιτρέπει πρόσβαση σε συγκεκριμένεε σελίδεε ή πόρουε, αλλά μπορεί να είναι προαιρετικόε ή να χρησιμοποιείται για άλλουε σκοπούε, όπωε για λόγουε προσαρμογήε.

6.1.2 Υλοποίηση του Ελέγχου Πρόσβασης

Ο κώδικας που φαίνεται παρακάτω θα μας δώσει έναν απλό μηχανισμό ελέγχου ταυτότητας, που επιτρέπει στους πιστοποιημένους χρήστες να δουν μία σελίδα. [23]

<?php

/ * τσεκάρει το script εισόδου, που υπάρχει στο db_connect.php. * /

@(session_start());

(27)

if (!isset($_SESSION['usemame']) || !isset($_SESSION['password'])) {

$logged_in = 0;

return;

} else {

/ / Το $_SESSION['password'] θα είναι κρυπτογραφημένο.

if(!get_magic_quotes_gpc()) {

$_SESSION['username'] = addslashes($_SESSION['username']);

}

/ / addslashes στο session όνομα χρήστη πριν χρησιμοποιηθεί στο query.

@($pass = $db_object->query("SELECT password FROM users WHERE username

= M,.$_SESSION['username']...));

if(DB::isError($pass) || $pass->numRows() != 1) {

$logged_in = 0;

unset($_SESSION['username']);

unset($_SESSION['password']);

/ / kill incorrect session variables.

}

$db_pass = $pass->fetchRow();

/ / κρυπτογραφούμε τον κωδικό από την βάση

//$db_pass['password'], stripslashes() για κάθε περίπτωση:

$db_pass['password'] = stripslashes($db_pass['password']);

$_SESSION['password'] = stripslashes($_SESSION['password']);

//συγκρίνουμε:

if($_SESSION['password'] == $db_pass['password']) { / / valid password for username

$logged_in = 1; / / they have correct info / / in session variables.

} else {

$logged_in = 0;

(28)

unset($_SESSION['username']);

unset($_SESSION['password']);

} }

;;// κάνουμε kill σε λανθασμένα session variables

/ / καθαρισμός

unset($db_pass['password']);

$_SESSION['username'] = stripslashes($_SESSION['username']);

?>

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

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

Για παράδειγμα παρακάτω γίνεται παρουσίαση του κώδικα για τη διαγραφή μέλουε από τον administrator.

<?php

require '../db_connect.php';

?>

<?php require_once('../Connections/sindesi.php'); extract($_GET); ?>

<?php

mysql_select_db($database_sindesi, $sindesi);

$query_Recordset1 = "SELECT * FROM users";

$Recordset1 = mysql_query($query_Recordset1, $sindesi) or die(mysql_errorO);

$row_Recordset1 = mysql_fetch_assoc($Recordset1);

Referências

Documentos relacionados

Με την SQL μτιορούμε: • να δημιουργήσουμε μια βάση δεδομένων και τους πίνακές της με τα αντίστοιχα τιεδία, • να καταχωρήσουμε δεδομένα στους πίνακες, • να τροποποιήσουμε • να