• Nenhum resultado encontrado

Δημιουργία ιστοχώρου υποστήριξης του μαθήματος "Πολυμέσα στη Διαχείριση Πληροφοριών" με χρήση PHP, MySQL και HTML

N/A
N/A
Protected

Academic year: 2023

Share "Δημιουργία ιστοχώρου υποστήριξης του μαθήματος "Πολυμέσα στη Διαχείριση Πληροφοριών" με χρήση PHP, MySQL και HTML"

Copied!
89
0
0

Texto

(1)

ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ

Θέμα : «Δημιουργία ιστοχώρου υποστήριξης του μαθήματος "Πολυμέσα στη Διαχείριση Πληροφοριών" με χρήση PHP, MySQL και HTML.»

Σπουδαστής:

ΙΩΑΝΝΙΔΗΣ Η. ΓΕΩΡΓΙΟΣ Α.Μ. 1068 Εισηγητής:

ΣΤΟΥΠΑ ΚΩΝΣΤΑΝΤΙΝΑ

ΟΚΤΩΒΡΙΟΣ 2007

(2)

ΠΕΡΙΕΧΟΜΕΝΑ

ΚΕΦΑΛΑΙΟ 1Ο : ΕΙΣΑΓΩΓΗ

1.1 Εισαγωγή 5

1.2Εργαλεία 5

1.3 Σκοπός 5

1.4 Όροι Λειτουργίας της Εφαρμογής 5

1.4.1 Δυνατότητες της Εφαρμογής 5

1.4.2 Τύποι Χρηστών 6

1.4.2.1 Καθηγητές του Μαθήματος 6

1.4.2.2 Σπουδαστές του μαθήματος 6

ΚΕΦΑΛΑΙΟ 2ο : ΤΕΧΝΟΛΟΓΙΑ

2.1 PHP Scripting Language 7

2.1.1 Βασικά Χαρακτηριστικά 8

2.1.2 Δυνατότητες της ΡΗΡ 8

2.1.3 Ιστορία και εξέλιξη της ΡΗΡ 11

2.1.3.1 Personal Home Page : Η πρώτη έκδοση της ΡΗΡ 11

2.1.3.2 PHP/FI: Η Δεύτερη έκδοση της ΡΗΡ 11

2.1.3.3 PHP 3: Η Τρίτη έκδοση της ΡΗΡ 12

2.1.3.4 ΡΗΡ 4: Η τελευταία έκδοση της ΡΗΡ 12

2.2 Διακομιστές Διαδικτύου (Web Servers) 14

2.2.1 Apache Web Server 16

2.3 Hypertext Transfer Protocol (HTTP) 16

2.4 MySQL 16

2.4.1 MySQL ή MS Access; 18

2.5 Εγκατάσταση Εργαλείων 19

2.6 Δήλωση της ΡΗΡ4 στον Apache 19

2.6.1 PHP as CGI 19

2.6.2 PHP as a module 20

2.7 Common Gateway Interface (CGI) 21

2.7.1 Μεταβίβαση πληροφορίας σε ένα CGI script 24 2.7.1.1 Μεταβίβαση παραμέτρων από τη γραμμή εντολών 24 2.7.1.2 Μεταβίβαση μεταβλητών περιβάλλοντος στο CGI script 24

(3)

2.7.2 Πλεονεκτήματα και μειονεκτήματα της CGI προδιαγραφής 25

2.8 Το αρχείο ρυθμίσεων 26

2.8.1 Πως αλλάζουμε τις επιλογές ρυθμίσεων χρησιμοποιώντας την ΡΗΡ σαν Apache module

2.8.2 Άλλα interfaces στην PHP 2.8.3 Διάφορες Directives Ρυθμίσεις 2.8.3.1 Επιλογές του httpd

2.8.3.2 Επιλογές Γλώσσας 2.8.3.3 Περιορισμοί Πόρων 2.8.3.4 Χειρισμός Δεδομένων 2.8.3.5 Paths και Κατάλογοι 2.8.3.6 Upload Αρχείων 2.8.3.7 Γενικά SQL

2.8.3.8 Ρυθμίσεις των Directives για τον Debugger 2.9 Λειτουργίες Διαχείρισης Session

2.9.1 Εγκατάσταση

27 29 30 30 30 30 33 36 38 39 39 40 40 ΚΕΦΑΛΑΙΟ 3ο : ΥΛΟΠΟΙΗΣΗ

3.1 Βασικά β Ο Ι Ερωτήματα 41

3.1.1 Σύνδεση με το Διακομιστή Βάσης Δεδομένων 41

3.1.2 Επιλογή μιας Βάσης Δεδομένων 42

3.1.3 Διαχείριση Λαθών 42

3.1.4 Προσθήκη Δεδομένων σε Πίνακα 43

3.1.5 Ανάκτηση Δεδομένων από Πίνακα 43

3.1.6 Αλλαγή Δεδομένων 44

3.1.7 ηά5 45

3.2 Παραδείγματα Κώδικα της Εφαρμογής 45

3.2.1 8ΓχίΚί.ρήρ 45

3.2.2 Βροϋβίθβ.ρήρ 47

3.2.3 άΝοβΜοηΒάοπ.ρήρ 48

3.2.4 θίδθςος^ροϋδίοη.ρΐιρ 50

3.2.5 θίδθςος^νθίΙιηοΙοςΙθδ.ρήρ 51

3.2.6 θΙθ9χο8_8ρ8ηίί8θοη.ρήρ 52

3.2.7 θρΝοςΜΊΜι.ρήρ 55

(4)

3.2.8 epilogi_idiotitas.php 59

3.2.9 epilogi_kathigiti.php 63

3.2.10 provoli_omadon.php 67

3.2.11 uploadaction.php 68

3.2.12 uploadaction1.php 70

3.2.13 vathmoi.php 71

3.3 Κανονικοποίηση 72

3.3.1 Μη Κανονική Μορφή 73

3.3.2 Πρώτη κανονική μορφή 73

3.3.3 Δεύτερη Κανονική Μορφή 73

3.3.4 Τρίτη κανονική μορφή 74

3.4 Οντότητες και συσχετίσεις 74

