ΜΕΡΟΣ 4 ο ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ. Μεγγούδης Ναούµ ΑΕΜ 509

Σχετικά έγγραφα
Α.Τ.Ε.Ι. ΚΑΒΑΛΑΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Σχολή Θετικών Επιστηµών Τµήµα Πληροφορικής ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ ΙΑΧΕΙΡΙΣΗΣ

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Τεχνικός Εφαρμογών Πληροφορικής

Βασικές Έννοιες Web Εφαρμογών

Περιεχόμενα. Πρόλογος... xiii

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

Α. Ερωτήσεις Ανάπτυξης

Αρχιτεκτονική πελάτη-εξυπηρέτη Οι διεργασίες που εκτελούνται στο δίκτυο είναι είτε πελάτες (clients) είτε εξυπηρέτες (servers). Εξυπηρέτης: παθητικός,

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

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο


Γλώσσες Σήµανσης (Markup Languages) Τεχνολογία ιαδικτύου και Ηλεκτρονικό Εµπόριο

Πληροφορική Τμήμα Σχεδιασμού & Τεχνολογίας Ξύλου & Επίπλου Αντώνιος Καραγεώργος Ευανθία Τσιλιχρήστου. Μάθημα 5 ο Τεχνολογίες Διαδικτύου: HTML I

ΟΙΚΟΝΟΜΙΚΗ ΠΡΟΣΦΟΡΑ ΣΧΕ ΙΑΣΗΣ ΚΑΙ ΚΑΤΑΣΚΕΥΗΣ web εφαρµογής - ηλεκτρονικού κατατήµατος για έξυπνα κινητά

Προγραμματισμός διαδικτυακών εφαρμογών με PHP

Εργαλεία ανάπτυξης εφαρμογών internet Ι

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112

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

Επιµέλεια Θοδωρής Πιερράτος

Κεφάλαιο 6 ο. Διαχείριση στοιχείων λογισμικού

ΟΙΚΟΝΟΜΙΚΗ ΠΡΟΣΦΟΡΑ ΣΧΕ ΙΑΣΗΣ ΚΑΙ ΚΑΤΑΣΚΕΥΗΣ ΙΑ ΙΚΤΥΑΚΟΥ ΠΛΗΡΟΦΟΡΙΑΚΟΎ ΣΥΣΤΗΜΑΤΟΣ. Τρίτη, 7 Φεβρουαρίου 2012

Τεχνολογίες Διαδικτύου. Server Side Scripting I PHP

ΜΑΘΗΜΑ: Εργαλεία Ανάπτυξης εφαρμογών internet.

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΜΕ ΧΡΗΣΗ PHP

Απόσυρσης Παλαιού Εξοπλισµού Η/Υ του ΑΤΕΙΘ»

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED σχεδιασμός ιστοσελίδας ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

ΛΟΓΙΣΜΙΚΟ (software)

Λιβανός Γιώργος Εξάμηνο 2017Β

Μέρος Ι: Εγκατάσταση και ιαμόρφωση των MySQL, Apache και PHP

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

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

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

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

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

ΤΕΧΝΟΛΟΓΙΕΣ ΣΧΕΔΙΑΣΗΣ ΔΙΑΔΙΚΤΥΑΚΟΥ ΤΟΠΟΥ (Web Site Design Technologies)

Διαδίκτυο: Ιστορία, Δομή, Υπηρεσίες

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Εφαρµογή: Σύστηµα ιαχείρισης ιαδικτυακού Περίπτερου / Ιστοσελίδας στον διαδικτυακό τόπο kalliergea.gr

Σχεδιασµός βασισµένος σε συνιστώσες

Εισαγωγή στην Πληροφορική

Ανάπτυξη Υπηρεσίας Καταλόγου LDAP με τα στοιχεία του προσωπικού του TEI Πειραιά. Νίκος Πασσαράς. Εισηγητής: Πρεζεράκος Γεώργιος

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

Ανάπτυξη Υπηρεσίας Τηλεκπαίδευσης σε ΙP Δίκτυα. Υλοποίηση Σύγχρονης Τηλεκπαίδευσης

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

ΠΙΣΤΟΠΟΙΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΗΣ ΕΦΑΡΜΟΓΩΝ ΔΙΑΔΙΚΤΥΟΥ ΜΕ ΤΗ ΧΡΗΣΗ PHP MYSQL CSS «Certified Web Developer using PHP, MySQL & CSS» SYLLABUS. Έκδοση 1.

Δυναμικές Ιστοσελίδες στο Πανελλήνιο Σχολικό Δίκτυο

Τεχνολογίες Ανάπτυξης Ηλεκτρονικού Καταστήματος Μικρομεσαίας Επιχείρησης. Μικρομεσαίες Επιχειρήσεις και Καινοτομία

ΚΕΦΑΛΑΙΟ Web Services

ALERTS ή EDA (Event Driven Actions)

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5

Αστέριος Κατσιφοδήμος Γιώργος Νικολάου Κώστας Βρυώνη. ΕΠΛ 428 Προγραμματισμός Συστημάτων 16/04/07

Κεφάλαιο 10 ο Υποπρογράµµατα

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview

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

Η HTML 5 θα αλλάξει το Web?

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΠΡΟΣΟΧΗ: Οι απαντήσεις πολλαπλής επιλογής µόνο πάνω στο ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ

6.2 Υπηρεσίες Διαδικτύου

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Δίκτυα υπολογιστών. (και το Διαδίκτυο)

ΗΛΕΚΤΡΟΝΙΚΟ ΚΑΤΑΣΤΗΜΑ

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.

Στρατηγική ανάπτυξη δικτυακού κόμβου

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress

Κεφάλαιο 11: Εισαγωγή στην HTML. Εφαρμογές Πληροφορικής Κεφ. 11 Καραμαούνας Πολύκαρπος

Αν Ναι, δείτε πως με το λογισμικό axes μπορείτε!

XAMPP Apache MySQL PHP javascript xampp

Speed-0 WMP: Web and Mobile Platform Software Requirements Specification

Κωνσταντίνος Παρασκευόπουλος Καθηγητής Πληροφορικής (ΠΕ19 MSc) Ελληνικό Κολλέγιο Θεσσαλονίκης

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς

ΚΕΦΑΛΑΙΟ 10. Υπηρεσίες και εφαρμογές Διαδικτύου. ΚΕΦΑΛΑΙΟ 10 Υπηρεσίες και εφαρμογές Διαδικτύου. Α Γενικού Λυκείου

Ενότητα 1η. Εισαγωγή στην Πληροφορική

Το λειτουργικό σύστημα. Προγραμματισμός II 1

ΤΕΙ ΗΠΕΙΡΟΥ Τμήμα Τηλεπληροφορικής & Διοίκησης

Θέματα Προγραμματισμού Διαδικτύου ~ PHP ~

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Το λειτουργικό σύστημα. Προγραμματισμός II 1

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ.

α) η καταγραφή και η σύλληψη της δικτυακής κίνησης (capture) και β) η ανάλυση της δικτυακής κίνησης.

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

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ. Πληροφορική Α' Γυμν. Το Λειτουργικό Σύστημα του Υπολογιστή

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Ηλεκτρονικό Εμπόριο

Λιόλιου Γεωργία. ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

Transcript:

ΜΕΡΟΣ 4 ο ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ \ Μεγγούδης Ναούµ ΑΕΜ 509 1

Περιεχόµενα Αρχιτεκτονική συστήµατος Α.Σ.ΠΙΣ. Αρχιτεκτονική τριών επιπέδων Hypertext Transfer Protocol Παράδειγµα HTTP Κατάσταση (state) ιαφανής πελάτης (thin client) Το επίπεδο πελάτη / χρήστη (client tier) JavaScript Η JavaScript δεν είναι Java Πολυπλοκότητα της JavaScript Εκδόσεις της JavaScript Έλεγχος εγκυρότητας στοιχείων (validation) Auto-complete και δυναµική αλλαγή σελίδων Cascading Style Sheets, Level 2 Revision 1 (CSS 2.1) Σύνταξη των Cascading Style Sheets υνατότητες των Cascading Style Sheets Cascading Style Sheets στο σύστηµα Α.Σ.ΠΙΣ. Το µεσαίο επίπεδο (middle tier) Web servers The Apache HTTP server, Version 1.3 The Apache HTTP server, Version 2.0 Web scripting µε την PHP Λεπτοµέρειες της PHP Εισαγωγή υνατότητες της PHP Η PHP στο σύστηµα Α.Σ.ΠΙΣ. Ενσωµάτωση της PHP στο σύστηµα Α.Σ.ΠΙΣ. Pagebuilder module Database module Το επίπεδο της βάσης δεδοµένων (database tier) Συστήµατα διαχείρισης βάσεων δεδοµένων Η βάση δεδοµένων MySQL Σχεδίαση της βάσης δεδοµένων του Α.Σ.ΠΙΣ. Το Μοντέλο Οντοτήτων-Συσχετίσεων Οντότητες Συσχετίσεις Το σχήµα της βάσης Λεπτοµέρειες της υλοποίησης Παράρτηµα Α : Ο κώδικας του συστήµατος Α.Σ.ΠΙΣ. 2

Παράρτηµα B : Η βάση δεδοµένων του Α.Σ.ΠΙΣ. 3

