Next Previous Contents

16. PHP Hypertext Preprocessor, μια scripting γλώσσα για την PostgreSQL η οποία ενσωματώνεται σε html και εκτελείται στο Server

Εργαλείο διασύνδεσης με το WWW

Το παλιό όνομα είναι Professional Home Pages (PHP 3) και το νέο όνομα είναι PHP Hypertext Pre-Processor

Για ερωτήσεις, στείλτε e-mail στο :

Το PHP 3 είναι μια scripting γλώσσα για την PostgreSQL η οποία ενσωματώνεται σε html και εκτελείται στο Server. Σας επιτρέπει να γράφετε απλά scripts στα αρχεία .HTML παρόμοια με την JavaScript, μόνο που αντίθετα με την JavaScript, το PHP 3 δεν εξαρτάται από το browser. Το JavaScript είναι μια γλώσσα η οποία ενσωματώνεται σε html και τρέχει στο client-μέρος ενώ το PHP 3 εκτελείται στο Server. Το PHP 3 είναι παρόμοιο στην σύλληψη με το προϊόν της Netscape LiveWire Pro. Αν έχετε τα απαιτούμενα χρήματα, και τρέχετε τον εμπορικό Server της Netscape και έχετε ένα από τα υποστηριζόμενα λειτουργικά συστήματα, ίσως θα πρέπει να ρίξετε μια ματιά στο LiveWire Pro. Αν σας αρέσει το δωρεάν, ταχύτατα αναπτυσσόμενο λογισμικό που έρχεται με όλο τον πηγαίο κώδικα πιθανά να σας αρέσει το PHP 3.

16.1 Κύρια χαρακτηριστικά

Υποστήριξη στάνταρ CGI, FastCGI και Apache module. Σαν ένα στάνταρ πρόγραμμα CGI, το PHP 3 μπορεί να εγκατασταθεί σε οποιαδήποτε μηχανή Unix και να τρέξει σε οποιοδήποτε Unix web server. Με την υποστήριξη του νέου στάνταρ FastCGI, το PHP 3 έχει το πλεονέκτημα των βελτιώσεων στην ταχύτητα που οφείλονται σε αυτό το μηχανισμό. Σαν Apache module, το PHP 3 γίνεται εξαιρετικά ισχυρό και τρομακτικά γρήγορη εναλλακτική του προγραμματισμού σε CGI.

16.2 Αναγνώριση/Ευχαριστίες

* Μεγάλα κομμάτια αυτού του κώδικα αναπτύχθηκαν στο και για το Πανεπιστήμιο του Τορόντο. Πολλές ευχαριστίες στον Lee Oattes του Τμήματος Ανάπτυξης Δικτύων του πανεπιστημίου για τις συνεχείς εποικοδομητικές κριτικές του.

* Ο κώδικας υποστήριξης της PostgreSQL γράφτηκε από τον Adam Sussman

* Αναρίθμητοι άλλοι, βοήθησαν στο να ελεγχθεί και να αποσφαλματωθεί το πακέτο.

16.3 PHP 3 - Σύντομο Ιστορικό

Το PHP ξεκίνησε την ζωή του ως cgi κώδικας επικάλυψης (cgi wrapper) γραμμένος σε Perl. Δεν προοριζόταν για τίποτα πέρα από προσωπική χρήση. Το όνομα του πρώτου αυτού πακέτου ήταν Personal Home Page Tools, και αργότερα έγινε Personal Home Page Construction Kit.

Γράφτηκε ένα εργαλείο για να ενσωματώνει εύκολα ερωτήσεις SQL σε web σελίδες. Ήταν βασικά ένα ακόμα CGI wrapper που μετέφραζε ερωτήσεις SQL και έκανε την δημιουργία φορμών και πινάκων από τις ερωτήσεις μια εύκολη υπόθεση. Το εργαλείο αυτό ονομάστηκε FI (Form Interpreter).

Το PHP/FI έκδοση 2.0 είναι ένα ενιαίο πρόγραμμα, εξ'ολοκλήρου ξαναγραμμένο, που αποτελεί τον συνδυασμό των δύο παραπάνω πακέτων. Έχει τώρα πια εξελιχθεί σε σημείο που είναι μια απλή προγραμματιστική γλώσσα ενσωματωμένη σε αρχεία HTML. Το αρχικό ακρωνύμιο, PHP, έμεινε. Δεν είναι καν αντιπροσωπευτικό πια. Το PHP/FI χρησιμοποιείται περισσότερο από ολόκληρα web sites σήμερα, παρά για μικρές εγκαταστάσεις Προσωπικών Σελίδων (Personal Home Page). Με όποιο όνομα, εξαλείφει την ανάγκη για τα πολυάριθμα μικρά Perl cgi προγράμματα, επιτρέποντας σας να βάλετε μικρά scripts απευθείας στα HTML αρχεία σας. Αυτό επιταχύνει την ολική ταχύτητα των web pages σας, μια που η καθυστέρηση του κλωνισμού (forking) της Perl σε πολλαπλά αντίτυπα έχει εξαλειφθεί. Κάνει επίσης ευκολότερη την διαχείριση μεγάλων web sites τοποθετώντας όλα τα συστατικά μιας web page σε ένα μόνο html αρχείο. Ενσωματώνοντας υποστήριξη για διάφορες βάσεις, κάνει την ανάπτυξη σελίδων-με-δυνατότητες-χρήσης-βάσης τετριμμένη. Πολλοί βρίσκουν την ενσωματωμένη φύση του προγράμματος πολύ ευκολότερη παρά το να προσπαθούν να δημιουργούν ξεχωριστά αρχεία HTML και CGI.

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