3.4.1 Διάγραμμα Οντοτήτων - Συσχετίσεων (ER) 75

3.5 Τεκμηρίωση πινάκων 75

3.5.1 Ο πίνακας diagonismata 76

3.5.2 Ο πίνακας login 76

3.5.3 Ο πίνακας omades 77

3.5.4 Ο πίνακας parousies 78

3.5.5 Ο πίνακας users 78

3.5.6 Ο πίνακας vathmoi 79

ΚΕΦΑΛΑΙΟ 4ο : ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

4.1 Αρχική Σελίδα 79

4.2 Επιλογές του καθηγητή 81

4.2.1 Ανέβασμα διαγωνίσματος 81

4.2.2 Ανέβασμα εκπαιδευτικού υλικού 82

4.2.3 Καταχώριση απουσιών 82

4.2.4 Εισαγωγή βαθμολογιών 83

4.2.5 Προβολή ομάδων εργαστηρίων 83

4.3 Επιλογές σπουδαστή 84

4.3.1 Διεξαγωγή διαγωνίσματος 84

4.3.2 Κατέβασμα εκπαιδευτικού υλικού 84

4.3.3 Εμφάνιση απουσιών 84

(5)

4.3.5 Δήλωση ομάδων εργαστηρίων 86

ΒΙΒΛΙΟΓΡΑΦΙΑ 88

(6)

ο

ΚΕΦΑΛΑΙΟ 1 : ΕΙΣΑΓΩΓΗ

1.1 Εισαγωγή

Η συγκεκριμένη εργασία δημιουργήθηκε στα πλαίσια πτυχιακής εργασίας κατά το ακαδημαϊκό έτος 2006 - 2007 για λογαριασμό του Ανώτατου Τεχνολογικού Εκπαιδευτικού Ιδρύματος Καβάλας.

1.2 Εργαλεία

Για να δημιουργηθεί η εφαρμογή χρησιμοποιήθηκε ο συνδυασμός των εργαλείων PHP - MySQL - Apache που διανέμονται δωρεάν στο διαδίκτυο και αναλύονται διεξοδικά στα επόμενα κεφάλαια. Πιο συγκεκριμένα, χρησιμοποιήθηκε η εφαρμογή EasyPHP1-8 η οποία εμπεριέχει τα τρία προαναφερθέντα εργαλεία, τα εγκαθιστά και τα τρία με την εγκατάστασή της και διανέμεται κι αυτή δωρεάν στο διαδίκτυο.

1.3 Σκοπός

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

1.4 Όροι Λειτουργίας της Εφαρμογής

1.4.1 Δυνατότητες της Εφαρμογής

Η παρούσα εφαρμογή μετά την ολοκλήρωση της παρέχει τις εξής υπηρεσίες:

• Ανέβασμα εκπαιδευτικού υλικού

• Ανέβασμα διαγωνισμάτων

• Εισαγωγή Απουσιών

• Εισαγωγή Βαθμολογιών

• Παρακολούθηση ομάδων εργαστηρίων

• Κατέβασμα εκπαιδευτικού υλικού

(7)

• Διεξαγωγή θπ-ΙΙπθ διαγωνισμάτων

• Παρακολούθηση Βαθμολογιών

• Παρακολούθηση Απουσιών

• Δήλωση συμμετοχής σε ομάδα εργαστηρίου.

1.4.2 Τύποι Χρηστών

Οι χρήστες της εφαρμογής χωρίζονται σε δύο κατηγορίες:

• Καθηγητές του μαθήματος

• Σπουδαστές του μαθήματος.

1.4.2.1 Καθηγητές του Μαθήματος

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

1.4.2.2 Σπουδαστές του Μαθήματος

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

(8)

ΚΕΦΑΛΑΙΟ 2ο : ΤΕΧΝΟΛΟΓΙΑ

2.1 PHP Scripting Language

Η PHP (Hypertext Preprocessor) είναι μια ευρέως χρησιμοποιούμενη, ανοιχτού κώδικα και γενικού σκοπού, γλώσσα σεναρίου που είναι ειδικά σχεδιασμένη για την ανάπτυξη εφαρμογών διαδικτύου και μπορεί να ενσωματωθεί μέσα σε κώδικα HTML.

Ας δούμε ένα απλό παράδειγμα:

<html>

<head>

<title>Example</title>

</head>

<body>

<?php

echo "Hi, I'm a PHP script!”;

?>

</body>

</html>

Όπως παρατηρούμε το παραπάνω είναι ένα διαφορετικό script από ένα που θα ήταν γραμμένο σε άλλες γλώσσες προγραμματισμού όπως η PERL ή η C. Δηλαδή, αντί να γράφουμε ένα πρόγραμμα με πολλές εντολές για να εξάγουμε HTML, εδώ γράφουμε ένα HTML script που έχει ενσωματωμένο κώδικα για να κάνει κάτι (σε αυτή την περίπτωση, να εμφανίζει κάποιο κείμενο). Ο κώδικας της PHP περιέχεται μέσα σε ειδικές ετικέτες αρχής και τέλους που μας επιτρέπουν να μεταφερόμαστε μέσα και έξω από τον PHP τρόπο λειτουργίας

Αυτό που διαχωρίζει την PHP από τα client-side Javascripts είναι ότι ο κώδικας εκτελείται στον server (εξυπηρετητή). Αν είχαμε ένα script σαν το παραπάνω στον server μας, ο client θα έπαιρνε τα αποτελέσματα της εκτέλεσης αυτού του script, χωρίς να μπορεί να καταλάβει με κανένα τρόπο τι κώδικας υπάρχει από κάτω. Μπορούμε ακόμα να ρυθμίσουμε τον Web Server μας ώστε να χειρίζεται όλα τα HTML αρχεία με την PHP.

Αν και η ανάπτυξη της PHP εστιάζεται σε server-side scripting (scripting στην πλευρά του διακομιστή), μπορούμε να κάνουμε πολύ περισσότερα με αυτήν.

(9)

2.1.1 Βασικά Χαρακτηριστικά

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

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