Αρχιτεκτονική Συστήµατος Α.Σ.ΠΙΣ. Αρχιτεκτονική τριών επιπέδων Το σύστηµα Α.Σ.ΠΙΣ. χρησιµοποιεί αρχιτεκτονική τριών επιπέδων (three-tier architecture) όπως πολλά συστήµατα της κατηγορίας του (Σχήµα 1). Στη βάση ενός τέτοιου συστήµατος υπάρχει το επίπεδο της βάσης δεδοµένων (database tier) που αποτελείται από το σύστηµα διαχείρισης της βάσης δεδοµένων που διαχειρίζεται τη βάση δεδοµένων που περιέχει τα στοιχεία που δηµιουργούν, σβήνουν και διαχειρίζονται οι χρήστες. Πάνω από το επίπεδο της βάσης δεδοµένων υπάρχει το πολύπλοκο µεσαίο επίπεδο (middle tier που περιέχει το µεγαλύτερο µέρος της λογικής του συστήµατος και επικοινωνεί δεδοµένα µε τα άλλα επίπεδα. Στην κορυφή βρίσκεται το επίπεδο του πελάτη-χρήστη (client tier συνήθως αποτελείται από λογισµικό περιήγησης του παγκόσµιου ιστού (web browser software που αλληλεπιδρά µε το σύστηµα. Σχήµα 1. Το µοντέλο της αρχιτεκτονικής τριών επιπέδων Το γεγονός πως το Α.Σ.ΠΙΣ. σαν web database application έχει αναπτυχθεί χρησιµοποιώντας three-tier architecture κρύβει την πραγµατικότητα πως το σύστηµα πρέπει να ενώσει διαφορετικό λογισµικό και πρωτόκολλα. Όταν χρησιµοποιούµε τον όρο παγκόσµιος ιστός εννοούµε τρία µεγάλα, διαφορετικά πρωτόκολλα και τα εργαλεία που στηρίζονται σε αυτά : την Hypertext Markup Language (HTML το 4

Hypertext Transfer Protocol (HTTP) και το πρωτόκολλο επικοινωνίας TCP/IP. Η HTML δουλεύει πολύ καλά στη δόµηση και την παρουσίαση πληροφοριών χρησιµοποιώντας ένα πρόγραµµα περιήγησης του παγκόσµιου ιστού (web browser). Το TCP/IP είναι ένα αποτελεσµατικό πρωτόκολλο επικοινωνίας που µεταφέρει δεδοµένα ανάµεσα σε προγράµµατα που χρησιµοποιούν το διαδίκτυο και έχει µικρό ή καθόλου αντίκτυπο στους προγραµµατιστές web database applications. Το πρόβληµα στην κατασκευή web database applications είναι να διασυνδεθούν παραδοσιακά συστήµατα διαχείρισης βάσεων δεδοµένων µε τον παγκόσµιο ιστό χρησιµοποιώντας το HTTP. Hypertext Transfer Protocol Ο παγκόσµιος ιστός παρέχει τα πρωτόκολλα και το δίκτυο που συνδέουν το client tier και το middle tier του συστήµατος, δηλαδή παρέχει τη σύνδεση µεταξύ του web browser και του web server. Το HTTP είναι ένα από τα στοιχεία που συµβάλλουν στη συνοχή της αρχιτεκτονικής των τριών επιπέδων. Λεπτοµερής γνώση του πρωτοκόλλου HTTP δεν είναι απαραίτητη για να καταλάβει κάποιος τον τρόπο λειτουργίας του Α.Σ.ΠΙΣ. αλλά είναι σηµαντική για να καταλάβει τα προβλήµατα που παρουσιάζει web database applications. Το πρωτόκολλο HTTP χρησιµοποιείται από web browsers για να ζητήσουν resources από web servers, και από web servers για να επιστρέψουν απαντήσεις. Το HTTP επιτρέπει σε resources να διαµοιράζονται µέσω του παγκόσµιου ιστού. Από την προοπτική ενός δικτύου υπολογιστών, το HTTP είναι ένα πρωτόκολλο επιπέδου προγράµµατος που στηρίζεται στο πρωτόκολλο επικοινωνίας TCP/IP. Παράδειγµα HTTP Το πρωτόκολλο HTTP είναι σχετικά απλό : ένας web browser στέλνει µια απαίτηση (request) για ένα resource σε ένα web server και ο web server στέλνει πίσω µια απάντηση (response). Το HTTP response περιέχει και το resource, µια HTML σελίδα, µια εικόνα, ή την έξοδο ενός προγράµµατος, και τη µεταφέρει στον web browser. Το απλό αυτό µοντέλο απαίτησης-απάντησης φαίνεται στο Σχήµα 2. 5

Σχήµα 2. Ένας web browser στέλνει ένα request και ο web server απαντά µε το response που περιέχει το resource Ένα HTTP request είναι µια λεκτική περιγραφή ενός resource µαζί µε κάποιες επιπλέον πληροφορίες επικεφαλίδας (header information). Παρακάτω είναι ένα παράδειγµα ενός request : GET /index.html HTTP/1.0 From: hugh@computer.org (Hugh Williams) User-agent: Hugh-fake-browser/version-1.0 Accept: text/plain, text/html Το παράδειγµα αυτό χρησιµοποιεί τη µέθοδο GET για να στείλει ένα request για την HTML σελίδα index.html χρησιµοποιώντας το πρωτόκολλο HTTP/1.0. Στο παράδειγµα αυτό τρεις επιπλέον γραµµές της επικεφαλίδας αναγνωρίζουν το χρήστη και το web browser και ορίζουν τι τύπους δεδοµένων µπορεί να δεχτεί ο web browser. Ένα request συνήθως γίνεται από ένα web browser και µπορεί να περιέχει και άλλες επικεφαλίδες (headers). Ένα HTTP response περιέχει έναν κωδικό απάντησης και ένα µήνυµα, επιπλέον headers και συνήθως το resource που απαιτήθηκε. Ένα παράδειγµα response στο request που έγινε για τη σελίδα index.html είναι το ακόλουθο : HTTP/1.0 200 OK Date: Sat, 21 Jul 2002 03:44:25 GMT Server: Apache/1.3.20 Content-type: text/html Content-length: 88 Last-modified: Fri, 1 Feb 2002 03:40:03 GMT <html><head> <title>test Page</title></head> <body> <h1>it Worked!</h1> </body></html> Η πρώτη γραµµή του response συµφωνεί να χρησιµοποιήσει το πρωτόκολλο HTTP/1.0 και επιβεβαιώνει ότι το request πέτυχε επιστρέφοντας των κωδικό απάντησης 200 και το µήνυµα OK, µια άλλη συνηθισµένη απάντηση είναι η 404 Not found. Σε αυτό το παράδειγµα 6

πέντε επιπλέον γραµµές επικεφαλίδας προσδιορίζουν την ηµεροµηνία και ώρα, το λογισµικό του web server, τον τύπο και το µήκος του response και πότε το συγκεκριµένο resource τροποποιήθηκε τελευταία φορά. Μετά από µια κενή γραµµή το ίδιο το resource ακολουθεί. Στο παράδειγµα αυτό το resource είναι το HTML αρχείο που ζητήθηκε, index.html. Κατάσταση (state) Τα παραδοσιακά συστήµατα διαχείρισης βάσεων δεδοµένων διατηρούν την κατάσταση τους (είναι stateful δηλαδή οι χρήστες κάνουν log in, εκτελούν καθορισµένες εργασίες και βγαίνουν από το σύστηµα κάνοντας log out όταν τελειώσουν. Για παράδειγµα σε µια τράπεζα, ένας υπάλληλος µπαίνει στο σύστηµα κάνοντας log in, εξυπηρετεί τους πελάτες πραγµατοποιώντας συναλλαγές και όταν τελειώσει για τη συγκεκριµένη ηµέρα βγαίνει από το σύστηµα κάνοντας log out. Το σύστηµα της τράπεζας έχει κατάσταση : µόλις ο χρήστης έχει συνδεθεί (log in) µπορεί να αλληλεπιδράσει µε το σύστηµα µε ένα δοµηµένο τρόπο, χρησιµοποιώντας µενού. Όταν βγει από το σύστηµα (lοg out) δε µπορεί πλέον να χρησιµοποιήσει τις υπηρεσίες του. Από την άλλη, το πρωτόκολλο HTTP δεν έχει κατάσταση (είναι stateless το οποίο σηµαίνει πως οποιαδήποτε αλληλεπίδραση του web browser µε το web server είναι ανεξάρτητη µε οποιαδήποτε άλλη αλληλεπίδραση. Κάθε HTTP request περιέχει τις ίδιες πληροφορίες επικεφαλίδας, όπως π.χ. τα πιστοποιητικά ασφαλείας του χρήστη, τον τύπο των σελίδων που µπορεί να δεχτεί καθώς και πληροφορίες για τη µορφοποίηση των σελίδων. Το γεγονός αυτό, δηλαδή το ότι το πρωτόκολλο HTTP είναι stateless έχει τα πλεονεκτήµατα του, τα πιο σηµαντικά από τα οποία είναι η οικονοµία σε resources από το γεγονός ότι δεν χρειάζεται να διατηρούνται πληροφορίες στο web server για να εντοπιστεί ένας χρήστης και η ευελιξία που επιτρέπει στους χρήστες να µετακινούνται µεταξύ ασύνδετων σελίδων ή resources. Ακριβώς, όµως, επειδή το πρωτόκολλο HTTP είναι stateless, είναι πολύ δύσκολο να αναπτυχθούν stateful web database applications. Αυτό που απαιτείται είναι µια µέθοδος που να διατηρεί την κατάσταση στο πρωτόκολλο HTTP έτσι ώστε η ροή των πληροφοριών να είναι οµαλή και να υπάρχει µια σχετική δοµή. Μια απλή λύση είναι η ανταλλαγή ενός δεδοµένου (token) µεταξύ του web browser και του web server που αναγνωρίζει µοναδικά το χρήστη και τη συνεδρία (session) του. Κάθε φορά που ο web browser του χρήστη ζητά ένα resource από το web server, στέλνει το token και κάθε φόρα που ο web server απαντά, επιστρέφει το token στο web browser. Το token χρησιµοποιείται από το λογισµικό του middle tier για να επανακτήσει πληροφορίες για το χρήστη 7

από την προηγούµενη απαίτηση για resource, όπως για παράδειγµα πιο µενού επισκέφθηκε τελευταία. Η ανταλλαγή tokens επιτρέπει τη δηµιουργία stateful δοµών στο σύστηµα όπως για παράδειγµα µενού, βήµατα και διεργασίες ροής. ιαφανής πελάτης (Thin Client) εδοµένου ότι ένα web database application που έχει αναπτυχθεί µε την αρχιτεκτονική των τριών επιπέδων δεν ταιριάζει µε το πρωτόκολλο HTTP γεννιέται το εύλογο ερώτηµα γιατί να χρησιµοποιήσουµε αυτό το µοντέλο; Η απάντηση βρίσκεται στα πλεονεκτήµατα του διαφανούς πελάτη (thin client). Οι web browsers είναι πολύ διαφανείς πελάτες (very thin clients) που σηµαίνει ότι ελάχιστη από τη λογική του συστήµατος περιλαµβάνεται στο client tier.ο web browser απλά στέλνει HTTP requests για resources και παρουσιάζει τις απαντήσεις που τις περισσότερες φορές είναι απλές HTML σελίδες. Μια αρχιτεκτονική τριών επιπέδων σηµαίνει ότι δεν είναι απαραίτητη η ανάπτυξη, η εγκατάσταση και η παραµετροποίηση του client tier. Οποιοσδήποτε χρήστης που έχει ένα web browser µπορεί να χρησιµοποιήσει το web database application, συνήθως χωρίς την απαίτηση για επιπλέον λογισµικό, συγκεκριµένο λειτουργικό σύστηµα ή συγκεκριµένο υλικό. Αυτό σηµαίνει ότι το σύστηµα µπορεί να δοθεί σε οποιονδήποτε αριθµό διαφορετικών και γεωγραφικά διασκορπισµένων χρηστών. Υπάρχουν βέβαια και εναλλακτικές λύσεις στη χρήση thin client. Ένα παραµετροποιηµένο Java applet είναι ένα παράδειγµα ενός πιο «πυκνού» client (thicker client) που µπορεί επίσης να χρησιµοποιηθεί στην αρχιτεκτονική τριών επιπέδων. Ο χρήστης κατεβάζει το applet και τρέχει µεγαλύτερο µέρος της λογικής του συστήµατος στη δική του πλατφόρµα. Το applet και εδώ αλληλεπιδρά µε το middle tier που µε τη σειρά του προσφέρει µια διασύνδεση (interface) µε το database tier. Το πλεονέκτηµα είναι η παραµετροποίηση : αντί της χρήσης µιας γενικής web browser λύσης, µια παραµετροποιηµένη λύση µπορεί να εξαλείψει πολλά από τα προβλήµατα που βρίσκονται έµφυτα στο statelessness, την ασφάλεια και την ακαµψία του παγκόσµιου ιστού. Το applet µπορεί να µην χρησιµοποιεί HTTP καν για την επικοινωνία µε το middle tier. Ένας thick client είναι επίσης µέρος µιας παραδοσιακής two-tier λύσης, γνωστής και ως client/server αρχιτεκτονικής. Τα περισσότερα παραδοσιακά συστήµατα διαχείρισης βάσεων δεδοµένων, όπως αυτό της τράπεζας, αποτελούνται από δύο µόνο επίπεδα. Το client tier περιέχει το µεγαλύτερο µέρος της λογικής του συστήµατος ενώ το database tier είναι το ίδιο το σύστηµα διαχείρισης της βάσης δεδοµένων. Το πλεονέκτηµα 8

είναι πως µια τέτοια συγκεκριµενοποιηµένη λύση µπορεί να σχεδιασθεί ούτως ώστε να καλύπτει τις ακριβείς απαιτήσεις του συστήµατος χωρίς καθόλου συµβιβασµούς. Μειονεκτήµατα είναι η έλλειψη ευελιξίας στην επιλογή υλικού και λειτουργικού συστήµατος και η απαίτηση για προµήθεια λογισµικού στον καθένα. Το επίπεδο πελάτη / χρήστη (client tier) Το client tier στην αρχιτεκτονική τριών επιπέδων είναι συνήθως ένας web browser. Το λογισµικό ενός web browser επεξεργάζεται και προβάλλει HTML resources, στέλνει HTTP requests για resources και επεξεργάζεται HTTP responses. Όπως αναφέραµε νωρίτερα, υπάρχουν σηµαντικά πλεονεκτήµατα στη χρησιµοποίηση ενός web browser στο επίπεδο thin-client, συµπεριλαµβανοµένων και της εύκολης ανάπτυξης και υποστήριξης σε µια µεγάλη γκάµα από πλατφόρµες. Υπάρχουν πολλοί διαθέσιµοι web browsers διαθέσιµοι µε τον καθένα να έχει διαφορετικές δυνατότητες. Οι δύο πιο γνωστοί παραθυρικοί web browser είναι οι Netscape και Internet Explorer. Αν και δε θα περιγράψουµε όλες τις δυνατότητες των web browsers έχουν ένα κοινό βασικό σύνολο : Όλοι οι web browsers είναι HTTP clients που στέλνουν requests και παρουσιάζουν responses από web servers (συνήθως σε γραφικό περιβάλλον). Όλοι οι web browsers διερµηνεύουν σελίδες που είναι γραµµένες σε HTML όταν διαβάζουν τη σελίδα, δηλαδή παρουσιάζουν τις επικεφαλίδες, τις εικόνες, τα hypertext links και ούτω καθεξής στο χρήστη. Κάποιοι web browsers παρουσιάζουν εικόνες, παίζουν ταινίες και ήχο και επεξεργάζονται και άλλους τύπους αντικειµένων. Αρκετοί web browsers µπορούν να τρέξουν JavaScript που είναι ενσωµατωµένη σε HTML σελίδες. Η JavaScript χρησιµοποιείται για την επικύρωση µιας φόρµας <form> ή για την αλλαγή της εµφάνισης µιας σελίδας ανάλογα µε τις ενέργειες του χρήστη. Επιλεγµένοι web browsers µπορούν να τρέξουν αντικείµενα που έχουν αναπτυχθεί στις γλώσσες προγραµµατισµού Java ή ActiveX. Αυτά τα αντικείµενα συχνά παρέχουν επιπλέον κίνηση, εργαλεία που δε µπορούν να αναπτυχθούν σε HTML ή άλλες πιο πολύπλοκες δυνατότητες. 9

Κάποιοι web browsers µπορούν να εφαρµόσουν Cascading Style Sheets (CSS) σε HTML σελίδες για να ελέγχουν τον τρόπο παρουσίασης των στοιχείων της HTML. Οι web browsers είναι το πιο εµφανές παράδειγµα ενός user agent, ενός λογισµικού πράκτορα που στέλνει requests για resources σε web server. Άλλοι user agents είναι οι web spiders, αυτόµατο λογισµικό που περιπλανάται στον παγκόσµιο ιστό, `βρίσκει και ανακτά σελίδες, και τα proxy caches, λογισµικά συστήµατα που ανακτούν και αποθηκεύουν τοπικά σελίδες του παγκόσµιου ιστού εκ µέρους πολλών άλλων user agents. JavaScript Η JavaScript είναι µια ελαφριά διερµηνευόµενη γλώσσα προγραµµατισµού µε αντικειµενοστρεφείς δυνατότητες. Ο γενικής χρήσης πυρήνας της γλώσσας έχει ενσωµατωθεί σε πολλούς σηµερινούς web browsers και µαζί µε κάποια πρόσθετα αντικείµενα που αντιπροσωπεύουν το παράθυρο του browser και τα περιεχόµενά του αποτελεί την client side JavaScript που χρησιµοποιείται για να προσθέσει δυναµικό περιεχόµενο στις ιστοσελίδες του διαδικτύου. υναµικό περιεχόµενο σηµαίνει πως πλέον οι ιστοσελίδες δεν χρειάζεται να είναι στατικά html αρχεία αλλά µπορούν να περιλαµβάνουν προγράµµατα που αλληλεπιδρούν µε τον χρήστη, ελέγχουν τον browser και δηµιουργούν δυναµικά το περιεχόµενο της html. Συντακτικά, ο πυρήνας της JavaScript µοιάζει µε τη C++ και τη Java µε προγραµµατιστικές δοµές όπως τη δήλωση if, το βρόχο while και τον λογικό τελεστή &&. Η οµοιότητα όµως τελείωνει εδώ. Η JavaScript είναι µια γλώσσα χωρίς τύπους δεδοµένων, που σηµαίνει πως οι µεταβλητές δεν χρειάζεται να δηλωθούν ως κάποιου τύπου. Τα αντικείµενα στην JavaScript µοιάζουν περισσότερο µε τους συσχετιστικούς πίνακες της Perl παρά µε τις δοµές της C ή τα αντικείµενα της C++ και της Java. Ο µηχανισµός της κληρονοµικότητας στην JavaScript είναι παρόµοιος µε αυτόν των ελάχιστα γνωστών γλωσσών Self και NewtonScript. Είναι αρκετά διαφορετικός από τον µηχανισµό της C++ και της Java. Όπως η Perl και η PHP, η JavaScript είναι διερµηνευόµενη γλώσσα που εµπνέεται από την Perl σε πολλά σηµεία, όπως οι κανονικές εκφράσεις και ο µηχανισµός χειρισµού των πινάκων. 10

Η JavaScript δεν είναι Java Μια από τις πιο συνήθεις λανθασµένες εντυπώσεις για την JavaScript είναι ότι η JavaScript είναι µια απλοποιηµένη έκδοση της Java, την γλώσσα προγραµµατισµού από την Sun Microsystems. Εκτός από την συντακτική οµοιότητα και το γεγονός πως και η Java και η JavaScript µπορούν να προσφέρουν εκτελέσιµο περιεχόµενο στις ιστοσελίδες, οι δύο γλώσσες είναι εντελώς άσχετες µεταξύ τους. Η οµοιότητα των ονοµάτων είναι καθαρά ένα διαφηµιστικό κόλπο (η γλώσσα αρχικά λεγόταν LiveScript, και το όνοµά της άλλαξε σε JavaScript την τελευταία στιγµή). Πολυπλοκότητα της JavaScript Η JavaScript θεωρείται γλώσσα σεναρίων (scripting language) αντί για γλώσσα προγραµµατισµού (programming language υποννοώντας πως είναι πιο απλή γλώσσα, γλώσσα προγραµµατισµού για µηπρογραµµατιστές. Πράγµατι, εκ πρώτης όψεως φαίνεται αρκετά απλή, ίσως της ίδιας πολυπλοκότητας µε την Basic. Η JavaScript έχει µερικά χαρακτηριστικά σχεδιασµένα να την κάνουν πιο ελαστική και ευκολότερη να χρησιµοποιηθεί από νέους και άπειρους προγραµµατιστές. Κάτω από το πέπλο της απλότητάς της όµως η JavaScript έχει όλα τα χαρακτηριστικά µιας κανονικής γλώσσας προγραµµατισµού, πολύπλοκης όσο πολλές άλλες και περισσότερο πολύπλοκης από µερικές. Προγραµµατιστές που επιχειρούν να χρησιµοποιήσουν την γλώσσα για να κάνουν κάτι πιο εξειδικευµένο συχνά βρίσκουν την διαδικασία εκνευριστική εάν δεν έχουν κατανοήσει την γλώσσα σε βάθος. Εκδόσεις της JavaScript Η JavaScript έχει εξελιχθεί µε το πέρασµα των χρόνων και η Netscape έχει βγάλει αρκετές εκδόσεις της γλώσσας. Και η Microsoft έχει βγάλει παρόµοιες εκδόσεις της γλώσσας υπό το όνοµα JScript. Η ECMA (http://www.ecma.ch) έχει δηµοσιοποιήσει τρεις εκδόσεις του ECMA-262 πρωτύπου που προτυποποιούν την JavaScript υπό το όνοµα ECMAScript. 11

Εκδόσεις από την Netscape (υλοποιούνται από τους browser Mozilla και Netscape) : JavaScript 1.0 JavaScript 1.1 JavaScript 1.2 JavaScript 1.3 JavaScript 1.4 JavaScript 1.5 (τρέχουσα έκδοση συµβατή µε ECMAScript v3) Εκδόσεις από την Microsoft (υλοποιούνται απο τους browser Internet Explorer) : Jscript 1.0 Jscript 2.0 Jscript 3.0 Jscript 4.0 Jscript 5.0 Jscript 5.5 (τρέχουσα έκδοση συµβατή µε ECMAScript v3) Εκδόσεις από την ECMA (πρωτυποποίηση της γλώσσας) : ECMA v1 ECMA v2 ECMA v3 Χρήση της JavaScript στο σύστηµα Α.Σ.ΠΙΣ. Στο σύστηµα Α.Σ.ΠΙΣ. η JavaScript χρησιµοποιήθηκε σαν γλώσσα scripting στο client tier. Με τις δυνατότητες που προσφέρει δηµιουργήθηκαν δυναµικές σελίδες οι οποίες διευκολύνουν τον χρήστη σε κάθε φάση χρήσης του συστήµατος. Σε αυτήν τη φάση ανάπτυξης του συστήµατος έχουν δηµιουργηθεί δύο βασικά scripts τα οποία αποτελούν τη βάση της αρχιτεκτονικής του client tier (µαζί µε το css του συστήµατος). Το ένα script υλοποιεί τον έλεγχο της εγκυρότητας των στοιχείων που εισάγει ο χρήστης και το άλλο εκτελεί το auto-complete των πεδίων σε διάφορες φόρµες και την δυναµική αλλαγή της µορφής των σελίδων. Τα παραπάνω scripts ορίζουν διάφορες συναρτήσεις τις οποίες στη συνέχεια χρησιµοποιούν τα µικρά scripts που είναι ενσωµατωµένα στον κώδικα html για να υλοποιήσουν την επικοινωνία µε τον χρήστη του συστήµατος. 12

Έλεγχος εγκυρότητας στοιχείων (validation) Το validation από το σύστηµα γίνεται σε δύο επίπεδα: στο middle tier και στο client tier. Στο middle tier γίνεται από τα scripts της php κατά τηω εισαγωγή των πληροφοριών στη βάση δεδοµένων του συστήµατος και στο client tier γίνεται από την JavaScript κατά την υποβολή της φόρµας στο σύστηµα από τον χρήστη. Στο κυρίως script που ορίζει τις συναρτήσεις πιστοποίησης ορίζονται οι κανονικές εκφράσεις (regular expressions) οι οποίες καθορίζουν την µορφή που πρέπει να έχουν τα δεδοµένα για να γίνουν αποδεκτά από το σύστηµα. Οι κανονικές εκφράσεις είναι ένα πολύ δυνατό εργαλείο που χρησιµεύει στη διαχείριση των αλφαριθµητικών (strings). Οι κανονικές εκφράσεις που ορίζονται αφορούν την µορφή των εξής στοιχείων πληροφορίας : αριθµητικά δεδοµένα ηµεροµηνίες και ώρες email σχολική χρονιά ονόµατα αριθµοί σταθερών τηλεφώνων αριθµοί κινητών τηλεφώνων ταχυδροµικοί κώδικες διευθύνσεις Κατά την δηµιουργία της φόρµας εισαγωγής στοιχείων σε µια σελίδα του συστήµατος, ένα µικρό script ενσωµατώνεται στον onsubmit handler της φόρµας και χαρακτηρίζει τα στοιχεία της φόρµας για τα οποία θέλουµε να γίνει validation. Οι χαρακτηρισµοί που αποδίδονται µεταφράζονται στη συνέχεια από την συνάρτηση που εκτελεί τον έλεγχο εγκυρότητας των δεδοµένων η οποία και καταλαβαίνει πώς πρέπει να ελέγξει τα δεδοµένα του κάθε πεδίου της φόρµας. Ανάλογα µε την τιµή που επιστρέφει η κυρίως συνάρτηση ελέγχου η φόρµα υποβάλλεται ή όχι στο σύστηµα. Εάν βρεθούν λάθη τότε εµφανίζεται ένα µήνυµα που προειδοποιεί τον χρήστη πως έχει εισάγει µη έγκυρα δεδοµένα και η φόρµα δεν υποβάλλεται. Το µήνυµα είναι λεπτοµερές και πληροφορεί ακριβώς ποια πεδία δεν είναι έγκυρα και γιατί. 13

Οι έλεγχοι που γίνονται για κάθε τύπο πεδίου είναι οι παρακάτω : για τα αριθµητικά δεδοµένα ελέγχεται εάν πράγµατι είναι αριθµοί και εάν είναι µέσα σε ένα συγκεκριµένο range (στην περίπτωση που αυτό καθορίζεται) για τις ηµεροµηνίες και ώρες ελέγχεται εάν είναι στην µορφή dd/mm/yyy hh:mm:ss και εάν οι τιµές που δόθηκαν σε κάθε κοµµάτι του προηγούµενου αλφαριθµητικου είναι έγκυρες (π.χ. η ώρα 00:61:78 δεν είναι έγκυρη). Οι ηµεροµηνίες και ώρες ελέγχονται εκτενέστερα στο middle tier όπου γίνεται έλεγχος για την ηµερολογιακή εγκυρότητα των δεδοµένων (π.χ. η ηµεροµηνία 29/02/2005 είναι λάθος) για τα email γίνεται έλεγχος της µορφής της διεύθυνσης. εν είναι RFC-2822-compliant αλλά δουλεύει για τις διευθύνσεις email της µορφής user@host.xxx. Στο middle tier γίνεται επιπλέον έλεγχος της διεύθυνσης email ώστε να καθοριστεί αν αυτή αποτελεί έγκυρη και λειτουργική διεύθυνση. για την σχολική χρονιά ελέγχεται εάν είναι της µορφής yyyy-yyyy µε ένα χρόνο διαφορά µεταξύ των δύο χρονολογιών. Επίσης ελέγχεται εάν οι χρόνοι που καθορίζονται είναι σχετικά κοντά στην παρούσα ηµεροµηνία (π.χ. δεν µπορούµε να βάλουµε 3000-3001). για τα ονόµατα ελέγχεται εάν αποτελούνται µόνο από γράµµατα (κεφαλαία και πεζά). Αριθµοί και άλλα σύµβολα δεν επιτρέπονται. Επιτρέπονται µόνο τα κενά και οι παύλες. Επίσης ένα όνοµα δεν επιτρέπεται να έχει και ελληνικούς και αγγλικούς χαρακτήρες. Αυτό γίνεται για να µην µπαίνουν τα δεδοµένα στη βάση µε µικτούς χαρακτήρες και στη συνέχεια υπάρξει πρόβληµα στην ταξινόµηση και αναζήτηση των δεδοµένων. για τους αριθµούς σταθερών τηλεφώνων ελέγχεται εάν έχουν δέκα ψηφία και αρχίζουν από 2, ακολουθεί ο κωδικός της περιοχής, µετά το 0 και τέλος το υπόλοιπο νούµερο. για τους αριθµούς κινητών τηλεφώνων ελέγχεται εάν έχουν δέκα ψηφία και τα τρία πρώτα είναι 693,694,697, ή 699. για τους ταχυδροµικούς κώδικες ελέγχεται εάν αποτελούνται από 5 ψηφία. για τις διευθύνσεις οι επιτρεπτοί χαρακτήρες είναι γράµµατα (κεφαλαία και πεζά αριθµοί, παρενθέσεις, τελείες, κόµατα, παύλες και ο χαρακτήρας /. Και στις διευθύνσεις δεν επιτρέπεται η ανάµιξη αγγλικών και ελληνικών χαρακτήρων, για τους λόγους που αναφέρθηκαν παραπάνω στο όνοµα. 14

τέλος γίνεται έλεγχος και για κενά πεδία τα οποία χαρακτηρίζονται ως απαιτούµενα απο τα scripts δηµιουργίας σελίδων του middle tier. Για περισσότερες λεπτοµέρειες σχετικά µε την ακριβή υλοποίηση του client side validation δείτε το αρχείο validate.js στο παράρτηµα Α. Auto-complete και δυναµική αλλαγή σελίδων Σε ορισµένες σελίδες του συστήµατος (δηµιουργία τεστ, ενεργοποίηση τεστ, εισαγωγή ερώτησης, εισαγωγή χρήστη µε επεξεργασία των δικαιωµάτων του) χρησιµοποιούνται εκτός από το βασικό script για το validation και διάφορα άλλα scripts που υλοποιούν για κάθε περίπτωση το auto-complete και την δυναµική αλλαγή των περιεχοµένων των σελίδων αυτών. Με τη χρήση των script auto-complete επιτυγχάνεται η συµπλήρωση σχετικών πεδίων µεταξύ τους καθώς ο χρήστης εισάγει δεδοµένα σε ένα από αυτά. Για ένα λεπτοµερές παράδειγµα δείτε το εγχειρίδιο χρήσης του συστήµατος και συγκεκριµένα στην δηµιουργία τεστ. Στην δηµιουργία τεστ επίσης φαίνεται και η δυναµική αλλαγή σελίδων από τα script του συστήµατος. Καλύτερα αυτό φαίνεται στη σελίδα για την εισαγωγή ερώτησης όπου ανάλογα µε τον τύπο της ερώτησης που εισάγουµε και τον αριθµό των απαντήσεων που θα έχει εµφανίζονται τα κατάλληλα πεδία της φόρµας html. Για περισσότερες λεπτοµέρειες σχετικά µε την υλοποίηση δείτε το αρχείο create_tests.js στο παράρτηµα Α. Cascading Style Sheets, Level 2 Revision 1 (CSS 2.1) Η τεχνολογία CSS είναι µια «γλώσσα» (τα Cascading Style Sheets δεν είναι γλώσσα προγραµµατισµού ούτε καν µε µια πιο χαλαρή θεώρηση των γλωσσών προγραµµατισµού απλά χρησιµοποιούµε τον όρο για να δώσουµε στον αναγνώστη κάτι χειροπιαστό για να τα συσχετίσει) που επιτρέπει στο συγγραφέα αλλά και στο χρήστη να ενσωµατώσουν τα δικά τους στυλ (π.χ. γραµµατοσειρές και διάκενα) σε έγγραφα µε καθορισµένη δοµή όπως είναι τα έγγραφα της HTML και της XML. Με τα CSS πετυχαίνουµε να ξεχωρίσουµε το επίπεδο παρουσίασης ενός εγγράφου από εκείνο της δοµής και των περιεχοµένων. Με αυτόν τον 15

τρόπο γίνεται πιο εύκολη η συγγραφή και συντήρηση ιστοσελίδων και ολόκληρων διαδικτυακών τόπων. Τα CSS υποστηρίζουν διαφορετικά στυλ για πολλές συσκευές εξόδου στις οποίες θα παρουσιαστεί το έγγραφό µας. Έτσι ο συγγραφέας µπορεί να δηµιουργήσει τα στυλ που επιθυµεί ανάλογα µε το εάν το έγγραφο του πρόκειται να παρουσιαστεί σε έναν web browser (δηλαδή στην οθόνη του Η/Υ στον εκτυπωτή, σε κινητό τηλέφωνο, στην τηλεόραση, σε έξυπνες συσκευές κ.α. Τα CSS διαθέτουν πολλές επιλογές για την καλύτερη παρουσίαση του κειµένου µας και υποστηρίζουν µεταξύ άλλων εισαγωγή εικόνων και γενικά εφαρµογών εικόνας, βίντεο και ήχου, καθορισµό της θέσης του κειµένου, πίνακες και πολλά άλλα στοιχεία που σχετίζονται µε τη διεπαφή του χρήστη. Το αρχείο.css που περιέχει τα στυλ που έχει δηµιουργήσει ο συγγραφέας κατεβαίνει στον Η/Υ του χρήστη. Ο χρήστης πρέπει να είναι εφοδιασµένος µε ειδικό λογισµικό που να υποστηρίζει τη γλώσσα. Οι περισσότεροι σύγχρονοι web browsers υποστηρίζουν CSS. Ο χρήστης ανάλογα µε το πρόγραµµα που έχει µπορεί να δει το έγγραφο µε τα στυλ που αρχικά έχει δηµιουργήσει ο συγγραφέας αλλά επίσης µπορεί να δηµιουργήσει και αυτός τα δικά του στυλ βάση των οποίων θα του παρουσιάζονται οι ιστοσελίδες ή ακόµα να απενεργοποιήσει την υποστήριξη CSS. Σύνταξη των Cascading Style Sheets Η σύνταξη της γλώσσας είναι πολύ απλή και εύκολα κατανοητή : h1 color: red Η παραπάνω γραµµή δηλώνει πως το χρώµα του κειµένου που εσωκλείεται από ένα στοιχείο h1 θα είναι κόκκινο. Πρόκειται δηλαδή για έναν κανόνα που όρισε ο συγγραφέας για την παρουσίαση του κειµένου του. Ένας κανόνας των CSS αποτελείται από 2 κύρια µέρη: τον επιλογέα (selector) που στην περίπτωση µας είναι το 'h1' και τη δήλωση (declaration) που αντιστοίχως είναι το 'color:red'. Το κοµµάτι της δήλωσης αποτελείται µε τη σειρά του από 2 άλλα µέρη : την ιδιότητα (property) δηλαδή το 'color' και την τιµή (value) που παίρνει την ιδιότητα 'red'. Περισσότερα για την σύνταξη και την δοµή της CSS µπορούµε να βρούµε στο www.w3c.org 16

υνατότητες των Cascading Style Sheets Τα CSS σχεδιάστηκαν µε κάποιες βασικές αρχές και για να πετύχουν κάποιους συγκεκριµένους στόχους : Πρέπει να υπάρχει συµβατότητα στις διάφορες εκδόσεις των CSS τόσο προς τα πίσω όσο και προς τα µπροστά. Πρέπει να υπάρχει πάντα η δυνατότητα να αλλάζουµε το στυλ της παρουσίασης του εγγράφου µας αλλάζοντας µόνο τον κώδικα των CSS και να αφήνουµε το κείµενο χωρίς καµία αλλαγή. Τα CSS πρέπει να προσφέρουν ανεξαρτησία από τη συσκευή, την πλατφόρµα και τον κατασκευαστή. Ο ίδιος κώδικας CSS δίνει τα ίδια αποτελέσµατα όπου και αν εκτελεστεί. Πρέπει να µπορούµε να συντηρούµε τον κώδικα µας εύκολα. Πετυχαίνουµε µείωση του φόρτου ενός δικτύου αφού έχουµε χωρίσει το κείµενο από την παρουσίαση. Ένα αρχείο.css περιέχει στυλ που µπορούν να χρησιµοποιηθούν σε πολλά αρχεία.html. Η γλώσσα πρέπει να είναι ευέλικτη και να προσφέρει πληθώρα επιλογών και δυνατοτήτων. Τα CSS πρέπει να είναι σε θέση να παρέχουν εκείνες τις επιλογές ώστε η πληροφορία να µπορεί να παρουσιαστεί σε όλους και ειδικά σε άτοµα µε ειδικές ανάγκες. Cascading Style Sheets στο σύστηµα Α.Σ.ΠΙΣ. Για όλους τους λόγους που αναφέρθηκαν παραπάνω στο σύστηµα Α.Σ.ΠΙΣ. έχουν χρησιµοποιηθεί εκτενώς τα Cascading Style Sheets (Παράρτηµα Α, Αρχείο : aspis.css). Λεπτοµερέστερα, τα Cascading Style Sheets έχουν χρησιµοποιηθεί σε όλες τις πτυχές του συστήµατος, από το χρωµατισµό του και τον ορισµό διαστηµάτων ανάµεσα στα διάφορα στοιχεία του µέχρι τον ορισµό πινάκων και τον πλήρη καθορισµό της εσωτερικής τους δοµής. Το µεσαίο επίπεδο (middle tier) Στα περισσότερα web database systems που αναπτύχθηκαν σύµφωνα µε την αρχιτεκτονική των τριών επιπέδων το µεγαλύτερο µέρος της λογικής του συστήµατος βρίσκεται στο middle tier. Το client tier 17

παρουσιάζει δεδοµένα στο χρήστη και συλλέγει δεδοµένα από αυτόν ενώ το database tier αποθηκεύει και ανακτά δεδοµένα. Το middle tier εξυπηρετεί τους περισσότερους από τους εναποµείναντες ρόλους που συνενώνουν τα άλλα επίπεδα : καθορίζει τη δοµή και το περιεχόµενο των δεδοµένων που παρουσιάζονται στο χρήστη και επεξεργάζεται αυτά που εισάγει ο χρήστης και τα διαµορφώνει σε ερωτήσεις προς τη βάση δεδοµένων για εισαγωγή ή ανάκτηση δεδοµένων. Επίσης προσθέτει χειρισµό κατάστασης στο πρωτόκολλο HTTP. Το middle tier συνδυάζει τον παγκόσµιο ιστό µε το σύστηµα διαχείρισης της βάσης δεδοµένων. Στο σύστηµα Α.Σ.ΠΙΣ. τα συστατικά που αποτελούν το middle tier είναι ένας web server, µια web scripting language και η scripting language engine. Ο web server επεξεργάζεται τα HTTP requests και σχηµατίζει τα responses. Στις περιπτώσεις των web database applications αυτά τα requests είναι συνήθως για προγράµµατα που αλληλεπιδρούν µε το υποκείµενο σύστηµα διαχείρισης της βάσης δεδοµένων. Ο web server που χρησιµοποιούµε είναι ο Apache Software Foundation s Apache HTTP Server, ένας open source web server που χρησιµοποιείται σε περισσότερους από το 60% των υπολογιστών που είναι συνδεδεµένοι στο διαδίκτυο. Για scripting language του middle tier χρησιµοποιούµε την PHP scripting language. Η PHP είναι ένα open source project του Apache Software Foundation και είναι η πιο διάσηµη επέκταση (add-on module) του Apache HTTP Server, µε περίπου το 40% των Apache HTTP servers να έχουν δυνατότητα υποστήριξης της PHP. Η PHP είναι κατάλληλη για web database applications εξαιτίας των εργαλείων διασύνδεσης της για τα περιβάλλοντα του παγκόσµιου ιστού και των βάσεων δεδοµένων. Συγκεκριµένα, η ευελιξία στην ενσωµάτωση script σε HTML σελίδες επιτρέπει την εύκολη διασύνδεση µε το client tier. Η υποστήριξη διασύνδεσης µε το database tier είναι επίσης εξαιρετική, µε περισσότερες από 15 βιβλιοθήκες διαθέσιµες για την αλληλεπίδραση µε σχεδόν όλα τα διάσηµα συστήµατα διαχείρισης βάσεων δεδοµένων. Web servers Οι web servers συχνά αναφέρονται και ως HTTP servers.ο όρος HTTP server είναι µια καλή περιγραφή της λειτουργίας τους : η βασική λειτουργία τους είναι να ακούνε για HTTP requests σε ένα δίκτυο, να δέχονται HTTP requests που γίνονται από user agents (συνήθως web browsers να εξυπηρετούν τα requests και να επιστρέφουν HTTP responses που περιέχουν τα απαραίτητα resources. Ουσιαστικά υπάρχουν δύο τύποι request που γίνονται σε ένα web server : το πρώτο ζητά ένα αρχείο, συχνά µια στατική HTML σελίδα ή 18

µια εικόνα, και το δεύτερο ζητά να τρέξει ένα πρόγραµµα και η έξοδος του να επιστραφεί στο user agent. Requests για web scripts που προσπελαύνουν µια βάση δεδοµένων είναι παραδείγµατα HTTP request που απαιτούν από έναν web server να τρέξει ένα πρόγραµµα. Στο Α.Σ.ΠΙΣ. τα HTTP requests είναι για PHP script resources, τα οποία απαιτούν την PHP Zend Engine να τρέχει, και ανακτούν ένα script, το επεξεργάζονται και επιστρέφουν την έξοδό του. The Apache HTTP Server, Version 1.3 Όπως οι περισσότεροι χρήστες του Apache HTTP server τον αποκαλούµε απλά Apache. O Apache είναι ένας open source web server. Ο Apache είναι γρήγορος και βαθµωτός (scalable). Μπορεί να χειριστεί ταυτόχρονα requests από user agents και είναι σχεδιασµένος να τρέχει σε πολυεπεξεργαστικά λειτουργικά συστήµατα όπως το Linux και τις 32 bit εκδόσεις των Microsoft Windows. Είναι επίσης ελαφρύς, έχει χαµηλές απαιτήσεις ανά διαδικασία, µπορεί να χειριστεί αποτελεσµατικά τις αλλαγές στο φόρτο των request και µπορεί να τρέξει γρήγορα ακόµη και σε µέτριο υλικό. Ο Apache δεν είναι πολύπλοκος. Ο web server αποτελείται στην ουσία από πολλές διεργασίες, όπου µία συντονίζει τις υπόλοιπες. Η συντονιστική διεργασία τρέχει συνήθως µε δικαιώµατα υπερχρήστη (superuser) ή root χρήστη σε ένα µηχάνηµα Unix και δεν εξυπηρετεί requests. Οι άλλες διεργασίες, οι οποίες συνήθως τρέχουν ως πιο ασφαλείς, χωρίς δικαιώµατα χρήστες, ειδοποιούν τη συντονιστή server ότι είναι διαθέσιµες να χειριστούν requests. Αν υπάρχουν πολλοί λίγοι διαθέσιµοι servers για να εξυπηρετήσουν τα εισερχόµενα requests,ο συντονιστής server µπορεί να ξεκινήσει καινούριους servers, ενώ αν υπάρχουν πολλοί ελεύθεροι µπορεί να τερµατίσει κάποιους για να ελευθερώσει πόρους. Ο τρόπος µε τον οποίο ο Apache ακούει στο δίκτυο και εξυπηρετεί requests ελέγχεται από το αρχείο ρυθµίσεων του (configuration file). Ο διαχειριστής του server ελέγχει τη συµπεριφορά του Apache µέσω περισσοτέρων των 150 εντολών που επηρεάζουν τις απαιτήσεις σε πόρους, την ταχύτητα απόκρισης, την ευελιξία στην αντιµετώπιση του φόρτου των request, την ασφάλεια, τον τρόπο που αντιµετωπίζονται τα HTTP requests και τις πλευρές της λειτουργίας του. Προσεκτική ρύθµιση αυτών των παραµέτρων είναι σηµαντική για την απόδοση του server. 19

The Apache HTTP Server, Version 2.0 Η έκδοση 1.3 του Apache είχε µερικούς περιορισµούς που διορθώθηκαν στην έκδοση 2.0. Οι πιο σηµαντικές αλλαγές του Apache 2.0 είναι : Χρήση πιο ελαφριών διεργασιών ή threads σε συνδυασµό µε το µοντέλο επεξεργασίας της παλιότερης έκδοσης. Αυτό προσέφερε σηµαντική βελτίωση της απόδοσης στην εκκίνηση servers και µειώθηκε η συνολική απαίτηση σε µνήµη για να τρέχουν οι servers. Καλύτερη υποστήριξη, απόδοση και σταθερότητα σε non-unix µηχανήµατα. Πρόσθεση modules φιλτραρίσµατος έτσι ώστε τα δεδοµένα να µπορούν να µεταβάλλονται καθώς γίνεται η επεξεργασία τους από το web server. Υποστήριξη για IPv6, η νέα έκδοση του πρωτοκόλλου IP της δικτυακής σουίτας TCP/IP. Web scripting µε την PHP Η PHP εµφανίστηκε ως µέρος πολλών medium- και large-scale web database applications. Εκτός από την PHP βέβαια υπάρχουν και άλλες scripting languages που έχουν αξιοθαύµαστες δυνατότητες. Υπάρχουν, όµως, πολλοί λόγοι που κάνουν την PHP µια πολύ καλή επιλογή, κάποιοι από τους οποίους είναι : Είναι open source που σηµαίνει ότι διανέµεται εντελώς δωρεάν. Και σαν open source οι προσπάθειες για συντήρηση και εξέλιξή της γίνονται χωρίς να παρεµποδίζονται από επιχειρηµατικά συµφέροντα. Ένα ή περισσότερα PHP scripts µπορούν να ενσωµατωθούν σε στατικές HTML σελίδες κάτι που κάνει τη διασύνδεση µε το client tier πολύ εύκολη. Υπάρχουν πάνω από 15 βιβλιοθήκες για ενσωµατωµένη και γρήγορη υποστήριξη µε το database tier. Γρήγορη εκτέλεση των scripts. Με τις νέες βελτιώσεις στη Zend engine που επεξεργάζεται τα script, η εκτέλεση είναι γρήγορη, και όλα τα συστατικά στοιχεία του script τρέχουν στην κύρια µνήµη της PHP (σε αντίθεση µε άλλα scripting περιβάλλοντα, όπου τα 20

διαφορετικά συστατικά του script τρέχουν σε διαφορετικές περιοχές της µνήµης). Εµπειρικά δεδοµένα υποδεικνύουν ότι για εργασίες τουλάχιστον µέτριας πολυπλοκότητας η PHP είναι γρηγορότερη από άλλα διάσηµα εργαλεία για scripting. Ευελιξία πλατφόρµας και λειτουργικού συστήµατος. Ο Apache τρέχει σε πολλές πλατφόρµες και συγκεκριµένα λειτουργικά συστήµατα. Η PHP τρέχει σε όλα αυτά και ακόµη περισσότερα όταν διασυνδεθεί µε άλλους web servers. Η PHP είναι κατάλληλη για την ανάπτυξη πολύπλοκων συστηµάτων. Είναι µια κανονική γλώσσα προγραµµατισµού µε πλήρεις δυνατότητες και περισσότερες από 50 βιβλιοθήκες µε συναρτήσεις. Η τελευταία έκδοση της PHP είναι η έκδοση 4, την οποία για λόγους απλότητας αποκαλούµε απλά PHP, και το release που χρησιµοποιούµε είναι το 4.3.8. Στην PHP4 έχει γραφεί από την αρχή η scripting engine που χρησιµοποιούνταν στην PHP3. Η σηµαντικότερη αλλαγή έχει γίνει στον τρόπο που τρέχουν τα script. Στην PHP3 η scripting engine ήταν ένας διερµηνέας (interpreter). Κάθε γραµµή κώδικα σε ένα script διαβαζόταν, επεξεργαζόταν και εκτελούνταν. Αν µια συνθήκη σε ένα βρόχο επανάληψης εκτελούνταν 100 φορές, η γραµµή του κώδικα διερµηνευόταν 100 φορές µε την PHP3. Αυτό το µοντέλο είναι αργό για πολύπλοκα scripts και πολύ γρήγορο για απλά. Το µοντέλο επεξεργασίας των script της PHP4 είναι διαφορετικό και σχεδιασµένο για µεγαλύτερης κλίµακας συστήµατα. Ένα script διαβάζεται, επεξεργάζεται, µεταφράζεται σε ενδιάµεσο κώδικα και µόνο τότε ο ενδιάµεσος κώδικας εκτελείται από τον εκτελεστή (PHP4 Zend engine script executor). Αυτό σηµαίνει ότι κάθε γραµµή του script διερµηνεύεται µόνο µια φορά (από την αρχική του µορφή στον ενδιάµεσο κώδικα) ακόµη και αν εκτελείται εκατοντάδες φορές. Επιπλέον η µετάφραση επιτρέπει και βελτίωση του κώδικα. Το αποτέλεσµα είναι βελτίωση της απόδοσης της PHP4 σε όλα εκτός από τα πιο απλά script. Η αρχιτεκτονική του PHP4 scripting environment φαίνεται στο Σχήµα 3 (η εικόνα προέρχεται από την Zend Technologies Inc.). Όπως φαίνεται, η PHP4 είναι ένα κοµµάτι του λογισµικού του web server. Το λογισµικό της ίδιας της PHP χωρίζεται σε δύο κοµµάτια : τις βιβλιοθήκες των συναρτήσεων και την Zend engine. 21

Σχήµα 3. Η αρχιτεκτονική του PHP4 scripting environment. Όταν ένας user agent στέλνει ένα request σε ένα web browser για ένα PHP script, τα παρακάτω συµβαίνουν : 1. Ο web server περνάει το request στη διασύνδεση του web server της Zend engine. 2. Η διασύνδεση του web server καλεί τη Zend engine και περνά τις παραµέτρους στη µηχανή. 3. Το κατάλληλο PHP script ανακτάται από το δίσκο από τη µηχανή. 4. Το script µεταφράζεται από τον compiler. 5. Ο µεταφρασµένος κώδικας εκτελείται από τον executor της µηχανής και µπορεί να περιλαµβάνει κλήσεις σε συναρτήσεις. Η έξοδος του executor επιστρέφεται στη διασύνδεση του web server. 6. Η διασύνδεση του web server επιστρέφει την έξοδο στον web server (που µε τη σειρά του επιστρέφει την έξοδο σαν HTTP response στον user agent). Ο τρόπος που διαχειριζόµαστε την PHP scripting engine και το πως αυτή τρέχει εξαρτάται από τον τρόπο που συµπεριλαµβάνεται το module της PHP στην εγκατάσταση του Apache. Αν το module είναι συνδεδεµένο στατικά (statically) µε το εκτελέσιµο του Apache httpd τότε η PHP scripting engine φορτώνεται στην κύρια µνήµη όταν ο Apache τρέχει, κάνοντας την να τρέχει γρηγορότερα. Τα µειονεκτήµατα είναι ότι ο Apache µε µια στατική βιβλιοθήκη PHP καταναλώνει περισσότερη µνήµη από ότι αν το module φορτωνόταν δυναµικά (dynamically) και επίσης η διαδικασία αναβάθµισης του module είναι λιγότερο ευέλικτη. 22

Λεπτοµέρειες τις PHP Εισαγωγή Η PHP, της οποίας τα αρχικά αντιπροσωπεύουν το "PHP: Hypertext Preprocessor" είναι µια ευρέως χρησιµοποιούµενη, ανοιχτού κώδικα, γενικού σκοπού scripting γλώσσα προγραµµατισµού, η οποία είναι ειδικά κατάλληλη για ανάπτυξη εφαρµογών για το Web και µπορεί να ενσωµατωθεί στην HTML. <html> <head> <title>example</title> </head> <body> </body> </html> <?php echo "Hi, I'm a PHP script!";?> Παράδειγµα 1. Ένα εισαγωγικό παράδειγµα Παρατηρήστε πως αυτό είναι διαφορετικό από ένα script γραµµένο σε άλλες γλώσσες προγραµµατισµού όπως η Perl ή η C : αντί να γράφετε ένα πρόγραµµα µε πολλές εντολές για να εξάγετε HTML, γράφετε ένα HTML script µε κάποιο ενσωµατωµένο κώδικα για να κάνει κάτι (σε αυτή την περίπτωση, να εµφανίζει κάποιο κείµενο). Ο κώδικας PHP είναι εσώκλειστος σε ειδικά tags (ετικέτες) αρχής και τελους που σας επιτρέπουν να µεταφέρεστε µέσα και έξω από το "PHP mode" (PHP τρόπο λειτουργίας). Αυτό που διαχωρίζει την PHP από κάτι σαν client-side Javascript είναι ότι ο κώδικας εκτελείται στον server (εξηπηρετητή). Αν είχατε ένα script σαν το παραπάνω στον server σας, ο client θα έπαιρνε τα αποτελέσµατα της εκτέλεσης αυτού του script, χωρίς να υπάρχει κανένας τρόπος να καταλάβει τι κώδικας υπάρχει από κάτω. Μπορείτε ακόµη να ρυθµίσετε τον web server σας να χειρίζεται όλα τα HTML αρχεία σας µε την PHP, και τότε πραγµατικά δεν υπάρχει τρόπος ο χρήστης να καταλάβει τι έχετε κάτω από το µανίκι σας. Τα καλύτερο πράγµα στην PHP είναι ότι είναι εξαιρετικά απλή για ένα νεοφερµένο αλλά προσφέρει πολλά προηγµένα χαρακτηριστικά για ένα επαγγελµατία προγραµµατιστή. Μην τροµάζετε όταν διαβάζετε την µακροσκελή λίστα µε τα χαρακτηριστικά της PHP. Μπορείτε να 23

εξοικειωθείτε µέσα σε πολύ λίγο χρόνο και να αρχίσετε να γράφετε απλά script σε λίγες ώρες. υνατότητες της PHP Απεριόριστες. Η PHP επικεντρώνεται κυρίως στο server-side scripting, έτσι µπορείτε να κάνετε οτιδήποτε ένα άλλο CGI πρόγραµµα µπορεί να κάνει, όπως να µαζέψει δεδοµένα, να παράγει δυναµικό περιεχόµενο σελίδων, ή να στείλει και να πάρει cookies. Αλλά η PHP µπορεί να κάνει πολύ περισσότερα. Υπάρχουν τρεις κύριοι τοµείς που χρησιµοποιείται ένα PHP script: Server-side scripting : Αυτό είναι το πιο παραδοσιακό και το κύριο πεδίο για την PHP. Χρειάζεστε τρία πράγµατα για να δουλέψει αυτό. Τον PHP µεταγλωττιστή (parser) (CGI ή server module ένα webserver (εξηπηρετητή σελίδων) και ένα web browser ("φυλλοµετρητή"). Πρέπει να τρέξετε τον web server, µε µια συνδεδεµένη εγκατάσταση της PHP. Μπορείτε να προσπελάσετε τα αποτελέσµατα του PHP προγράµµατος µε ένα web browser, βλέποντας την σελίδα PHP µέσα από τον server. Command line scripting : Μπορείτε να φτιάξετε ένα PHP script για να το τρέχετε χωρίς server ή browser. Χρειάζεστε µόνο τον PHP µεταγλωττιστή για να την χρησιµοποιήσετε µε αυτό τον τρόπο. Αυτός ο τύπος είναι ιδανικός για script που εκτελούνται συχνά µε τη χρήση της cron (σε *nix ή Linux) ή µε τον Task Scheduler (στα Windows). Αυτά τα script µπορούν επίσης να χρησιµοποιηθούν για απλές εργασίες επεξεργασίες κειµένου. Εγγραφή client-side GUI εφαρµογών (Γραφικά περιβάλλοντα χρηστών) : Η PHP ίσως να µην είναι η πιο καλή γλώσσα για να γράψει κανείς παραθυριακές εφαρµογές, αλλά αν ξέρετε PHP πολύ καλά και θέλετε να χρησιµοποιήσετε κάποια προχωρηµένα χαρακτηριστικά της PHP στις client-side εφαρµογές σας, µπορείτε επίσης να χρησιµοποιήσετε το PHP-GTK για αυτού του είδους τα προγράµµατα. Έχετε επίσης τη δυνατότητα να γράφετε crossplatform εφαρµογές µε αυτό τον τρόπο. Το PHP-GTK είναι µια επέκταση της PHP και δεν συµπεριλαµβάνεται στην κύρια διανοµή. Η PHP µπορεί να χρησιµοποιηθεί σε όλα τα κύρια λειτουργικά συστήµατα, συµπεριλαµβανοµένου του Linux, πολλών εκδοχών του Unix (HP-UX, Solaris και OpenBSD Microsoft Windows, Mac OS X, RISC OS και πιθανώς σε άλλα. Η PHP υποστηρίζει επίσης τους Apache, 24

Microsoft Internet Information Server, Personal Web Server, Netscape και iplanet servers, Oreilly Website Pro server, Caudium, Xitami, OmniHTTPd, και πολλούς άλλους web servers. Για την πλειοψηφία των server η PHP έχει ένα module, για τους υπόλοιπους η PHP µπορεί να λειτουργήσει ως ένας CGI επεξεργαστής. Έτσι µε την PHP έχετε την ελευθερία επιλογής ενός λειτουργικού συστήµατος και ενός web server. Επιπλέον, έχετε επίσης την ελευθερία να χρησιµοποιήσετε συναρτησιακό (procedural) ή αντικειµενοστρεφή (object oriented) προγραµµατισµό ή µια ανάµειξη τους. Αν και η παρούσα έκδοση δεν υποστηρίζει όλα τα πρότυπα χαρακτηριστικά, µεγάλες βιβλιοθήκες κώδικα και µεγάλες εφαρµογές (συµπεριλαµβανοµένης και της βιβλιοθήκης PEAR) είναι γραµµένες µόνο µε αντικειµενοστρεφή κώδικα. Με την PHP δεν είστε περιορισµένοι να εξάγετε HTML. Οι δυνατότητες της PHP συµπεριλαµβάνουν την εξαγωγή εικόνων, αρχείων PDF, ακόµη και ταινίες Flash (χρησιµοποιώντας τα libswf και Ming) παράγονται αµέσως. Μπορείτε επίσης να εξάγετε εύκολα οποιοδήποτε κείµενο όπως XHTML και οποιοδήποτε άλλο XML αρχείο. Η PHP µπορεί να δηµιουργεί αυτόµατα αυτά τα αρχεία και να τα αποθηκεύει στο σύστηµα αρχείων, αντί να τα εκτυπώνει, αποτελώντας έτσι µια serverside cache για το δυναµικό σας περιεχόµενο. Ένα από τα πιο δυνατά και σηµαντικά χαρακτηριστικά της PHP είναι η υποστήριξη που έχει για ένα µεγάλο σύνολο βάσεων δεδοµένων. Η συγγραφή µιας σελίδας που υποστηρίζει βάσεις δεδοµένων είναι εξαιρετικά απλή. Οι εξής βάσεις δεδοµένων υποστηρίζονται µέχρι στιγµής : Adabas D Ingres Oracle (OCI7 and OCI8) dbase InterBase Ovrimos Empress FrontBase PostgreSQL FilePro (read-only) msql Solid Hyperwave Direct MS-SQL Sybase IBM DB2 MySQL Velocis Informix ODBC Unix dbm Έχουµε επίσης µια αφαιρετική επέκταση DBX βάσεων δεδοµένων (DBX database abstraction extension) που σας επιτρέπει διάφανα να χρησιµοποιείτε οποιαδήποτε βάση δεδοµένων υποστηρίζεται από αυτή την επέκταση. Επιπλέον η PHP υποστηρίζει το ODBC, το Open Database 25

Connection standard (Ανοιχτό πρότυπο Σύνδεσης Βάσεων δεδοµένων) έτσι µπορείτε να συνδεθείτε σε οποιαδήποτε βάση δεδοµένων που υποστηρίζει αυτό το παγκόσµιο πρότυπο. Η PHP έχει επίσης υποστήριξη για επικοινωνία µε άλλες υπηρεσίες χρησιµοποιώντας πρωτόκολλα όπως LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (στα Windows) και αµέτρητα άλλα. Μπορείτε επίσης να ανοίξετε raw network sockets και να αλληλεπιδράσετε µε οποιοδήποτε άλλο πρωτόκολλο. Η PHP έχει ακόµη υποστήριξη για την περίπλοκη ανταλλαγή δεδοµένων WDDX µεταξύ σχεδόν όλων των Web programming γλωσσών. Μιλώντας για διαεπικοινωνία, η PHP υποστηρίζει instantiation αντικειµένων Java και τα χρησιµοποιεί διάφανα σαν αντικείµενα PHP. Μπορείτε επίσης να χρησιµοποιήσετε την CORBA επέκταση της για να προσπελάσετε remote (αποµακρυσµένα) αντικείµενα. Η PHP έχει εξαιρετικά χρήσιµα χαρακτηριστικά επεξεργασίας κειµένων, από την POSIX επέκταση ή τις Perl regular expressions µέχρι XML parsing αρχείων. Για τη µεταγλώττιση και την πρόσβαση αρχείων XML, υποστηρίζονται τα πρότυπα SAX και DOM. Μπορείτε να χρησιµοποιήσετε την XSLT επέκταση της για να µετατρέπετε τα XML αρχεία σε άλλες µορφές. Καθώς χρησιµοποιείτε την PHP στον τοµέα του e-commerce, θα βρείτε τις Cybercash payment, CyberMUT, VeriSign Payflow Pro και CCVS συναρτήσεις χρήσιµες για τα online προγράµµατα πληρωµής σας. Τελευταίο αλλά σηµαντικό, υπάρχουν πολλές άλλες ενδιαφέρουσες επεκτάσεις, τις mnogosearch search engine συναρτήσεις, πολλά εργαλεία συµπίεσης (gzip, bz2 µετατροπές ηµερολογίου, µεταφράσεις... Η PHP στο σύστηµα Α.Σ.ΠΙΣ. Παραπάνω παραθέσαµε πολλές από τις δυνατοτήτες τις PHP που την έχουν κάνει πολύ δηµοφιλή ανάµεσα στους προγραµµατιστές web database applications. Για όλους αυτούς τους λόγους και κυρίως επειδή είναι πολύ ευέλικτη και γρήγορη στον προγραµµατισµό και την επεξεργασία των script όπως επίσης και επειδή ενσωµατώνεται χωρίς καµία ιδιαίτερη δυσκολία σε οποιαδήποτε σελίδα HTML και της προσδίδει δυνατότητες πολυµορφισµού και πολλαπλής εξόδου επιλέχθηκε να χρησιµοποιηθεί στο σύστηµα Α.Σ.ΠΙΣ. 26

Ενσωµάτωση της PHP στην αρχιτεκτονική του Α.Σ.ΠΙΣ. Αν και η PHP ενσωµατώνεται πολύ εύκολα σε µεµονωµένες σελίδες HTML και µπορεί να τους προσδώσει πολλές δυνατότητες το σύστηµα Α.Σ.ΠΙΣ. από την αρχή σχεδιάστηκε να είναι κάτι περισσότερο. Η PHP δεν εισάχθηκε σε έτοιµες σελίδες HTML αλλά χρησιµοποιήθηκε για να τις κατασκευάζει εξ ολοκλήρου και ξεκινώντας από µηδενική βάση. Οι σελίδες που ζητούν οι χρήστες µέσω ενός web browser είναι καθ ολοκληρίαν PHP script τα οποία ανάλογα µε τις παραµέτρους που δέχονται κατασκευάζουν την κατάλληλη σελίδα και την επιστρέφουν στο χρήστη. Έτσι µπορούµε να διασπάσουµε το σύστηµα σε µικρότερα αλλά γενικευµένα κοµµάτια κώδικα που επιτελούν ένα µέρος της λειτουργικότητας του συστήµατος : Pagebuilder module : Όπως δηλώνει και το όνοµα του το κοµµάτι αυτό του συστήµατος κατασκευάζει τις περισσότερες από τις σελίδες που ζητά ο χρήστης. Database module : Το κοµµάτι αυτό περιέχει όλες τις συναρτήσεις που χρησιµοποιεί το σύστηµα για να εισάγει δεδοµένα στη βάση και να επεξεργαστεί τα ήδη υπάρχοντα. Από το παραπάνω πρότυπο του συστήµατος εξαιρούνται κάποιες σελίδες που κυρίως λόγω της φύσης τους ή/και της θέσης τους µέσα στο σύστηµα και της λειτουργικότητας τους έπρεπε να συγγραφούν µε το χέρι. Οι σελίδες αυτές καλό είναι να αναλυθούν ξεχωριστά από το υπόλοιπο σύστηµα : index.php : Είναι η αρχική σελίδα του συστήµατος. Εδώ ο χρήστης προµηθεύει στο σύστηµα το username και τον κωδικό του. Αυτά τα στοιχεία θα τον αναγνωρίζουν µοναδικά στο σύστηµα και θα καθορίζουν τον τρόπο µε τον οποίο θα εµφανίζονται οι σελίδες που θα ζητά. Αυτή είναι και η σελίδα στην οποία ανακατευθύνεται ένας χρήστης που δεν έχει αναγνωριστεί ακόµη από το σύστηµα αλλά προσπάθησε να προσπελάσει µια σελίδα απευθείας. logout.php : 27

Η σελίδα αυτή καλείται όταν ένας χρήστης θέλει να βγει από το σύστηµα. ιαγράφει τα δεδοµένα του χρήστη από τη µνήµη εργασίας του συστήµατος και τον ανακατευθύνει στην αρχική σελίδα. Pagebuilder module Το κοµµάτι που κατασκευάζει τις περισσότερες από τις σελίδες του συστήµατος είναι το pagebuilder module το οποίο αποτελείται από δύο βασικά script και πολλά µικρότερα τα οποία χρησιµοποιώντας τις συναρτήσεις που ορίζουν τα δύο βασικά script κατασκευάζουν πολλές από τις σελίδες που βλέπει ο χρήστης που αλληλεπιδρά µε το σύστηµα. Τα δύο βασικά script του module είναι το metadata.php και το pagebuilder.php (για λεπτοµέρειες στην υλοποίησή τους δείτε το παράρτηµα Α). metadata.php: Περιέχει όλη τη γνώση του συστήµατος σχετικά µε την αρχιτεκτονική της βάσης δεδοµένων, τους πίνακες, τις συσχετίσεις, τον τύπο των δεδοµένων κάθε πίνακα κ.ά.. Περιέχει πληροφοριές οι οποίες χρησιµοποιούνται στην κατασκευή των σελίδων από τις συναρτήσεις του pagebuilder.php όπως οι περιγραφές των πεδίων και ο τύπος των <input> tags που θα εισάγονται στην html και θα περιέχουν τα δεδοµένα της βάσης που θα εµφανίζονται στον χρήστη. Επίσης περιέχει πληροφορίες για τον έλεγχο της εγκυρότητας των δεδοµένων που γίνεται για κάθε δεδοµένο που εισάγεται στη βάση. Το script είναι οργανωµένο µε τις αρχές του αντικειµενοστρεφούς προγραµµατ ισµού. Για κάθε πίνακα της βάσης υπάρχει ένα αντικείµενο που περιέχει όλες τις απαραίτητες πληροφορίες για τον πίνακα. Επίσης υπάρχει και µια γενική κλάση, από την οποία κληρονοµούν όλα τα αντικείµενα, η οποία περιέχει διάφορες συναρτήσεις για τον χειρισµό των αντικειµένων αυτών (συναρτήσεις που επιστρέφουν το όνοµα του πίνακα, το κύριο κλειδί, τα πεδία κτλ). Η γενική κλάση επίσης ορίζει και µια συνάρτηση η οποία κάνει το validation των δεδοµένων σύµφωνα µε κανονικές εκφράσεις (βλέπε και client side JavaScript). pagebuilder.php: Κατασκευάζει σελίδες που περιέχουν φόρµες για εισαγωγή, επεξεργασία ή διαγραφή δεδοµένων. Επίσης κατασκευάζει σελίδες που περιέχουν πίνακες προβολής δεδοµένων της βάσης. Περιέχει πολλές συναρτήσεις οι οποίες κατασκευάζουν διάφορα κοµµάτια 28

της σελίδας (όπως η συναρτηση buildmenu η οποία κατασκευάζει το µενού επιλογών της σελίδας ανάλογα µε τα δικαιώµατα που έχει ο χρήστης). Οι συναρτήσεις που περιέχει το script καλούνται από διάφορες άλλες σελίδες για να κατασκευάσουν διάφορα κοµµάτια της σελίδας. Συνήθως γίνεται κλήση της κεντρικής συνάρτησης buildpage η οποία φροντίζει για την κλήση των υπολοίπων συναρτήσεων µε τις κατάλληλες για τη σελίδα παραµέτρους. Το script pagebuilder είναι υπεύθυνο για την πλήρη κατασκευή της σελίδας χρησιµοποιώντας δεδοµένα από το metadata script. Κατά την κατασκευή της σελίδας µε την χρήση php εισάγονται τα html tags, τα css styles και η JavaScript. Αλλάζοντας µερικές µόνο παραµέτρους έχουµε τη δηµιουργία νέων σελίδων. Τέλος, επειδή ο µηχανισµός κατασκευής σελίδων είναι συγκεντρωτικός, είναι εύκολο να αλλάξουµε κάτι ή να προσθέσουµε νέες δυνατότητες σε όλες τις σελίδες µε λίγες µικρές αλλαγες στο pagebuilder.php. Database module Το module αυτό όπως ειπώθηκε παραπάνω χρησιµοποιείται για όλες τις διεργασίες εισαγωγής ή επεξεργασίας που αφορούν τη βάση δεδοµένων. εν είναι αουτοτελές αλλά αποτελείται από κάποια µικρότερα script που επιτελούν επιµέρους λειτουργίες. Τα βασικότερα από αυτά είναι τα globals.php, database.php, metadata.php : globals.php : Το αρχείο αυτό χρησιµοποιείται σαν αποθήκη για τις global µεταβλητές που χρειάζονται σε όλα τα script του συστήµατος. Περιέχει έναν πίνακα µέσα στον οποίο ορίζονται όλα αυτά, ονόµατει $config. Παραδείγµατα πεδίων που ορίζονται είναι ο superuser της βάσης δεδοµένων, ο κωδικός του, σταθερές που χρησιµοποιούν διάφορες συναρτήσεις του συστήµατος κ.ά. database.php : Εδώ περιέχονται όλες οι συναρτήσεις που αλληλεπιδρούν σε κατώτατο επίπεδο µε τη βάση δεδοµένων. Όπου χρειάζεται πρόσβαση στη βάση για οποιονδήποτε λόγο χρησιµοποιείται τον εν λόγω script και οι συναρτήσεις του. Περιέχει µια αρκετά ευρία γκάµα συναρτήσεων για εισαγωγή, διαγραφή, ενηµέρωση και επεξεργασία των δεδοµένων της βάσης. metadata.php : Βλέπε στο Pagebuilder module. 29

Το επίπεδο της βάσης δεδοµένων (database tier) Το database tier είναι η βάση ενός web database application. Η κατανόηση των απαιτήσεων του συστήµατος, η επιλογή του λογισµικού του database tier, ο σχεδιασµός βάσεων δεδοµένων και η κατασκευή του tier είναι τα πρώτα βήµατα για την επιτυχηµένη ανάπτυξη web database application. Σε ένα σύστηµα αρχιτεκτονικής τριών επιπέδων το database tier διαχειρίζεται τα δεδοµένα. Η διαχείριση των δεδοµένων τυπικά περιλαµβάνει αποθήκευση και ανάκτηση δεδοµένων, όπως επίσης και διαχείριση αναβαθµίσεων, πρόσβαση, ταυτόχρονη ή ασύγχρονη, από περισσότερες της µιας διεργασίες του middle tier, διασφάλιση της ασφάλειας και της ακεραιότητας των δεδοµένων, καθώς και υποστηρικτικές διαδικασίες όπως δηµιουργία αντιγράφων ασφαλείας. Στα περισσότερα web database applications οι παραπάνω υπηρεσίες προσφέρονται από ένα σύστηµα σχεσιακής βάσης δεδοµένων (RDBMS system) και τα δεδοµένα αποθηκεύονται σε µια σχεσιακή βάση δεδοµένων (relational database). Η διαχείριση σχεσιακών δεδοµένων στο τρίτο tier απαιτεί πολύπλοκο λογισµικό RDBMS. Ευτυχώς τα περισσότερα συστήµατα διαχείρισης βάσεων δεδοµένων είναι σχεδιασµένα έτσι ώστε οι πολυπλοκότητες του λογισµικού να µην είναι φανερές. Για να χρησιµοποιήσει κάποιος αποτελεσµατικά ένα σύστηµα διαχείρισης βάσεων δεδοµένων πρέπει να διαθέτει τις απαραίτητες ικανότητες για να σχεδιάσει µια βάση δεδοµένων και να σχηµατίσει εντολές και να απευθύνει ερωτήσεις (queries) στο σύστηµα διαχείρισης βάσεων δεδοµένων. Για τα περισσότερα συστήµατα διαχείρισης η γλώσσα των ερωτήσεων (query language) είναι η SQL. Η κατανόηση της κρυµµένης αρχιτεκτονικής των συστηµάτων διαχείρισης βάσεων δεδοµένων δεν είναι σηµαντική για τους περισσότερους χρήστες. Στο σύστηµα Α.Σ.ΠΙΣ. για τη διαχείριση των δεδοµένων χρησιµοποιούµε το MySQL RDBMS. Όπως και µε την επιλογή scripting language του middle tier υπάρχουν συχνά διαφωνίες για το πιο σύστηµα διαχείρισης βάσεων δεδοµένων είναι πιο κατάλληλο για ένα δεδοµένο σύστηµα. Η MySQL είναι γρήγορη και είναι η πλέον κατάλληλη για συστήµατα όπου η ανάκτηση των δεδοµένων είναι πιο συχνή από την αλλαγή και όπου µικρές αλλαγές είναι η κύρια κατηγορία των αλλαγών που εφαρµόζονται στα δεδοµένα του συστήµατος. Τα παραπάνω είναι κοινά χαρακτηριστικά των περισσοτέρων web database applications. Επίσης, όπως και η PHP και ο Apache είναι λογισµικό open source. 30

Υπάρχουν και άλλες επιλογές λογισµικού για την αποθήκευση δεδοµένων στο database tier που χρησιµοποιούν µη-σχεσιακές DBMSs. Αυτές περιλαµβάνουν µηχανές αναζήτησης (search engines συστήµατα διαχείρισης εγγράφων (document management systems) και απλές υπηρεσίες gateway όπως λογισµικό για email. Συστήµατα διαχείρισης βάσεων δεδοµένων Ένα σύστηµα διαχείρισης βάσης δεδοµένων αποθηκεύει, ψάχνει και διαχειρίζεται δεδοµένα. Μια βάση δεδοµένων είναι µια συλλογή από δεδοµένα που σχετίζονται µεταξύ τους. Τα αποθηκευµένα δεδοµένα µπορεί να είναι µερικές εγγραφές (entries) ή σειρές (rows) που αποτελούν έναν απλό κατάλογο ονοµάτων, διευθύνσεων και αριθµών τηλεφώνων. Σε αντίθεση µια βάση δεδοµένων µπορεί να περιέχει εκατοµµύρια εγγραφές τον κατάλογο, τις πωλήσεις, τις αγορές και τη µισθοδοσία µιας µεγάλης εταιρίας. Η βάση δεδοµένων του συστήµατος Α.Σ.ΠΙΣ. είναι ένα παράδειγµα µιας µέτριας έως µεγάλης βάσης δεδοµένων. Ένα DBMS είναι µια συλλογή από στοιχεία για να ορίσουµε, κατασκευάσουµε και διαχειριστούµε µια βάση δεδοµένων. Συνήθως όταν αναφερόµαστε σε ένα σύστηµα διαχείρισης βάσης δεδοµένων εννοούµε ένα σχεσιακό DBMS (ή RDBMS). Οι σχεσιακές βάσεις δεδοµένων αποθηκεύουν και διαχειρίζονται τις σχέσεις ανάµεσα στα δεδοµένα, για παράδειγµα οι πελάτες κάνουν παραγγελίες ή τα οινοποιεία σε µια περιοχή. Το Σχήµα 4 δείχνει την απλοποιηµένη αρχιτεκτονική ενός τυπικού συστήµατος διαχείρισης βάσης δεδοµένων. Σχήµα 4. Η αρχιτεκτονική ενός τυπικού DBMS 31