16.4 Τι μπορώ να κάνω, λοιπόν, με το PHP/FI ;

Το πρώτο πράγμα που θα παρατηρήσετε αν τρέξετε μια σελίδα μέσω του PHP/FI είναι ότι προσθέτει ένα footer με πληροφορίες σχετικά με τον αριθμό προσβάσεων στη σελίδα σας (αν έχετε μεταγλωττίσει την καταγραφή προσβάσεων στο εκτελέσιμο). Αυτό είναι ένα πολύ μικρό δείγμα του τι μπορεί να κάνει για σας το PHP/FI. Παίζει τον εξίσου σημαντικό ρόλο του μεταφραστή cgi σε φόρμες, από εκεί βγαίνει και to FI μέρος του ονόματος. Για παράδειγμα, αν δημιουργήσετε μια φόρμα σε μία από τις web σελίδες σας, χρειάζεστε κάτι για να επεξεργαστεί την πληροφορία σε αυτή τη φόρμα. Ακόμη και αν απλά θέλετε να περάσετε πληροφορία σε μια άλλη σελίδα, θα πρέπει να χρησιμοποιήσετε ένα πρόγραμμα cgi για να το κάνετε αυτό. To PHP/FI κάνει εξαιρετικά εύκολο το να πάρετε δεδομένα από μια φόρμα και να κάνετε κάτι με αυτά.

16.5 Ένα απλό παράδειγμα

Ας υποθέσουμε ότι έχετε μια φόρμα:

<FORM ACTION="/cgi-bin/php.cgi/~userid/display.html" METHOD=POST> 
<INPUT TYPE="text" name="name"> 
<INPUT TYPE="text" name="age"> 
<INPUT TYPE="submit"> 
<FORM> 
Το αρχείο display.html θα μπορούσε να περιέχει κάτι σαν το παρακάτω:
< ?echo "Hi $ name, you are $ age years old!<p>" >
Είναι τόσο απλό! Το PHP/FI δημιουργεί αυτόματα μια μεταβλητή για κάθε input field στη φόρμα σας. Μπορείτε τότε να χρησιμοποιήσετε αυτές τις μεταβλητές στο αρχείο ACTION URL.

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

<?
    if($age>50);
        echo "Hi $name, you are ancient!<p>";
    elseif($age>30);
        echo "Hi $name, you are very old!<p>";
    else;
        echo "Hi $name.";
    endif;
>
Το PHP/FI παρέχει μία πολύ ισχυρή scripting γλώσσα που θα κάνει πολύ περισσότερα απ' ότι κάνουν τα παραπάνω απλά παραδείγματα. Δείτε το τμήμα στο "PHP/FI Script Language" για περισσότερες πληροφορίες.

Μπορείτε να καθορίσετε επίσης στο PHP/FI ποιος επιτρέπεται να έχει πρόσβαση στις σελίδες σας. Αυτό επιτυγχάνεται με μια ενσωματωμένη οθόνη ρύθμισης. Με αυτή θα μπορούσατε για παράδειγμα να καθορίσετε ότι μόνο τα άτομα από συγκεκριμένα domains θα μπορούν να δουν τις σελίδες σας, ή θα μπορούσατε να δημιουργήσετε ένα κανόνα που θα προστάτευε μερικές σελίδες σας με κωδικό. Δείτε το τμήμα "Έλεγχος προσβάσεων" για περισσότερες πληροφορίες.

Το PHP/FI είναι επίσης ικανό να δέχεται uploads αρχείων από οποιοδήποτε web browser συμβατό με RFC-1867. Αυτό το χαρακτηριστικό επιτρέπει σε ανθρώπους να ανεβάσουν και text και binary αρχεία. Με τον έλεγχο προσβάσεων του PHP/FI και τις λογικές συναρτήσεις, έχετε πλήρη έλεγχο πάνω στο ποιος επιτρέπεται να ανεβάζει (upload) αρχεία και τι μπορεί να κάνει με το αρχείο αφού το ανεβάσει. Δείτε το τμήμα "File Upload" για περισσότερες πληροφορίες.

Το PHP/FI υποστηρίζει το πακέτο βάσης δεδομένων PostgreSQL. Υποστηρίζει ενσωματωμένες SQL ερωτήσεις στα .HTML αρχεία σας. Δείτε το αντίστοιχο τμήμα στην "Υποστήριξη της PostgreSQL" για περισσότερες πληροφορίες.

Το PHP/FI υποστηρίζει επίσης και το πακέτο βάσης δεδομένων mysql. Υποστηρίζει ενσωματωμένες SQL ερωτήσεις στα .HTML αρχεία σας. Δείτε το αντίστοιχο τμήμα στην "Υποστήριξη της mysql" για περισσότερες πληροφορίες.