• Μπορεί να μεταφραστεί και να τρέξει στα περισσότερα λειτουργικά συστήματα που κυκλοφορούν στην αγορά ( Microsoft Windows, Linux, BSD, Solaris, Macintosh OS X, and UNIX® servers).

• Συνεργάζεται χωρίς προβλήματα με τους πιο δημοφιλείς Web Servers που κυκλοφορούν όπως τον Apache και τον Microsoft IIS.

• Διαθέτει ενσωματωμένες εντολές υποστήριξης για ένα μεγάλο αριθμό βάσεων δεδομένων όπως MySQL, Sybase, Oracle, Ingres. Προσφέρει ένα σύνολο από Database API’s τις ενοποιημένες ODBC συναρτήσεις (unified ODBC functions), που εξασφαλίζουν την προσπέλαση σε μια υποκείμενη βάση δεδομένων, χρησιμοποιώντας τις εγγενείς μεθόδους της εκάστοτε βάσης για να μεγιστοποιήσουν την απόδοση (IBM DB2).

• Είναι πιο απλό να συντάξει κάποιος κώδικα PHP από ότι σε οποιαδήποτε άλλη γλώσσα σεναρίου.

• Μπορεί να χρησιμοποιηθεί στη δημιουργία εικόνων, ανάγνωση / εγγραφή σε αρχεία και για αποστολή email. Για να προσφέρει αυτές τις υπηρεσίες, η PHP επικοινωνεί με αρκετά πρωτόκολλα όπως: HTTP (Ιστοσελίδες), POP3 (e-mail), SNMP και LDAP.

2.1.2 Δυνατότητες της PHP

Η PHP επικεντρώνεται κυρίως στο server-side scripting, έτσι μπορεί να κάνει οτιδήποτε μπορεί ένα άλλο CGI πρόγραμμα, όπως να μαζέψει δεδομένα, να παράγει δυναμικό περιεχόμενο σελίδων, ή να στείλει και να πάρει cookies.

Υπάρχουν τρία κύρια πεδία που χρησιμοποιείται ένα PHP script. •

Server-side scripting. Είναι το κύριο και το πιο συνηθισμένο πεδίο για την PHP.

Εδώ Χρειαζόμαστε τρία πράγματα. Τον PHP μεταγλωττιστή (parser) (CGI ή server

(10)

module), ένα webserver (εξυπηρετητή σελίδων) και ένα web browser. Πρέπει να τρέξουμε τον webserver, με μια συνδεδεμένη εγκατάσταση της PHP. Μπορούμε να προσπελάσουμε τα αποτελέσματα του PHP προγράμματος με ένα web browser, βλέποντας την σελίδα PHP μέσα από τον server.

Command line scripting. Μπορούμε να φτιάξουμε ένα PHP script για να το τρέχουμε χωρίς server ή browser. Χρειαζόμαστε μόνο τον PHP μεταγλωττιστή για να το χρησιμοποιήσουμε με αυτό τον τρόπο. Αυτός ο τρόπος είναι ιδανικός για scripts που εκτελούνται συχνά με τη χρήση της cron (σε *nix ή Linux) ή με τον Task Scheduler (στα Windows). Αυτά τα scripts μπορούν επίσης να χρησιμοποιηθούν για απλές εργασίες επεξεργασίες κειμένου.

Εγγραφή client-side GUI εφαρμογών (Γραφικά περιβάλλοντα χρηστών). Αν θέλουμε να χρησιμοποιήσουμε κάποια προχωρημένα χαρακτηριστικά της PHP στις client-side εφαρμογές μας, μπορούμε να χρησιμοποιήσουμε το PHP-GTK για αυτού του είδους τα προγράμματα. Έχουμε επίσης τη δυνατότητα να γράφουμε cross-platform εφαρμογές με αυτό τον τρόπο. Το PHP-GTK είναι μια επέκταση της PHP και δεν συμπεριλαμβάνεται στην κύρια διανομή.

Η PHP μπορεί να χρησιμοποιηθεί σε όλα τα κύρια λειτουργικά συστήματα, συμπεριλαμβανομένου του Linux, πολλών εκδοχών του Unix (HP-UX, Solaris και OpenBSD), Microsoft Windows, Mac OS X, RISC OS, και πιθανών σε άλλα. Η PHP υποστηρίζει επίσης Apache, Microsoft Internet Information Server, Personal Web Server, Netscape και iPlanet servers, Oreilly Website Pro server, Caudium, Xitami, OmniHTTPd, και πολλούς άλλους webservers. Για την πλειοψηφία των servers η PHP έχει ένα module, για τους υπόλοιπους μπορεί να λειτουργήσει ως ένας CGI επεξεργαστής.

Έτσι με την PHP έχουμε την ελευθερία επιλογής ενός λειτουργικού συστήματος και ενός web server. Επιπλέον, έχουμε επίσης την ελευθερία να

χρησιμοποιήσουμε συναρτησιακό (procedural) ή αντικειμενοστραφή (object oriented) προγραμματισμό, ή μια ανάμιξη τους. Αν και η παρούσα έκδοση δεν υποστηρίζει όλα τα πρότυπα χαρακτηριστικά, μεγάλες βιβλιοθήκες κώδικα και μεγάλες εφαρμογές (συμπεριλαμβανομένης και της βιβλιοθήκης PEAR) είναι γραμμένες μόνο με αντικειμενοστραφή κώδικα.

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

(11)

υποστηρίζει βάσεις δεδομένων είναι εξαιρετικά απλή. Οι εξής βάσεις δεδομένων υποστηρίζονται τώρα:

Adabas D dBase Empress

FilePro (read-only) Hyperwave

IBM DB2 Informix

mSQL FrontBase Ingres InterBase

Oracle (OCI7 and OCI8) Ovrimos

PostgreSQL Solid

Direct MS-SQL Sybase MySQL

ODBC

Velocis Unix dbm

Έχουμε επίσης μια αφαιρετική επέκταση DBX βάσεων δεδομένων (DBX database abstraction extension) που μας επιτρέπει να χρησιμοποιούμε οποιαδήποτε βάση δεδομένων υποστηρίζεται από αυτή την επέκταση. Επιπλέον η PHP υποστηρίζει το ODBC, το Open Database 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 αρχεία.

(12)

2.1.3 Ιστορία και εξέλιξη της PHP

Ο Rasmus Lerdorf είναι ο άνθρωπος που ανέπτυξε την PHP το έτος 1994.

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

Κανένας άλλος δε γνώριζε την ύπαρξή της, μέχρι τις αρχές του 1995 οπότε και έγινε διαθέσιμη η πρώτη έκδοσή της, γνωστή ως Personal Home Page Tools.

2.1.3.1 Personal Home Page: Η πρώτη έκδοση της PHP

Αυτή η έκδοση της PHP αποτελούνταν από μια μηχανή parser που υποστήριζε κάποιες μακροεντολές και βοηθήματα που χρησιμοποιούνταν συχνά στις προσωπικές ιστοσελίδες. Επέτρεπε στους προγραμματιστές να ενσωματώνουν διαδικασίες όπως ένα βιβλίο επισκεπτών και ένα μετρητή αριθμού επισκέψεων στις ιστοσελίδες τους.

2.1.3.2 PHP/FI: Η δεύτερη έκδοση της PHP

Στα μέσα του 1995 ο Lerdorf έγραψε τον αναλυτή (parser) εκ νέου και τον μετονόμασε σε PHP/FI Version 2 (το FI συμβολίζει Form Interpreter). Μπορούσε δηλαδή να διερμηνεύει δεδομένα από μια HTML φόρμα. Εκτός από τις λειτουργίες FI και Personal Home Page Tools η PHP/FI περιελάμβανε υποστήριξη και για την βάση δεδομένων mSQL.

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

Μετά από την PHP/FI ήρθε η PHP 3, με πιο ισχυρές και εμπλουτισμένες δυνατότητες.

(13)

2.1.3.3 PHP 3: Η τρίτη έκδοση της PHP

Μέχρι τα μέσα του 1997 η χρήση της ΡΗΡ ήταν περιορισμένη στους λίγους προγραμματιστές που είχαν συνεισφέρει τον κώδικά τους. Όμως με την αναγνώριση και την ιδιαίτερη δημοτικότητα που είχε αποκτήσει η εξέλιξή της σύντομα έγινε προσπάθεια δημιουργίας μιας μεγαλύτερης και πιο οργανωμένης ομάδας προγραμματιστών και χρηστών. Ο parser ξαναγράφτηκε από την αρχή. Οι Zeev Suraski και Andi Gutmans, σχημάτισαν τον πυρήνα της τρίτης έκδοσης της ΡΗΡ, γνωστός ως ΡΗΡ 3 ο οποίος περιελάμβανε έναν αξιοσημείωτο αριθμό νέων χαρακτηριστικών. Μέσα σε όχι και πολύ χρόνο άρχισε να χρησιμοποιείται για τη δημιουργία εφαρμογών στο διαδίκτυο.

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

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

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

2.1.3.4 PHP 4: Η τελευταία έκδοση της PHP

Η πλέον σύγχρονη έκδοση της ΡΗΡ, έχει πολλά νέα χαρακτηριστικά που επιτρέπουν τις υψηλές επιδόσεις και την προσπέλαση σε ακόμα μεγαλύτερο αριθμό επεκτάσεων (extensions) και βιβλιοθηκών (libraries). Η ΡΗΡ αποτελεί πλέον το πρότυπο για τη δημιουργία εφαρμογών διαδικτύου και από έρευνες που έχουν γίνει διαπιστώθηκε

(14)

ότι χρησιμοποιείται κατά κόρον από πάρα πολλούς χρήστες. Μερικοί από τους συνηθισμένους, εν τούτοις σημαντικούς, παράγοντες που προκάλεσαν αυτήν την εξέλιξη είναι οι εξής:

• Η ΡΗΡ 4 είναι διαθέσιμη για ανάκτηση από την επίσημη ιστοσελίδα της (http://www. php.net).

• Ένας πολύ μεγάλος αριθμός εγγράφων που την υποστηρίζουν (εγχειρίδια, άρθρα) υπάρχουν ελεύθερα στο διαδίκτυο.

• Λόγω των πάρα πολλών χρηστών που έχει η ΡΗΡ υπάρχει πληθώρα από newsgroups και mailing lists όπου μπορεί κάποιος να περιγράψει το πρόβλημά του και να βρει λύση.

• Υπάρχει μια αφοσιωμένη ομάδα από εθελοντές, που διορθώνουν οποιοδήποτε σφάλμα κώδικα έχει αναφερθεί η ανακαλυφθεί (http://www.php.net).

• Αντίθετα με τις άλλες γλώσσες σεναρίων, όπως η ASP(Active Server Pages), η ΡΗΡ έχει ενσωματωμένο ερμηνευτή (interpreter) ο οποίος μεταφράζει τον κώδικα και μπορεί να ανιχνεύσει τυχόν λάθη που υπάρχουν.

• Ένα ακόμα σημαντικό χαρακτηριστικό της ΡΗΡ είναι η μεταφερσιμότητά της (portability).

Η ΡΗΡ είναι συμβατή και μπορεί να συνεργαστεί με οποιονδήποτε συνδυασμό λογισμικού (λειτουργικό σύστημα - διακομιστές διαδικτύου - διακομιστές βάσεων δεδομένων).

Ακολουθούν ορισμένα χαρακτηριστικά που προστέθηκαν στην ΡΗΡ 4.

• Υποστήριξη για Boolean τύπους δεδομένων.

• Υποστήριξη Java και XML.

• Υποστήριξη για FTP.

• Ο τελεστής «===», ο οποίος εκτός από τον κλασικό έλεγχο ισότητας δύο μεταβλητών, ελέγχει και αν έχουν τον ίδιο τύπο.

• Η ικανότητα της ανάκλησης μιας συνάρτησης (fu n c tio n ^ σημείο του προγράμματος όπου δεν έχει υλοποιηθεί ακόμα ο κώδικάς της.

• Υποστήριξη για κλήση διαδικασιών με αναφορά-call by reference (&) . Όπως είναι γνωστό αυτό βοηθά στην σύνδεση δύο μεταβλητών όπου η τιμή της μίας εξαρτάται άμεσα από την τιμή της άλλης και ενημερώνεται άμεσα η μία όταν αλλάξει η άλλη.

• SAPI (Server Application Programming Interface). Αυτό το χαρακτηριστικό εμπλουτίζει την υποστήριξη διακομιστών διαδικτύου(Web Servers).

• Υποστήριξη για πολλούς αλγορίθμους κρυπτογράφησης όπως οι DES, MD5, Blowfish kai SHA1. μέσω της βιβλιοθήκης mcrypt, η ΡΗΡ 4 υποστηρίζει πλήρως την κρυπτογράφηση.

(15)

• Στην ΡΗΡ 4, έχουν ξεπεραστεί όλοι οι περιορισμοί στη σύνταξη των εντολών που υπήρχαν σε παλαιότερες εκδόσεις.

• Οι μέθοδοι GET, POST υποστηρίζουν πλέον πίνακες που έχουν πάνω από μία διάσταση (δισδιάστατους, τρισδιάστατους).

• Το αρχείο αρχικής διαμόρφωσης (php.ini) είναι πολύ πιο κατανοητό και διαμορφώσιμο.

• Στην ΡΗΡ 4 υποστηρίζεται καλύτερα η δημιουργία κλάσεων και αντικειμένων.

2.2 Διακομιστές Διαδικτύου (Web Servers)

Αναρωτηθήκατε ποτέ για τους μηχανισμούς με τους οποίους μία ιστοσελίδα εμφανίζεται στον πλοηγό που χρησιμοποιείτε όταν δίνετε ένα συγκεκριμένο URL(Uniform Resource Locator);

Γενικά όλα τα μηχανήματα που είναι συνδεδεμένα στο Internet κατηγοριοποιούνται σε δύο τύπους:

• ^ A0^ g(Clients)

Διακομιστές(Servers)

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

Ανάλογα με τις υπηρεσίες που προσφέρουν οι διακομιστές στο διαδίκτυο διαχωρίζονται σε:

Web Servers

E-mail Servers

FTP Servers

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

(16)

Σχήμα 2.1 - Διαδικασία εμφάνισης μιας σελίδας στον πελάτη

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

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

Η γλώσσα μορφοποίησης που χρησιμοποιείται για τη δημιουργία ιστοσελίδων, είναι η HTML (Hypertext Markup Language) και το πρωτόκολλο το οποίο χρησιμοποιείται για την μεταφορά των σελίδων από τον διακομιστή στον πελάτη είναι το HTTP (Hypertext Transfer Protocol).

Ενδεικτικά αναφέρουμε μερικούς από τους δημοφιλέστερους Web Servers που κυκλοφορούν στην αγορά και στο διαδίκτυο:

• Apache Web Server

• Microsoft Internet Information Server (IIS)

• IBM HTTP Server

Στη συγκεκριμένη εφαρμογή χρησιμοποιείται μία έκδοση του Apache Web Server.

(17)

2.2.1 Apache Web Server

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

2.3 Hypertext Transfer Protocol (HTTP)

Το πρωτόκολλο HTTP καθορίζει τον τρόπο επικοινωνίας στο διαδίκτυο μεταξύ των διακομιστών και των πελατών (servers - clients). Είναι ένα γενικό, αντικειμενοστραφές πρωτόκολλο που μεταβιβάζει πληροφορία μεταξύ των διακομιστών και των πελατών.

Ξεκίνησε από την έκδοση HTTP/0.9 κατά τη διάρκεια της πρώιμης ανάπτυξης του διαδικτύου και ακολούθησε η έκδοση HTTP/1.0 το 1995. Η πιο πρόσφατη έκδοσή του, HTTP/1.1, παρέχει περισσότερη λειτουργικότητα και υποστηρίζει πολλαπλές συναλλαγές μεταξύ πελάτη και διακομιστή κατά τη διάρκεια της ίδιας αίτησης.

Μια συναλλαγή βασισμένη στο πρωτόκολλο HTTP αποτελείται από τα ακόλουθα στάδια:

Σύνδεση - Ο πελάτης αποκαθιστά σύνδεση με τον διακομιστή.

Αίτηση - Ο πελάτης στέλνει το μήνυμα της αίτησης στον διακομιστή.

Απάντηση - Ο διακομιστής διαδικτύου στέλνει την απάντηση.

Κλείσιμο - Η σύνδεση τερματίζεται από τον διακομιστή.

2.4 MySQL

Πολλοί είναι εκείνοι που έχουν συνδυάσει την άνοδο της "δημοτικότητας" της MySQL με την αντίστοιχη του Linux. Το τελευταίο, αν και εξακολουθεί να παρουσιάζει

(18)

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

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

Ακολουθώντας το ίδιο μοντέλο χρήσης με το Linux, το GNU (General Public License), το σύστημα MySQL σιγά σιγά καθιερώνεται στη συνείδηση των ειδικών πληροφορικής σαν ένα ποιοτικό προϊόν, αντίστοιχο της Access της Microsoft. Φυσικά δε μπορεί να συγκριθεί με τον MS SQL Server ή την Oracle, για πολύ μεγάλες εγκαταστάσεις και μεγάλες βάσεις.

Συνοπτικά μπορεί κανείς να αναφέρει τα πλεονεκτήματα της MySQL:

• Είναι οικονομκή (και μερικές φορές δωρεάν)

• Είναι πιο κατάλληλη για χρήση στο Internet

• Είναι ιδιαίτερα βελτιστοποιημένη για ταχύτητα στην ανάκτηση δεδομένων

• Παρέχει ευκολίες στο backup

• Είναι συμβατή και μεταφέρσιμη σε διάφορες πλατφόρμες και για διάφορα εργαλεία ανάπτυξης

Η MySQL είναι ένα σύστημα διαχείρισης βάσεων δεδομένων. Ακολουθεί το σχεσιακό μοντέλο (relational) και είναι συμβατή με ANSI-SQL. Είναι η πιο δημοφιλής, ανοιχτού κώδικα, SQL βάση δεδομένων που αναπτύσσεται και παρέχεται από την MySQL AB. Η MySQL AB είναι μια εμπορική εταιρεία που παρέχει υπηρεσίες γύρω από τη βάση δεδομένων MySQL.

Το MySQL Database λογισμικό είναι ένα client/server σύστημα που αποτελείται από έναν πολυνηματικό(multithreaded) SQL server που υποστηρίζει διαφορετικά backends, αρκετά διαφορετικά προγράμματα πελάτη και βιβλιοθήκες, εργαλεία διαχειριστή(administrative tools), και ένα ευρύ φάσμα προγραμματιστικών

(19)

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

Σε αντίθεση με την Access, η MySQL μπορεί να χρησιμοποιηθεί σε ένα μεγάλο αριθμό λειτουργικών συστημάτων (Windows, Linux, AIX, Solaris κα). Είναι γραμμένη σε C και C++ οπότε με τη χρήση των αντίστοιχών compiler γίνεται δυνατή η χρήση της σε οποιοδήποτε σύστημα.

Η Access έχει ένα προτεινόμενο όριο 20 ταυτόχρονων συνδέσεων από χρήστες του internet σε εφαρμογές Internet και δυναμικών site. Ο όρος ταυτόχρονη σύνδεση, αναφέρεται σε επίπεδο διεργασίας (process) λειτουργικού συστήματος και όχι γενικά σύνδεση επσκέπτη στο site που τη χρησιμοποιεί. Απλά όσο αυξάνονται οι επισκέπτες του site, τόσο αυξάνονται και οι ταυτόχρονες "αιτήσεις" στη βάση πίσω από το site. Η MySQL μπορεί να χειριστεί μέχρι 255 ταυτόχρονες συνδέσεις. Παράλληλα είναι και ταχύτερη από την Access.

Πέρα από τον αριθμό χρηστών, η απόδοσή της είναι καλύτερη και σε μεγαλύτερο όγκο βάσεων δεδομένων. Οι βάσεις Access με μεγάλο μέγεθος (πάνω από 100MB) αρχίζουν να "σέρνονται" ενώ οι αντίστοιχες MySQL συνεχίζουν με την ίδια απόδοση. Αν και η έκδοση MS Access 2002 έχει βελτιωθεί αρκετά, εξακολουθεί να υστερεί της MySQL.

Η MySQL υστερεί σε εφαρμογές με πολύπλοκες σχεσιακές βάσεις. Παράλληλα απουσιάζει υποστήριξη για αποθηκευμένες διαδικασίες (stored procedures, event procedures της Access) καθώς και transaction processing.

Τα κενά που προαναφέρθηκαν καλύπτονται από την έκδοση 4 της mySql.

2.4.1 MySQL ή MS Access;

Η έκβαση της μάχης αυτής είναι αβέβαιη. Η Microsoft μας έχει συνηθίσει σε ποιοτικό λογισμικό και συνεχή του αναβάθμιση και ανανέωση. Η "απειλή" της MySQL δεν πιστεύουμε ότι θα αφήσει ασυγκίνητη την εταιρεία. Παράλληλα, η πλήρης επικράτηση του MS Office και των Windows στα PC των επιχειρήσεων της δίνει ένα σταθερό προβάδισμα στις προτιμήσεις των χρηστών. Το φιλικό γραφικό περιβάλλον εργασίας της Access δίνει την ευκαιρία και σε μη προγραμματιστές, να αναπτύξουν εφαρμογές βάσεων δεδομένων.

Εκεί που σίγουρα θα γίνει μάχη είναι στις εφαρμογές για το Internet.

(20)

2.5 Εγκατάσταση Εργαλείων

Η εγκατάσταση των εργαλείων, θα γίνει όπως προαναφέραμε με την εγκατάσταση της EasyPHP1-8. Με το πέρας της εγκατάστασης της EasyPHP1-8, θα υπάρχουν εγκατεστημένα στον υπολογιστή μας ο Apache server, η mySql καθώς και η PHP, έτοιμα για χρήση. Εάν είναι αναγκαίο, μπορούν να γίνουν και οι απαραίτητες ρυθμίσεις για το κάθε εργαλείο ξεχωριστά.

2.6 Δήλωση της PHP4 στον Apache

Υπάρχουν δύο τρόποι που μπορεί η PHP να δηλωθεί στον Apache Web Server:

• . PHP as CGI

• PHP as a module

2.6.1 PHP as CGI

Στο αρχείο διαμόρφωσης httpd.conf του Apache προσθέτουμε τις παρακάτω γραμμές :

ScriptAlias /php/ "C:/php/"

AddType application/x-httpd-php .php AddType application/x-httpd-php .php3 AddType application/x-httpd-php .php4

Action application/x-httpd-php "/php/php.exe"

Εδώ η PHP εγκαθίσταται ως εκτελέσιμο (Scriptalias). Δηλώνουμε στον Apache που βρίσκεται ο parser και όποτε κάποιος χρήστης καλεί ένα αρχείο που περιέχει κώδικα php (πιο συγκεκριμένα .php ή .php3 ή .php4 ή .phtml) τότε ο Apache ενεργοποιεί τον parser της PHP εκτελώντας από τη γραμμή εντολών την εντολή c:\php\php.exe [αρχείο],

(21)

και αφού το αρχείο μεταφραστεί και εκτελεστεί, ο Apache στέλνει τα αποτελέσματα στο χρήστη.

2.6.2 PHP as a module

Στην περίπτωση αυτή η PHP φορτώνεται ως υπομονάδα (module) στον Apache.

Εγκαθίσταται δηλαδή εσωτερικά στον Apache σαν διασύνδεση προγράμματος εφαρμογής (SAPI - Server Application Programming Interface). Έτσι δεν υπάρχει η ανάγκη να τρέχει κάθε φορά ο parser της PHP.

Στη συνέχεια προσθέτουμε στο αρχείο διαμόρφωσης httpd.conf του Apache τις γραμμές :

Loadmodule php4_module c:/php/sapi/php4apache2.dll AddType application/x-httpd-php .php .phtml .php3

Κάνουμε επανεκκίνηση τον Apache για να ισχύσουνε οι αλλαγές που κάναμε.

Έπειτα για να δοκιμάσουμε αν όλα δουλεύουν σωστά γράφουμε το εξής σενάριο (script) :

<?php

phpinfo();

?>

και το τοποθετούμε στον κατάλογο ρίζα που έχουμε ορίσει (εδώ τον κατάλογο phpWeb).

Ανοίγοντας το αρχείο στον browser θα πρέπει να δούμε την παρακάτω οθόνη

Σχήμα 2.2 - Οθόνη εμφάνισης στοιχείων της ΡΗΡ

(22)

2.7 Common Gateway Interface (CGI)

Πρόκειται για μία προδιαγραφή μεταφοράς πληροφορίας ανάμεσα στον διακομιστή δικτύου και σ’ ένα CGI πρόγραμμα.

Το λογισμικό πλοήγησης στο διαδίκτυο δεν χρειάζεται να γνωρίζει πολλά για τα έγγραφα που αιτείται. Από τη στιγμή που υποβάλλει την απαιτούμενη διεύθυνση URL στον διακομιστή δικτύου, ανακαλύπτει τι θα πάρει όταν επιστρέψει το αποτέλεσμα. Ο διακομιστής τροφοδοτεί συγκεκριμένους κώδικες, χρησιμοποιώντας την προδιαγραφή ΜΙΜΕ (Multipurpose Internet Mail Extensions) για να επιτρέψει στον πλοηγό να διαχωρίζει τα συστατικά στοιχεία, π.χ. να εμφανίσει στην οθόνη μια εικόνα ή να σώσει στο δίσκο ένα αρχείο (download).

Ο διακομιστής από μόνος του έχει την ικανότητα μόνο να στέλνει έγγραφα και να πληροφορεί τον πλοηγό για το είδος των εγγράφων που στέλνει. Εν τούτοις, μπορεί επίσης να εκκινεί και άλλα προγράμματα. Όταν αναγνωρίζει ότι το URL δείχνει σ’ ένα αρχείο που περιέχει κώδικα HTML, απλώς το στέλνει, ενώ όταν το URL δείχνει σ’ ένα πρόγραμμα ή σενάριο (script), τότε εκτελεί το πρόγραμμα και στέλνει στον πλοηγό την έξοδο του προγράμματος σαν να ήταν αυτή το αρχείο.

Η CGI προδιαγραφή καθορίζει το πώς επικοινωνούν τα scripts με τον διακομιστή δικτύου. Ένα CGI script ορίζεται σαν οποιοδήποτε script που έχει σχεδιαστεί για να αποδέχεται και να επιστρέφει δεδομένα τα οποία είναι προσαρμοσμένα (συμβατά) με την CGI προδιαγραφή. Μ’ αυτόν τον τρόπο, θεωρητικά θα μπορούσαμε να ξαναχρησιμοποιήσουμε scripts συμβατά με την προδιαγραφή CGI ανεξάρτητα με τον διακομιστή που χρησιμοποιείται, αν και στην πράξη υπάρχουν διαφορές που επηρεάζουν τη συμβατότητα.

Στο παρακάτω σχήμα εξηγείται η λειτουργία του μηχανισμού CGI δείχνοντας τον διακομιστή διαδικτύου που μπορεί να προσπελάσει μια βάση δεδομένων ή οποιαδήποτε άλλη πηγή δεδομένων. Στη συνέχεια δημιουργεί την έξοδο ( κώδικας HTML ) για μεταβίβαση στον πελάτη.

(23)

Σχήμα 2.4 - Μηχανισμός CGI

Ο διακομιστής διαδικτύου πριν ξεκινήσει την εκτέλεση του script, προετοιμάζει κάποιες μεταβλητές περιβάλλοντος (environment variables) οι οποίες αναπαριστούν την τρέχουσα κατάσταση του διακομιστή που ζητάει την πληροφορία. Το script παίρνει αυτή την πληροφορία και διαβάζει την καθορισμένη ροή εισόδου (Standard Input Stream).

Αφού κάνει την απαραίτητη επεξεργασία γράφει την έξοδο-τα αποτελέσματα- στην καθορισμένη ροή εξόδου (Standard Output Stream). Συγκεκριμένα το script είναι υπεύθυνο να στείλει την πληροφορία της ΜΙΜΕ επικεφαλίδας (διαχωρισμός συστατικών στοιχείων) πριν από το κυρίως μέρος του αποτελέσματος. Τα CGI scripts μπορούν να υλοποιηθούν σε οποιαδήποτε γλώσσα προγραμματισμού, υπό τον όρο ότι η εκάστοτε γλώσσα υποστηρίζει την ανάγνωση και μεταβολή των μεταβλητών περιβάλλοντος ενός λειτουργικού συστήματος. Αυτό σημαίνει ότι, στο λειτουργικό σύστημα Unix, τα scripts μπορούν να υλοποιηθούν σε Perl, PHP, Java, C ή σχεδόν σε οποιαδήποτε από τις κυριότερες γλώσσες προγραμματισμού. Όσον αφορά το λειτουργικό σύστημα των Windows, τα scripts μπορούν να υλοποιηθούν σαν ομαδικά αρχεία DOS (batch files), ή χρησιμοποιώντας τις Visual Basic, C/C++, ή Delphi.

Ο χρήστης που χρησιμοποιεί τον πλοηγό δεν αντιλαμβάνεται άμεσα ότι εκτελείται ένα CGI script, πράγμα που αποτελεί ένα από τα πλεονεκτήματά του. Αρκετά πράγματα πρέπει να συμβούν για να εκτελεστεί επιτυχώς ένα CGI script:

(24)

1. Ο χρήστης καλεί το script μέσω του πλοηγού πατώντας ένα κουμπί η έναν σύνδεσμο. Το script μπορεί να μπει σε λειτουργία και όταν ο πλοηγός φορτώνει ένα έγγραφο HTML.

2. Ο πλοηγός καλεί τον διακομιστή δικτύου ζητώντας άδεια για να τρέξει το script.

3. Ο διακομιστής ελέγχει εάν ο αιτών έχει τα απαραίτητα δικαιώματα για να εκτελέσει το CGI script και φυσικά εάν υπάρχει το εν λόγω script.

4. Ο διακομιστής προετοιμάζει τις μεταβλητές περιβάλλοντος και ξεκινάει την εκτέλεση του script.

5. Το CGI script εκτελείται και διαβάζει τις μεταβλητές περιβάλλοντος και την καθορισμένη ροή εισόδου.

6. Το CGI script στέλνει τις κατάλληλες ΜΙΜΕ επικεφαλίδες στην καθορισμένη ροή εξόδου ακολουθούμενες από την έξοδο του script και τερματίζει.

7. Ο διακομιστής στέλνει τα δεδομένα στην καθορισμένη ροή εξόδου προς τον πλοηγό και κλείνει την σύνδεση.

8. Ο πλοηγός εμφανίζει την πληροφορία που έχει αποσταλεί από τον διακομιστή.

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

(25)

2.7.1 Μεταβίβαση πληροφορίας σ’ ένα CGI script

Υπάρχουν τέσσερις διαθέσιμοι μέθοδοι μεταβίβασης πληροφορίας από τον πλοηγό σ’ ένα CGI script. Από αυτές θα περιγράψουμε τις δύο πρώτες:

• Μεταβίβαση παραμέτρων από τη γραμμή εντολών,

• Μεταβίβαση μεταβλητών περιβάλλοντος στο CGI script,

• Μεταβίβαση πληροφορίας μέσω της καθορισμένης ροής εισόδου,

• Χρησιμοποιώντας πληροφορία επιπλέον διαδρομών.

2.7.1.1 Μεταβίβαση παραμέτρων από τη γραμμή εντολών

Η γλώσσα μορφοποίησης υπερκειμένου HTML παρέχει την ετικέτα <ISINDEX> για την αποστολή παραμέτρων σ’ ένα CGI script μέσω της γραμμής εντολών. Η ετικέτα αυτή τοποθετείται στο τμήμα <HEAD> του υπερκειμένου, λέγοντας στον πλοηγό να δημιουργήσει ένα πεδίο στην ιστοσελίδα όπου ο χρήστης θα μπορεί να εισάγει λέξεις κλειδιά για αναζήτηση. Ωστόσο ο μόνος τρόπος για να χρησιμοποιηθεί αυτή η μέθοδος είναι να δημιουργείται το υπερκείμενο εξ ολοκλήρου από το CGI script μαζί με την ενσωματωμένη <ISINDEX> ετικέτα, όπως επίσης και να παράγονται τα αποτελέσματα από την αναζήτηση με λέξεις κλειδιά.

2.7.1.2 Μεταβίβαση μεταβλητών περιβάλλοντος στο CGI script

Ένας δεύτερος τρόπος είναι η μεταβίβαση παραμέτρων μέσω των μεταβλητών περιβάλλοντος. Όπως γνωρίζουμε ο διακομιστής, πριν βάλει σε λειτουργία το CGI script, δημιουργεί αυτόματα τις μεταβλητές περιβάλλοντος. Υπάρχουν πολλές διαφορετικές μεταβλητές περιβάλλοντος που μπορούν να χρησιμοποιηθούν. Μία από τις πιο χρήσιμες, στο πλαίσιο μιας βάσης δεδομένων, είναι η QUERY_STRING. Αυτή η μεταβλητή ορίζεται όταν σε μία φόρμα HTML χρησιμοποιείται η μέθοδος GET. Περιέχει μια κωδικοποιημένη συνένωση των δεδομένων που έχει καθορίσει ο χρήστης στην HTML φόρμα. Έστω μια φόρμα που χρησιμοποιεί την μέθοδο GET και έχει δύο πεδία: username και Password.

Όταν ο χρήστης - αφού τα συμπληρώσει - επιβεβαιώσει την ενέργεια πατώντας το αντίστοιχο κουμπί τότε θα παραχθεί το ακόλουθο URL (ας υποθέσουμε ότι τα πεδία username και password περιέχουν τις τιμές «user» και «pass» αντίστοιχα):

(26)

<url σελίδας>/cgi-bin/submit.cgi?username=user&password=pass

και η μεταβλητή περιβάλλοντος QUERY STRING θα περιέχει την συμβολοσειρά:

username=user&password=pass

Τα ζευγάρια μεταβλητών όνομα - τιμή συνενώνονται με το σύμβολο διαχωρισμού

& και με ειδικούς χαρακτήρες (παράδειγμα το κενό αντικαθίσταται με το σύμβολο +). Το CGI script μπορεί να αποκωδικοποιήσει την εν λόγω πληροφορία και να την εκμεταλλευτεί.

2.7.2 Πλεονεκτήματα και μειονεκτήματα της CGI προδιαγραφής

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

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

Αυτό φυσικά αυξάνει τη χρονική απόκριση και το φόρτο επεξεργασίας.

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

(27)

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

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

Μπορεί να το αντιμετωπίσει με τους ακόλουθους τρόπους:

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

• Να εμφανίσει ξανά ολόκληρη την φόρμα, με τις τιμές των πεδίων που είχαν συμπληρωθεί και να επιτρέπει στον χρήστη να κάνει διορθώσεις ή να συμπληρώσει τα στοιχεία που λείπουν.

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

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

2.8 Το αρχείο ρυθμίσεων

Το αρχείο ρυθμίσεων (με όνομα php3.ini στην PHP 3.0, και απλά php.ini από την PHP 4.0) διαβάζεται όταν ξεκινά η PHP. Για τις server module εκδόσεις της PHP, αυτό συμβαίνει μόνο όταν ξεκινά ο Webserver. Για τις CGI και CLI εκδόσεις, συμβαίνει σε κάθε κλήση.

Η προεπιλεγμένη τοποθεσία του php.ini είναι μια επιλογή που ορίζεται κατά το compile, αλλά μπορεί να αλλαχτεί για τις CGI και CLI εκδόσεις με το -c switch που δίνεται

Referências

Documentos relacionados

Αυτό που μπορούμε να κάνουμε στην αρχή είναι, να φιλτράρουμε τα χρώματα της εικόνας ξεχωρίζοντας το χρώμα της μπάλας από τα υπόλοιπα χρώματα και στη συνέχεια να ορίσουμε τις