16.6 CGI Redirection

Σημειώσεις για τον Apache 1.0.x

Ενας καλός τρόπος να τρέξετε το PHP/FI είναι χρησιμοποιώντας ένα cgi redirection module με τον Apache server. Παρακαλώ σημειώστε ότι δε χρειάζεται να ανησυχείτε για modules ανακατεύθυνσης αν χρησιμοποιείτε την έκδοση του Apache module του PHP/FI. Υπάρχουν δύο από αυτά τα modules ανακατεύθυνσης διαθέσιμα. Ένα από αυτά αναπτύχθηκε από τον Dave Andersen

και είναι διαθέσιμο στο και το άλλο έρχεται πακέτο με τον Apache και λέγεται mod_actions.c. Αυτά τα modules είναι εξαιρετικά παρόμοια. Διαφέρουν ελαφρά στη χρήση τους. Και τα δύο έχουν τεσταριστεί και δουλεύουν με το PHP/FI.

Δείτε την τεκμηρίωση του Apache για το πώς μπορείτε να προσθέσετε ένα module. Γενικά, προσθέτετε το όνομα του module σε ένα αρχείο που ονομάζεται Configuration. Η γραμμή που πρέπει να προσθέσετε αν θέλετε να χρησιμοποιήσετε το module mod_actions είναι:

Module action_module mod_actions.o

Αν χρησιμοποιείτε το module mod_cgi_redirect.c προσθέστε αυτή τη γραμμή:

Module cgi_redirect_module mod_cgi_redirect.o

Στη συνέχεια, μεταγλωττίστε το httpd και εγκαταστήστε το. Για να ρυθμίσετε το cgi redirection χρειάζεται είτε να δημιουργήσετε ένα νέο τύπο mime στο αρχείο σας mime.types είτε να χρησιμοποιήσετε την εντολή AddType στο αρχείο σας srm.conf για να προσθέσετε τον mime τύπο. Για να προσθέσετε τον τύπο mime θα πρέπει να έχετε κάτι σαν το παρακάτω:

     application/x-httpd-php phtml
Αν χρησιμοποιείτε το module mod_actions.c, χρειάζεται να προσθέσετε την παρακάτω γραμμή στο αρχείο σας srm.conf :
     Action application/x-httpd-php /cgi-bin/php.cgi
Αν χρησιμοποιείτε το mod_cgi_redirect.c θα πρέπει να προσθέσετε την παρακάτω γραμμή στο αρχείο srm.conf :
     CgiRedirect application/x-httpd-php /cgi-bin/php.cgi
Μην χρησιμοποιήσετε ταυτόχρονα και τα δύο mod_actions.c και mod_cgi_redirect.c.

Αφού έχετε εγκαταστήσει ένα από τα cgi redirection modules και τα ρυθμίσετε σωστά, θα μπορείτε να προσδιορίσετε ότι θέλετε ένα αρχείο να γίνει parsed από το php/fi απλά αλλάζοντας το extension του αρχείου σε .phtml. Επιπλέον, αν προσθέσετε ένα index.phtml στη γραμμή DirectoryIndex του αρχείου σας srm.conf, τότε η top-level σελίδα στον κατάλογο θα γίνει αυτόματα parsed από το php αν το index αρχείο ονομάζεται index.phtml.

Netscape HTTPD

Μπορείτε να ανακατευθύνετε αυτόματα τις αιτήσεις για αρχεία με συγκεκριμένη κατάληξη αρχείου ώστε να τα χειριστεί το PHP/FI με τη χρήση του Netscape Server CGI Redirection module. Αυτό το module είναι διαθέσιμο στο "File Archives" στη σελίδα του PHP/FI. Το αρχείο README που υπάρχει μέσα στο πακέτο εξηγεί καθαρά πώς να το ρυθμίσετε για χρήση με το PHP/FI.

NCSA HTTPD

Ο NCSA δεν υποστηρίζει προς το παρών modules, και έτσι για να κάνουμε ανακατεύθυνση cgi με τον server αυτόν, θα χρειαστείτε να τροποποιήσετε τον κώδικα του server σας. Μια διόρθωση/μπάλωμα (patch) που το κάνει για τον NCSA 1.5 διατίθεται στα αρχεία του site του PHP/FI.

16.7 Τρέχοντας το PHP/FI από τη γραμμή εντολών

Αν χτίσετε τη CGI έκδοση του PHP/FI, μπορείτε να το χρησιμοποιήσετε από τη γραμμή εντολών απλά γράφοντας: php.cgi filename όπου το filename είναι το αρχείο που θέλετε να κάνετε parse. Μπορείτε να δημιουργήσετε επίσης standalone PHP/FI scripts γράφοντας στην πρώτη γραμμή του script σας το εξής:

    #!/usr/local/bin/php.cgi -q
Το "-q" απαγορεύει την εκτύπωση των HTTP headers. Μπορείτε να αφήσετε έξω αυτή την επιλογή αν θέλετε.
Next Previous Contents