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

Η Γλώσσα Προγραμματισμού CFML

 

Τι Είναι η CFML

Η γλώσσα προγραμματισμού ή τεχνολογία CFML (ColdFusion Markup Language) αποτελεί την πύλη (gateway) για να μπορέσουμε να συνδέσουμε μια βάση δεδομένων με το Web (database-to-Web gateway) και τείνει να καθιερωθεί σ’ ένα πολύ δημοφιλές εργαλείο για τις επιχειρήσεις που έχουν ανάγκη επεξεργασίας τεράστιων ποσοτήτων δεδομένων στο Web και μάλιστα με μεγάλη ταχύτητα.

Οι εταιρείες που θέλουν να δημοσιεύσουν μεγάλες ποσότητες δεδομένων στο Web, θα ήθελαν να διαθέτουν ένα συνεκτικό, δυναμικό Web site και όχι μια ακαταστασία από βάσεις δεδομένων. Η ColdFusion είναι δημιούργημα της εταιρείας Allaire και μπορεί να εκτελεσθεί παράλληλα με τους περισσότερους Web servers των Windows και του Solaris.

Η CFML έχει το ιδιαίτερο χαρακτηριστικό ότι ο κώδικάς της πρώτα μεταγλωττίζεται στον server και μετά φορτώνεται σαν ένα κανονικό html έγγραφο, χωρίς ο χρήστης να είναι σε θέση να δει τον αρχικό κώδικα. Με την τεχνολογία της CFML μπορούμε να δημιουργήσουμε δυναμικές ιστοσελίδες (dynamic web pages) και ανταγωνιστικές της τεχνολογίας CFML είναι η τεχνολογία Php (HyperText PreProcessor) καθώς και η τεχνολογία ASP (Active Server Pages).

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

 

Ποιοι Χρειάζονται την ColdFusion

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

Αν απαντήσετε «ναι» σε μερικές από τις παραπάνω ερωτήσεις, τότε είστε ένας πρώτης τάξης υποψήφιος για να γίνεται χρήστης της ColdFusion.

 

Εγκατάσταση της ColdFusion & Ορισμός του Data Source

Η εγκατάσταση του πακέτου είναι πολύ απλή. Το δύσκολο μέρος της εγκατάστασης έρχεται αργότερα όταν θα δημιουργήσουμε τα πρότυπα (templates). Το πρόγραμμα (installer) θα μας υποβάλλει σε μερικές ερωτήσεις, όπως πού θέλουμε να τοποθετήσουμε τα αρχεία, τι Web server software χρησιμοποιούμε, ποιο πρόγραμμα χρησιμοποιούμε για να δημιουργήσουμε τις βάσεις δεδομένων κ.ά.

Τώρα είμαστε έτοιμοι να ορίσουμε τα data sources στην ColdFusion. Οι νεότερες εκδόσεις του προγράμματος χρησιμοποιούν ένα interface ιστοσελίδας (Web page interface) για να το κάνουν αυτό και οι παλιότερες εκδόσεις χρησιμοποιούν ένα στάνταρτ πλαίσιο διαλόγου των Windows. Και τα δύο βρίσκονται κάτω από την επικεφαλίδα (heading) ColdFusion Administrator.

Ένα Data Source Name (DSN) είναι η βάση δεδομένων (database) που θέλουμε να επεξεργαστούμε στο Web. Αν εκτελούμε το δικό μας αντίγραφο της ColdFusion, μπορούμε να στήσουμε (set up) πολλά τέτοια. Αν την χρησιμοποιούμε σ’ ένα μηχάνημα ενός provider το πιο πιθανό είναι ότι θα περιοριστούμε σ’ ένα μόνο DSN.

Και εδώ η εγκατάσταση (setup) είναι αρκετά απλή. Απλά δείχνουμε το administrator software στη βάση δεδομένων που θα χρησιμοποιήσουμε και, αν η βάση δεδομένων βρίσκεται σ’ ένα άλλο μηχάνημα εκτός του Web server, δίνουμε τα στοιχεία log-in και password που είναι απαραίτητα για την πρόσβαση (log on) σ’ αυτό το μηχάνημα.

Η λέξη κλειδί εδώ είναι τα δικαιώματα (permissions) : η βάση δεδομένων πρέπει να έχει ενεργοποιημένη την πρόσβαση ανάγνωσης (read access) για το username που ο Web server χρησιμοποιεί για log in.

 

Εξέταση των Βάσεων Δεδομένων

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

 

Τα Πρότυπα (Templates) της ColdFusion

Ένα πρότυπο (template) είναι μια στάνταρτ HTML σελίδα με κάποια επιπλέον κωδικοποίηση που εισάγεται πριν από το tag <HEAD>. Αυτή η κωδικοποίηση λέει στην ColdFusion σε ποιο data source θέλουμε να έχουμε πρόσβαση και ορίζει τις μεταβλητές που θα χρησιμοποιήσουμε παρακάτω στον πραγματικό HTML κώδικα της σελίδας.

Τα templates χρησιμοποιούν την επέκταση αρχείου .cfm (στις πρόσφατες εκδόσεις του προγράμματος) ή την .dbm (στις εκδόσεις πριν από την 3.0). Οι παλιότερες εκδόσεις της ColdFusion απαιτούν να αποθηκεύονται όλα τα templates σ’ έναν μόνο κατάλογο, ο οποίος ορίζεται στον ColdFusion Administrator, αλλά οι νεώτερες εκδόσεις δεν είναι τόσο απαιτητικές και επιτρέπουν να τοποθετούμε τα templates σ’ ένα οποιοδήποτε μέρος του site.

Η ColdFusion διαθέτει ένα πολύ καλό πρόγραμμα με όνομα CF Studio το οποίο παρέχει ένα οπτικό (visual) interface για τη δημιουργία templates. Παρ’ όλα αυτά, είναι αρκετά απλό να δημιουργήσουμε τα βασικά templates και μ’ έναν απλό text editor.

 

Τα Βασικά για τα Πρότυπα (Templates)

Θα δούμε τώρα ένα βασικό αρχείο template. Θα υποθέσουμε ότι έχουμε ένα data source που έχει στηθεί σαν contents_of_my_store και ότι το data source είναι μια βάση δεδομένων της Microsoft Access με όνομα contents_of_my _store.mdb.

Μέσα σ’ αυτή τη βάση δεδομένων υπάρχει ένας μόνο πίνακας με όνομα Contents και με τα πεδία Item, Acquired και Value. Αν θέλουμε μια ιστοσελίδα (Web page) να εμφανίζει όλα τα στοιχεία της βάσης δεδομένων, την ημερομηνία που τα αποκτήσαμε καθώς και την τιμή τους, η κορυφή του αρχείου template θα είναι ως εξής :

<CFQUERY NAME= "store" DATASOURCE="contents_of_my_store">
                        SELECT * FROM contents
            </CFQUERY>

Αυτός ο κώδικας λέει στην ColdFusion να υποβάλλει σε ερωτήσεις το data source :

Τώρα, μετά από το query, ξεκινάει το στάνταρτ HTML κομμάτι του template :

<HEAD>
                        <TITLE> Περιεχόμενα του My Store </TITLE>
            </HEAD>
            <BODY>
                        <H1> Περιεχόμενα του My Store : </H1>
                        <CFOUTPUT QUERY= "store">
                                <B>#Item#</B> <BR>
                                        #Acquired# <BR>
                                        #value# <P>
                        </CFOUTPUT>
                </BODY>
            </HTML>

Οι μεταβλητές στο template είναι τα στοιχεία που περιέχονται στους χαρακτήρες # και είναι ακριβώς ίδιοι με τα ονόματα των πεδίων της βάσης δεδομένων contents_of_my_store.mdb. Μπορούμε να χρησιμοποιήσουμε αυτές τις μεταβλητές οπουδήποτε μέσα στο HTML έγγραφο, εφόσον τις περικλείσουμε με τα tags <CFOUTPUT>.

Το tag CFOUTPUT λέει στην ColdFusion ότι πρόκειται να αναφερθούμε σε μερικές μεταβλητές από ένα συγκεκριμένο query που έχει δηλωθεί στην αρχή του εγγράφου. Προσέξτε τα bold tags <Β> γύρω από τη μεταβλητή #item#. Αυτό σημαίνει ότι μπορούμε να μορφοποιήσουμε το κείμενο των μεταβλητών όπως ακριβώς σ’ ένα στατικό HTML κείμενο.

Αν ένας χρήστης ανοίξει αυτή τη σελίδα από τον φυλλομετρητή του, θα δει κάτι σαν το εξής :

Περιεχόμενα του My Store :

Baby Shoes
            12 November 2002
            25 euro

Trousers
            14 November 2002
            30 euro

 Socks
            12 December 2002
            50 euro

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

 

Οι Εντολές της SQL

Η SQL (structured query language) είναι μια γλώσσα ερωτημάτων για βάσεις δεδομένων (database query language) και αποτελεί ένα στάνταρτ για τις περισσότερες εφαρμογές βάσεων δεδομένων. Εν συντομία, αποτελεί έναν τρόπο για να επιλέγουμε συγκεκριμένες εγγραφές από τους πίνακες μιας βάσης δεδομένων χρησιμοποιώντας δικά μας κριτήρια.

Για παράδειγμα, ας υποθέσουμε ότι θέλουμε να επιλέξουμε εγγραφές από τον πίνακα Contents που βρίσκεται στην υποθετική βάση δεδομένων contents_of_my_store.mdb. Για τους σκοπούς μας, θα υποθέσουμε ότι θέλουμε να επιλέξουμε μόνο στοιχεία που αποκτήθηκαν στις 12 December 2002. Η SQL εντολή του template θα είναι ως εξής :

<CFQUERY NAME= "store" DATASOURCE="contents_of_my_store">
                        SELECT * FROM contents
                                WHERE acquired IS "12 December 2002"
            </CFQUERY>

Οι παραπάνω εντολές λένε στην ColdFusion να επιλέξει όλες τις εγγραφές (*) από τον πίνακα Contents όπου (where) το πεδίο Acquired ταιριάζει ακριβώς με το κείμενο "12 December 2002". Αν χρησιμοποιήσουμε αυτήν την εντολή σαν την αρχική εντολή στο template που είδαμε προηγουμένως, θα πάρουμε μια λίστα από ένα μόνο στοιχείο.

Σε γενικές γραμμές, η SQL χρησιμοποιεί τον όρο IS για να ταιριάξει τα πεδία κειμένου (text fields) και το "=" για να ταιριάξει τους αριθμούς. Για να δούμε τώρα όλα τα στοιχεία που αποκτήθηκαν τον μήνα Δεκέμβριο, δίνουμε την εξής εντολή :

<CFQUERY NAME= "store" DATASOURCE="contents_of_my_store">
                        SELECT * FROM contents
                                WHERE acquired LIKE "December%"
            </CFQUERY>

Ο όρος LIKE λέει στην ColdFusion να αναζητήσει τις εγγραφές εκείνες όπου (where) το πεδίο Acquired αρχίζει με το κείμενο "December" και ακολουθείται από μια οποιαδήποτε ημέρα και ημερομηνία. Το σύμβολο % είναι ο χαρακτήρας μπαλαντέρ (wildcard character) της SQL. Το LIKE χρησιμοποιείται σχεδόν πάντα σε συνδυασμό μ’ έναν χαρακτήρα μπαλαντέρ. Παρόμοια, μπορούμε να επιλέξουμε όλα τα στοιχεία που αποκτήθηκαν το 2002, ως εξής :

<CFQUERY NAME= "store" DATASOURCE="contents_of_my_store">
                    SELECT * FROM contents
                            WHERE acquired LIKE "%2002"

            </CFQUERY>

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

<CFQUERY NAME= "store" DATASOURCE="contents_of_my_store">
                        SELECT * FROM contents
                                WHERE item LIKE "%b%"
            </CFQUERY>

 

Το Tag CFOUTPUT

Το tag CFOUTPUT αποτελεί το tag κλειδί της ColdFusion καθώς ελέγχει τον τρόπο που εμφανίζονται στην HTML οι εγγραφές που έχουμε επιλέξει με τις εντολές της SQL. Αυτό που χρειαζόμαστε είναι ένα tag <CFOUTPUT> και το όνομα ενός ερωτήματος (query) που έχουμε ορίσει στην αρχική εντολή (top statement) :

            <CFOUTPUT QUERY= "store">

Εφόσον το έχουμε ορίσει αυτό, είμαστε ελεύθεροι να δουλέψουμε με τις μεταβλητές μας. Έχουμε όλα τα tags της HTML στη διάθεσή μας, αλλά δεν πρέπει να ξεχνάμε πως ο,τιδήποτε τοποθετήσουμε ανάμεσα στα tags <CFOUTPUT> θα επαναλαμβάνεται συνέχεια μέχρι να διασχίσουμε όλες τις επιλεγμένες εγγραφές.

Για παράδειγμα, μπορεί να θέλουμε να χρησιμοποιήσουμε τον εξής κώδικα :

<CFOUTPUT QUERY= "store">
                    <H1> Items in Store </H1>
                            #item#<P>
            </CFOUTPUT>

Η έξοδός μας θα είναι ως εξής :

Items in Pocket
            Baby Shoes

Items in Pocket
            Trousers

Items in Pocket
            Socks

...

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

<H1> Items in Store </H1>
            <CFOUTPUT QUERY= "store">
                    #item#<P>
            </CFOUTPUT>

Έτσι θα έχουμε το εξής :

Items in Pocket

 Baby Shoes
            Trousers

            Socks

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

<CFOUTPUT QUERY= "store">
                    <B> Item : #Item# </B><BR>
                    Acquired : #Acquired# <BR>
                    Value : #Value# <BR>
            </CFOUTPUT>

Η έξοδος θα είναι τώρα ως εξής για το κάθε στοιχείο :

Item : Baby Shoes

Acquired : 12 November 2002

Value : 25 euro

Η ColdFusion διαθέτει επίσης ειδικά ενσωματωμένα tags για ακόμη περισσότερη μορφοποίηση.

 

Τα Tags CFIF και CFELSE

Όμως, η ColdFusion μπορεί να κάνει πολύ περισσότερα από το να εμφανίζει απλά τα περιεχόμενα μιας βάσης δεδομένων. Θα δούμε τώρα τα πάντα χρήσιμα tags <CFIF> και <CFELSE>. Στον πίνακα Contents θα προσθέσουμε τώρα ένα νέο πεδίο με όνομα Picture, το οποίο θα περιέχει ένα URL που θα δείχνει σε μια τοποθεσία (location) στο site μας όπου έχουμε αποθηκεύσει μια εικόνα για το κάθε στοιχείο (item) στη βάση store.

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

<CFOUTPUT QUERY= "store">
                    Item : #Item# <BR>
                    <IMG SRC="#Picture#"> <BR>
            </CFOUTPUT>

Δεν υπάρχει κανένα πρόβλημα, επειδή οι μεταβλητές της ColdFusion δεν έχουν πρόβλημα στο να χρησιμοποιηθούν σαν η πηγή (source) για τα tags <IMG>, <SRC> ή <A HREF>. Αλλά είναι φυσικό να έχουμε εικόνες για μερικά από τα στοιχεία μας και όχι γι’ όλα. Στον πίνακα Contents τα στοιχεία χωρίς εικόνα έχουν ένα κενό πεδίο Picture.

Αν χρησιμοποιήσουμε ένα στάνταρτ CFOUTPUT section όπως παραπάνω, θα υπάρχει πρόβλημα με τις εικόνες. Έτσι, θα χρησιμοποιήσουμε τα tags <CFIF> και <CFELSE> της ColdFusion για να ορίσουμε μια απλή εντολή if-then η οποία θα ελέγχει για να διαπιστώσει αν το πεδίο Picture περιέχει ή όχι κάποιο κείμενο.

<CFOUTPUT QUERY= "store">
                    Item : #Item# <BR>

                    <CFIF #Picture# EQ "">

                            <IMG SRC="general_picture.jpg"><BR>
                    <CFELSE>

                            <IMG SRC="#Picture#"><BR>

                    </CFIF>
            </CFOUTPUT>

Τοποθετήσαμε έναν έλεγχο εδώ και η ColdFusion εξετάζει το πεδίο Picture και κάνει κάτι αν είναι κενό (NULL) και κάτι άλλο αν περιέχει κάποιο κείμενο. Στον παραπάνω κώδικα, χρησιμοποιήσαμε μια εικόνα γενικής χρήσης (general_picture), η οποία θα εμφανισθεί για εκείνα τα στοιχεία (items) που δεν διαθέτουν δικές τους εικόνες.

 

Περισσότερα για τα Templates

Στα προηγούμενα, χρησιμοποιήσαμε την ColdFusion για να εμφανίσουμε τα περιεχόμενα μιας βάσης δεδομένων. Θα δούμε τώρα μερικές από τις συναρτήσεις ταξινόμησης που διαθέτει η ColdFusion. Θα υποθέσουμε ότι υπάρχει μια δεύτερη βάση δεδομένων με όνομα links_to_bad_sites.mdb και ότι την έχουμε ήδη ορίσει σαν το DSN links_to_bad_sites στο ColdFusion Administrator.

Μέσα σ’ αυτή τη βάση δεδομένων, υπάρχει ένας μόνο πίνακας με όνομα Links, ο οποίος είναι το προϊόν μιας έρευνας και περιέχει τα ονόματα, τα URLs και τις περιγραφές κάποιων Web sites. Υπάρχει επίσης ένα πεδίο που δείχνει την ημερομηνία που προστέθηκε η εγγραφή στη βάση δεδομένων.

Θα υποθέσουμε τώρα ότι γράφουμε ένα template για μια σελίδα της μορφής What's New (τι καινούργιο υπάρχει) στο site μας. Θα την αποκαλέσουμε πιθανώς whats_new.cfm ή aAEr348u234.cfm για μεγαλύτερη ασφάλεια.

Θα θέλουμε αυτή η σελίδα What's New να εμφανίζει μόνο τις συνδέσεις (links) που έχουμε προσθέσει τον Δεκέμβριο και θέλουμε ακόμη να εμ-φανίζονται στη σελίδα μας σε αλφαβητική σειρά ως προς το όνομα του site. Η εντολή query που θα δώσουμε πρέπει να είναι ως εξής :

<CFQUERY NAME= "new_links" DATASOURCE="links_to_bad_sites">
                    SELECT * FROM links WHERE date IS LIKE "December%"
                            ORDER BY name ASC
              </CFQUERY>

Το ORDER BY καθορίζει το πεδίο με βάση το οποίο θέλουμε να γίνει η ταξινόμηση καθώς και αν θέλουμε αύξουσα (ASC) ή φθίνουσα ταξινόμηση (DESC). Προκαθορισμένη είναι η αύξουσα (ASC).

Τώρα που έχουμε ορίσει ένα query, το τμήμα CFOUTPUT της σελίδας What's New μπορεί να είναι ως εξής :

<HTML>
        <H3> Really Bad Sites Found in December </H3>
            <CFOUTPUT QUERY= "new_links">
                    Site Name : #Name# <BR>

                    URL : <A HREF="#URL#"> #URL# </A><BR>

                    Description : #Description# <P>
            </CFOUTPUT>

Χρησιμοποιήσαμε τη μεταβλητή #URL# δύο φορές έτσι ώστε να πάρουμε το κείμενο του URL αλλά και να δημιουργήσουμε ένα link στο site.

Ας προχωρήσουμε λίγο τώρα και ας υποθέσουμε ότι θέλουμε να εμφανίσουμε δύο μόνο links από τον μήνα Δεκέμβριο. Μπορούμε να χρησιμοποιήσουμε την προδιαγραφή MAXROWS της ColdFusion μέσα στο tag <CFOUTPUT>, ως εξής :

<CFOUTPUT QUERY= "new_links" MAXROWS="2"> 

Το υπόλοιπο της εντολής CFOUTPUT θα παραμείνει το ίδιο. Ο παραπάνω κώδικας θα επιστρέψει μια σελίδα σαν την εξής :

Really Bad Sites Found in December

Site Name: Ideagirl's Homepage
            URL : http://i.am/bitchfromhell
            Description : Ideagirl must have really studied the list of "Top Ten Things NOT to Do on Your Web Site," because she takes great pains to use all of them here: blinking text, unreadable text colors, loads of animated GIFs stolen from other sites, MIDI files on every page, and lots of endless blathering about nothing at all. We recommend it highly.

Site Name : EverythingBlows.Com
            URL : http://www.everythingblows .com
            Description : These curmedgeons seem to be angry about everything they've ever seen, touched, or tasted in the world. They're the sort of guys you'd find huddled in the corner at a party, pointing out the fashion faux pas and false mannerisms of the other guests. Highly recommended.

 

Κεφαλίδες και Υποσέλιδα

Αν ρίξουμε μια ματιά στα sites θα διαπιστώσουμε ότι τα περισσότερα templates περιέχουν παρόμοιες πληροφορίες. Το καθένα έχει ένα διαφημιστικό banner και ένα image map στην κορυφή και μια μπάρα με συνδέσμους (text-link bar) στο κάτω μέρος της σελίδας, σαν την παρακάτω :

HOME | OUR CATALOG | ORDERING INFO | LINKS

Για να κάνουμε κάτι τέτοιο στην ColdFusion, προσθέτουμε έναν πίνακα (table) με όνομα HTML σε μια από τις βάσεις δεδομένων του εκδότη, με όνομα our_stuff.mdb. Την ορίζουμε επίσης σαν DSN με το όνομα our_stuff. Σ’ αυτόν τον πίνακα, δημιουργούμε πεδία για το Name και το Code.

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

<CFQUERY NAME= "banner_ad" DATASOURCE= "our_stuff">

SELECT Code FROM HTML WHERE Name IS "banner_ad"

</CFQUERY>

<CFQUERY NAME= "top_nagivation_imagemap" DATASOURCE="our_stuff">

SELECT Code FROM HTML WHERE Name IS "top_navigation_imagemap"

</CFQUERY>

<CFQUERY NAME= "bottom_nagivation_bar" DATASOURCE="our_stuff">

SELECT code FROM html WHERE name IS "bottm_navigation_bar"

</CFQUERY>

Τα tags <CFOUTPUT> θα είναι ως εξής :

<HTML>

<CFOUTPUT QUERY= "banner_ad">

#Code#

</CFOUTPUT>

<CFOUTPUT QUERY= "top_navigation_imagemap">

#Code#

</CFOUTPUT>

Το πραγματικό κείμενο της σελίδας θα εμφανίζεται εδώ :

<CFOUTPUT QUERY= "bottom_navigation_bar">

#Code#

</CFOUTPUT>

</HTML>

Αποθηκεύουμε αυτή τη σελίδα σαν μόνο ανάγνωσης (read-only) έτσι ώστε να μην γίνει ζημιά κατά λάθος. Έτσι, κάθε φορά που δημιουργούμε ένα καινούργιο template στην ColdFusion, ξεκινάμε μ’ αυτή τη σελίδα και εισάγουμε όποιο κείμενο ή tags θέλουμε να εμφανίζεται στη μέση.

Αν αργότερα αποφασίσουμε να προσθέσουμε ένα mailto στη βάση της κάθε σελίδας, αρκεί να το προσθέσουμε στον HTML κώδικα του πεδίου Code στην εγγραφή bottom_navigation_bar.

Ή αν δεν μας αρέσει το navigation image map που δημιουργήσαμε, αρκεί να αλλάξουμε το πεδίο Code στην αντίστοιχη εγγραφή στη βάση δεδομένων και ολόκληρο το site θα ενημερωθεί αυτόματα.

 

Τα Cookies και η ColdFusion

Σήμερα, τα cookies είναι τόσο κοινά στο Web όσο οι εικόνες (images) και οι πίνακες (tables). Και κάνουν όλες τις δουλειές : Βοηθούν τους Web designers να διαχειριστούν τα στοιχεία του χρήστη, ταξινομώντας τα ανάμεσα στις επισκέψεις στα sites, και ελαττώνουν την ποσότητα του overhead που είναι απαραίτητη για να παρακολουθούνται τα στοιχεία του χρήστη, όπως είναι τα usernames, τα κωδικοποιημένα passwords, οι μεταβλητές φόρμας και τα στοιχεία του καλαθιού αγορών (shopping cart)

Κάνουν επίσης τα πράγματα πιο εύκολα για τους χρήστες εξανεμίζοντας την ανάγκη να συνδέονται σ’ ένα site κάθε φορά που το επισκέπτονται ή κάνοντας εύκολη την προσωποποίηση του περιεχομένου (content) στα sites. Επειδή τα cookies είναι τόσο ευρέως διαδεδομένα, έχουν γίνει ένα απαραίτητο εργαλείο. Όλοι οι Web developers πρέπει να μπορούν να τα χρησιμοποιούν. Θα δούμε τώρα πώς μπορούμε να δημιουργήσουμε cookies με την ColdFusion.

Θα ξεκινήσουμε με μια σύντομη επεξήγηση της τεχνικής πλευράς των cookies, δηλ. πώς τα αντιμετωπίζουν οι φυλλομετρητές (browsers) και πώς τα διαχειρίζεται η ColdFusion. Θα χρησιμοποιήσουμε μετά τα cookies για να καταγράψουμε (παρακολουθήσουμε) την πορεία ενός χρήστη μέσα σ’ ένα website, χρησιμοποιώντας ένα "cookie crumb" trail.

Ένα "cookie crumb" trail στην ουσία προσθέτει έναν σύνδεσμο (link) για κάθε σελίδα που επισκέπτεται ο χρήστης σ’ ένα site, κάνοντας έτσι πολύ εύκολη την πλοήγηση προς τα πίσω (navigation backwards), ενώ ταυτόχρονα δίνει τη δυνατότητα στον developer να έχει κάποιον έλεγχο για το ποιες σελίδες μπορεί να επισκεφθεί ο χρήστης, όπως με το να μην προσθέτει σελίδες για αποτελέσματα ερωτημάτων (query results) κοκ.

 

Η Προπαρασκευαστική Δουλειά

Βασικά, τα cookies είναι απλά και μόνο strings κειμένου. Τίποτα περισσότερο και τίποτα λιγότερο. Αλλά ακόμη κι έτσι, οι διαφορές στους φυλλομετρητές και τις ρυθμίσεις των φυλλομετρητών μπορεί να είναι ένας εφιάλτης για τους developers που εξαρτώνται από τα cookies για να κάνουν το site τους να εκτελείται ομαλά.

Έτσι, πριν κάνουμε ο,τιδήποτε, θα πρέπει να βεβαιωθούμε ότι ο φυλλομετρητής μας είναι ρυθμισμένος να δέχεται τα cookies. Στον Internet Ex-plorer 5.5, επιλέγουμε Επιλογές Internet… από το μενού Εργαλεία και την καρτέλα Ασφάλεια στο πλαίσιο διαλόγου Επιλογές Internet. Κάνουμε κλικ στο πλήκτρο Προσαρμοσμένο επίπεδο… και επιλέγουμε το πλήκτρο επιλογής Ενεργοποίηση και για τους δύο τύπους cookies.

Στον Netscape 4.x, επιλέγουμε Preferences… από το μενού Edit και επιλέγουμε το Advanced. Επιλέγουμε το πλήκτρο επιλογής Accept all cookies στην ομάδα επιλογών Cookies.

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

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

Αν δεν βρίσκεται, εμφανίζει ένα μήνυμα στους χρήστες που φανερώνει ότι ο φυλλομετρητής τους δεν υποστηρίζει τα cookies και παρέχει έναν σύνδεσμο (link) για πληροφορίες σχετικά με τα cookies. Αλλιώς, μπορούμε να συμπεριλάβουμε μια σελίδα στο site μας που να εξηγεί πώς χρησιμοποιούνται τα cookies και γιατί είναι ασφαλές να ενεργοποιήσουμε τα cookies, ιδίως όταν βλέπουν το site μας.

Μια απλή δοκιμή cookie στην ColdFusion έχει ως εξής :

<!-- δημιουργία cookie -->

<!-- αυτό πρέπει να γίνει σ’ ένα template -->

<cfcookie name="test" value="Accepts cookies">

<!-- έλεγχος για την ύπαρξη και ανάγνωση του cookie -->

<!-- αυτό γίνεται σ’ ένα χωριστό template -->

<cfif IsDefined(Cookie.test)>

<cfif Cookie.test eq "Accepts cookies">

<cfoutput> Ο Χρήστης Δέχεται τα Cookies </cfoutput>

<cfelse>

<cfoutput> Ο Χρήστης Δεν Δέχεται τα Cookies </cfoutput>

</cfif>

<cfelse>

<cfoutput> Ο Χρήστης Δεν Δέχεται τα Cookies </cfoutput>

</cfif>

Ένα άλλο πρόβλημα με τα cookies είναι ότι περιοριζόμαστε στην ποσότητα των πληροφοριών που μπορούμε να αποθηκεύσουμε σε κάθε ένα. Και ο Netscape και ο IE έχουν περιορισμούς μέγιστου μεγέθους για τα δεδομένα που μπορούν να χωρέσουν σ’ ένα cookie όπως επίσης και για τον αριθμό των cookies που μπορούν να αποθηκευθούν.

Έτσι αποτελεί έναν καλό εμπειρικό κανόνα (rule of thumb) να χρησιμοποιούμε τα cookies για να αποθηκεύουμε μόνο πληροφορίες που είναι απολύτως απαραίτητες και να αποθηκεύουμε επιπλέον πληροφορίες αλλού οι οποίες να ανακτώνται μόνο όταν χρειάζονται.

Για παράδειγμα, αρκεί να αποθηκεύσουμε μόνο το ID του χρήστη σ’ ένα cookie, το οποίο μπορούμε μετά να χρησιμοποιήσουμε για να πάρουμε επιπλέον πληροφορίες για τον χρήστη από μια βάση δεδομένων και μετά να το αποθηκεύσουμε τοπικά στη σελίδα που χρησιμοποιείται ή σε μεταβλητές συνόδου (session variables).

 

Δημιουργία Βάσης Δεδομένων στην Cold Fusion

Τώρα που έχουμε κάνει μια απλή εισαγωγή σχετικά με τη δημιουργία ενός εγγράφου στην Cold Fusion, είμαστε έτοιμοι να δημιουργήσουμε μια πραγματική εφαρμογή βάσης δεδομένων στην ColdFusion. Θα δημιουργήσουμε ένα Προσωπικό Σύστημα Πληροφόρησης (Personal Information Sy-stem), όπου θα μπορούμε να καταχωρήσουμε τα εξής στοιχεία για ένα άτομο: όνομα, ηλικία, τοποθεσία, ημερομηνία γέννησης και διεύθυνση e-mail.

Πριν συνεχίσουμε, θα χρειαστούμε έναν web server διαθέσιμο με εγκατεστημένη την Cold Fusion. Επιπλέον θα πρέπει να είναι εγκατεστημένη η Microsoft Access και θα πρέπει να είναι ενεργοποιημένη η υποστήριξη βάσης δεδομένων για την Access.

 

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

Πρώτα απ’ όλα, πρέπει να δημιουργήσουμε τη βάση δεδομένων με την Microsoft Access. Επιλέγουμε κενή βάση δεδομένων και όνομα, για παράδειγμα, db1.mdb. Όσο θα προγραμματίζουμε σε ColdFusion, ουσιαστικά δεν θα χρησιμοποιήσουμε το πραγματικό όνομα της βάσης δεδομένων, αλλά το datasource ή DSN που θα δημιουργήσουμε αργότερα.

Δημιουργούμε έναν πίνακα μέσα στη βάση δεδομένων με τα εξής πεδία :

Όνομα Πεδίου

Τύπος Δεδομένων

Name

Text

Age

Number

Location

Text

Dob

Text

Email

Text

Αποθηκεύουμε τον πίνακα με το όνομα people και προσθέτουμε και αυτόματη αρίθμηση σαν πεδίο κλειδί με το όνομα ID. Τα κλείνουμε όλα, αποθηκεύουμε τη δουλειά μας και στέλνουμε (upload) τη βάση δεδομένων στον server.

 

Δημιουργία DSN για μια Βάση Δεδομένων

Πριν προχωρήσουμε, ένα DSN ή DataSource θα πρέπει να αναγνωρισθεί για τη βάση δεδομένων, έτσι ώστε να γνωρίζει η Cold Fusion πού βρίσκεται η βάση δεδομένων μας. Αν είμαστε μέλος ενός shared ή dedicated server hosting, ο hosting provider πρέπει να διαθέτει έναν πίνακα ελέγχου (control panel) όπου μπορούμε να καθορίσουμε ένα DSN για μια βάση δεδομένων.

Αν δεν ξέρουμε πώς να προχωρήσουμε, πρέπει να έρθουμε σ’ επαφή με τον hosting provider ή τον system administrator. Αν τρέχουμε τον δικό μας server, πρέπει να συμβουλευτούμε την τεκμηρίωση (documentation) για ακριβείς οδηγίες σχετικά με την εγκατάσταση ενός DSN για μια βάση δεδομένων.

Εδώ, θα δώσουμε στο DSN το όνομα pis, δηλ. Personal Information System. Ο host μπορεί να μας δώσει ένα DSN όνομα ή μπορούμε να δημιουργήσουμε το δικό μας όνομα. Έτσι κι αλλιώς, δεν έχει καμία σημασία το τι DSN όνομα θα δώσουμε στη βάση δεδομένων μας. Αφού η βάση δεδομένων φορτωθεί (uploaded) στον server και δημιουργηθεί το DSN, είμαστε έτοιμοι να αρχίσουμε.

  

Καταχώρηση Στοιχείων στη Βάση Δεδομένων

Το πρώτο βήμα στο Personal Information System θα είναι η καταχώρηση των στοιχείων στη βάση δεδομένων. Θα δημιουργήσουμε ένα απλό interface για να καταχωρήσουμε στη βάση δεδομένων τις σχετικές πληροφορίες με τη χρήση πλαισίων κειμένου (text boxes) και ένα πλήκτρο υποβολής (submit button).

Ο σκοπός εδώ είναι να εξοικειωθούμε με την απλή σύνταξη της Cold Fusion και της SQL για να παίρνουμε (τραβάμε) στοιχεία από μια βάση δε-δομένων καθώς και να καταχωρούμε. Θα γράψουμε τώρα την πρώτη μας σελίδα για να μπορούμε να εισάγουμε στοιχεία στη βάση δεδομένων. Χρησιμοποιούμε έναν text editor και γράφουμε τα εξής :

<center>

Προσθήκη στη βάση δεδομένων : <br>

<FORM METHOD="POST" ACTION="addinfo.cfm">

    Name : <INPUT TYPE="TEXT" NAME="Name"><BR>

    Age : <INPUT TYPE="TEXT" NAME="Age"><BR>

    Location : <INPUT TYPE="TEXT" NAME="Location"><BR>

    Date of birth : <INPUT TYPE="TEXT" NAME="Dob"><BR>

    E-mail address : <INPUT TYPE="TEXT" NAME="Email"><BR>

<INPUT TYPE="SUBMIT">

</center> 

Όπως φαίνεται από τον παραπάνω κώδικα, στέλνουμε τα στοιχεία στη σελίδα addinfo.cfm και της μεταβιβάζουμε τις μεταβλητές Name, Age, Location, Dob και Email. Έως τώρα, δεν έχουμε χρησιμοποιήσει κάποια κωδικοποίηση της Cold Fusion, αλλά απλή HTML. Η σελίδα addinfo.cfm, όμως, θα μας εισάγει στην ColdFusion και στην SQL.

 

Τοποθέτηση Πληροφοριών στη Βάση Δεδομένων

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

Έτσι, δημιουργούμε τη σελίδα addinfo.cfm, της δίνουμε ένα όνομα και γράφουμε τα εξής στο σώμα του κειμένου :

<CFINSERT DATASOURCE="pis" TABLENAME="yourtable">

Αυτό που λέμε εδώ στη σελίδα της Cold Fusion να κάνει είναι να έλθει σ’ επαφή με το datasource pis, το οποίο είναι συνδεδεμένο με τη βάση δεδομένων μας. Για να προσθέσουμε τις πληροφορίες, θα χρησιμοποιήσουμε την εντολή CFINSERT της ColdFusion.

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

<CFOUTPUT>

Τα δεδομένα που καταχωρήσαμε είναι τα εξής :

Name : #Form.Name#

Age : #Form.Age#

Location : #Form.Location#

Dob : #Form.Dob#

E-mai l: #Form.Email#

            </CFOUTPUT>

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

 

Εμφάνιση των Στοιχείων της Βάσης Δεδομένων

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

<CFQUERY NAME="Extract" DATASOURCE="pis">

SELECT *, FROM tablename

</CFQUERY>

<CFOUTPUT QUERY="Extract">

Name : #Name# <br>

Age : #Age# <br>

Location : #Location# <br>

Date of birth : #Dob# <br>

E-mail : #Email# <br><br>

</CFOUTPUT>

Αυτό που κάνουμε εδώ είναι ότι χρησιμοποιούμε SQL κώδικα για να επιλέξουμε όλα τα στοιχεία ("select" all (*)) από ("from") τον πίνακα (tablename). Εφόσον αποκτήσουμε αυτά τα στοιχεία, χρειαζόμαστε έναν τρόπο για να τα εμφανίσουμε.

Έτσι, χρησιμοποιούμε την Cold Fusion για να εκτυπώσουμε τα στοιχεία στη σελίδα, το κάθε στοιχείο σε μια καινούργια γραμμή (<br>). Η Cold Fusion θα εμφανίζει συνέχεια στοιχεία μέχρις ότου να εμφανισθούν όλες οι εγγραφές.

Αν θέλαμε να εμφανίσουμε μόνο το όνομα (name) και την ηλικία (age) από τη βάση δεδομένων, θα κάναμε κάτι σαν το εξής :

<CFQUERY NAME="Extract" DATASOURCE="pis">

SELECT Name, Age, FROM tablename

</CFQUERY>

<CFOUTPUT QUERY="Extract">

Name : #Name# <br>

Age : #Age# <br><br>

</CFOUTPUT>

 

Προσθήκη της Ώρας στα Scripts της Cold Fusion

Η βασική σύνταξη που μπορούμε να χρησιμοποιήσουμε για να εισάγουμε την ώρα στην Cold Fusion είναι η εξής :

<CFOUTPUT>

<CFSET thetime = Now()>

#thetime#

</CFOUTPUT>

Ο παραπάνω κώδικας επιστρέφει την ημερομηνία σε μια μη μορφοποιημένη μορφή που είναι δυσανάγνωστη. Ορίσαμε μια μεταβλητή με όνομα thetime που αποκτά την τιμή της συνάρτησης Now(), η οποία επιστρέφει την ώρα από τον server.

Για να κάνουμε την εμφάνιση της ώρας να είναι πιο ευανάγνωστη, γράφουμε τα εξής :

<CFOUTPUT>

<CFSET thetime = DateFormat(Now(), "dddd, mmmm d, yyyy")>

#thetime#

</CFOUTPUT>

            όπου :

dddd = πλήρης ημέρα της εβδομάδας

mmmm = πλήρες όνομα του μήνα

d = ημέρα του μήνα

yyyy = πλήρες έτος (4 ψηφία)

 

Τα Tags <CFSWITCH> και <CFCASE>

Με τα tags <CFSWITCH> και <CFCASE> μπορούμε να συγκρίνουμε μια συγκεκριμένη μεταβλητή με μια τιμή και να κάνουμε ανάλογες ενέργειες. Ακολουθεί ένα παράδειγμα.

<CF SWITCH EXPRESSION="#Variablehere#">

<CFCASE VALUE="1">

Ενέργεια όταν η τιμή είναι 1

</CFCASE>

<CFCASE VALUE="2">

Ενέργεια όταν η τιμή είναι 2

</CFCASE>

<CFCASE VALUE="3">

Ενέργεια όταν η τιμή είναι 3

</CFCASE>

<CFCASE VALUE="4">

Ενέργεια όταν η τιμή είναι 4

</CFCASE>

<CFCASE VALUE="5">

Ενέργεια όταν η τιμή είναι 5

</CFCASE>

</CFSWITCH>

Ας δούμε ένα παράδειγμα.

<CF SWITCH EXPRESSION="Party">

<CFCASE VALUE="Democrat">

Πληροφορίε για τους Δημοκρατικούς

</CFCASE>

<CFCASE VALUE="Republican">

Πληροφορίες για τους Ρεπουμπλικανούς

</CFCASE>

</CFSWITCH>

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

<CF SWITCH EXPRESSION="Candidate">

<CFCASE VALUE="Bush">

Πληροφορίες για τον George Bush

</CFCASE>

<CFCASE VALUE="Gore">

Πληροφορίες για τον Al Gore

</CFCASE>

<CFCASE VALUE="Nadar">

Πληροφορίες για τον Ralph Nadar

</CFCASE>

</CFSWITCH>

Έτσι, αν η μεταβλητή Candidate είναι ίση με Bush, τότε θα εμφανισθούν οι πληροφορίες για τον George Bush. Θα δούμε τώρα πώς μπορούμε να ορίσουμε μια μεταβλητή δυναμικά. Θα δούμε το παράδειγμα των Δημοκρατικών ενάντια στους Ρεπουμπλικανούς, ξεκινώντας μ’ ένα πτυσσόμενο μενού (pull down menu).


PageOne.cfm

<form action="Submit.cfm" method="post">

<SELECT NAME="pres" SIZE="1">

<OPTION SELECTED> Democrat

<OPTION> Republican

</SELECT>

<input type="submit"><input type="reset">


Submit.cfm

<CFSWITCH EXPRESSION="#form.pres#">

<CFCASE VALUE="Democrat">

Αυτοί είναι οι Δημοκρατικοί

</CFCASE>

<CFCASE VALUE="Republican">

Αυτοί είναι οι Ρεπουμπλικανοί

</CFCASE>

</CFSWITCH>

Αποθηκεύουμε και τα δύο αρχεία σ’ έναν Cold Fusion enabled web server και τα δοκιμάζουμε.

Το script της Cold Fusion θα αναζητήσει τη φόρμα στην προηγούμενη σελίδα και θα πάρει την τιμή του πεδίου κειμένου pres. Αλλιώς, μπορούμε να χρησιμοποιήσουμε το url.pres, το οποίο θα αναζητήσει την τιμή της μεταβλητής pres στο url στη μορφή submit.cfm?pres=democrat, για παράδειγμα.

Για να έχουμε μια προκαθορισμένη τιμή, κάνουμε το εξής :

<CF SWITCH EXPRESSION="Candidate">

<CFCASE VALUE="Bush">

Πληροφορίες για τον George Bush

</CFCASE>

<CFCASE VALUE="Gore">

Πληροφορίες για τον Al Gore

</CFCASE>

<CFCASE VALUE="Nadar">

Πληροφορίες για τον Ralph Nadar

</CFCASE>

<CFDEFAULTCASE VALUE="Nadar">

Δεν επιλέξατε κάτι

</CFDEFAULTCASE>

</CFSWITCH>

 

Οι Μεταβλητές στην Cold Fusion

Οι μεταβλητές (variables) αποτελούν την ουσία κάθε γλώσσας προγραμματισμού και η Cold Fusion δεν αποτελεί βέβαια εξαίρεση. Οι μεταβλητές είναι απλά υποδοχείς (containers) στοιχείων (πληροφοριών). Πρώτα, όμως, θα δούμε τους βασικούς τύπους δεδομένων της Cold Fusion :

Ο μηχανισμός <CFSET> της Cold Fusion χρησιμοποιείται για τη δημιουργία τοπικών μεταβλητών μέσα στον κώδικά μας. Ας δούμε το παρακάτω παράδειγμα ορισμού μεταβλητής :

<CFSET age = 19>

Ο παραπάνω κώδικας ορίζει τη μεταβλητή age με την τιμή 19. Για να καλέσουμε τη μεταβλητή απλά περιβάλλουμε το όνομά της με τον χαρακτήρα # μέσα στο <CFOUTPUT>, όπως για παράδειγμα :

<CFSET age = 19>

<CFOUTPUT>

#age#

</CFOUTPUT>

Σ’ ένα έγγραφο της Cold Fusion, το παραπάνω θα εμφανίσει απλά το 19. Μπορούμε να συμπεριλάβουμε και εκφράσεις μέσα στον ορισμό μιας μεταβλητής, ως εξής :

<CFSET age = 13 + 6>

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

<CFSET age = 19>

<CFSET total = #age# + 234>

Η μεταβλητή total είναι ίση με 253. Θα δούμε τώρα τι γίνεται με τα strings.

<CFSET age = "nineteen">

Τα strings περιβάλλονται με εισαγωγικά.

 

Δημιουργία μιας Σελίδας Επαφής στην Cold Fusion

Θα ξεκινήσουμε κατευθείαν με τον κώδικα. Στην Cold Fusion αντί να χρησιμοποιούμε το tag <input type>, χρησιμοποιούμε το <cfinput...>. Ας δούμε το επόμενο παράδειγμα δημιουργίας φόρμας επαφής (contact form) :


<!--- Έλεγχος για να δούμε αν έχει σταλεί η φόρμα --->

<CFIF IsDefined("process")>
<!--- Στέλνουμε τα περιεχόμενα της φόρμας σε μας --->

<CFMAIL to="you@yourdomain.com" from="#Email#"

Subject="Comments form"

SERVER="smtp.yourdomain.com" port="25">

First name : #FirstName#

Last name : #LastName#

E-mail address : #Email#

Age : #Age#

Response : #Response#

Comments : #Comments#

==============

</CFMAIL>

<!--- Στέλνουμε ένα μήνυμα επιβεβαίωσης --->

<CFMAIL to="#Email#" from="you@yourdomain.com" Subject="Thank you for your comments" SERVER="smtp.yourdomain.com" port="25">

Hi #FirstName#,

Thanks for filling out my form...

You

Your web address

</CFMAIL>


<!---
The redirection text after processing --->

<font size=2 color=#333333 face=arial, helvetica, sans-serif>

Το μήνυμά σας έχει σταλεί </font>

<CFELSE>


<!--- Η πραγματική form page --->

<font size=2 color=#333333 face=arial, helvetica, sans-serif>

Fill out our form below!</font>

<cfform action="contact1.cfm" method="post"> <input type="hidden"

name="process"

Value="1">

<center><font size=2 color=#333333 face=arial, helvetica, sans-serif>

Τα στοιχεία που έχουν * είναι υποχρεωτικά πεδία

</font><br></center>
<table align="center" border="0" width=100%>

<tr><td valign=top width=30></td>

<td valign=top>

<font size=2 color=#333333><b>First name :

</b></font><Br><cfinput type="text" name="FirstName" size="25" required="yes"

message="Παρακαλώ δώστε το όνομά σας"> * <br>

<font size=2 color=#333333><b>lLast name :

</b></font><br><cfinput type="text" name="LastName" size="25"><br>>

<font size=2 color=#333333><b>E-mail address :

</b></font><br><cfinput type="text" name="Email" size="25" required="yes"

message="Παρακαλώ δώστε το email address"> *


<font size=2 color=#333333><b>Age: </b></font><br>

<cfinput type="text" name="Age" size="25">

<font size=2 color=#333333><b>Θα θέλατε μια απάντηση; :

</b></font> <cfinput

type="checkbox" name="Response" required="yes" message="Θα θέλατε μια απάντηση;" value="Yes">Yes <cfinput type="checkbox"

name="Response" value="No">No


<font size=2 color=#333333><b>Παρακαλώ γράψτε εδώ τα σχόλιά σας :

</b></font><br>

<textarea name="Comments" cols=40 rows=5></textarea>
<center> <input type="submit" value="Submit Form">

<input type="reset" value="ClearForm">

</center> </tr></td></table> </cfform>

</CFIF>

Όπως μπορούμε να δούμε, το script ελέγχει πρώτα για να διαπιστώσει αν έχει πατηθεί το πλήκτρο submit. Αν ναι, τότε η φόρμα στέλνεται (mailed) και σ’ εμένα ΚΑΙ σ’ αυτόν που γέμισε τη φόρμα. Θα πρέπει να έχουμε πρόσβαση σ’ έναν SMTP server για να στείλουμε το mail.

Αφού έχουν σταλεί τα στοιχεία της φόρμας, εμφανίζεται το κείμενο "Thank you for filling out the form" και ολοκληρώνεται η διαδικασία. Αντίθετα, αν το πλήκτρο submit δεν πατηθεί ποτέ, τότε εμφανίζεται η φόρμα για να μπορέσει να καταχωρήσει στοιχεία ο χρήστης.

 

Δημιουργία User Login Feature με την ColdFusion

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

Μπορεί να θέλουμε να στήσουμε ένα σύστημα login που όχι μόνο θα μας ενημερώνει αν ένας χρήστης (user) έχει συνδεθεί (logged in), αλλά θα μας δίνει τη δυνατότητα να εντοπίσουμε μερικά δεδομένα του χρήστη και πιθανώς να χρησιμοποιήσουμε ένα μοναδικό User ID για να μπορέσουμε να προσαρμόσουμε το περιεχόμενο.

Το στήσιμο ενός συστήματος login για ένα site έχει πολλά πλεονεκτήματα, όπως :

Για να μπορέσουμε να δημιουργήσουμε αυτό το σύστημα θα χρειαστούμε μια καλή γνώση της ColdFusion. Θα πρέπει να επικεντρωθούμε σε συγκεκριμένα θέματα της γλώσσας CFML, όπως είναι οι μεταβλητές συνόδου (session variables) και η αρχιτεκτονική εφαρμογής (application architecture), η πρόσβαση σε βάσεις δεδομένων (database access) και το tag <cfquery>, τα cookies και άλλες μέθοδοι αποθήκευσης στην πλευρά του πελάτη (client-side) καθώς και τα tags <cfform> και <cfinput>.

Βασικά, θα δούμε τα βήματα που απαιτούνται για να δημιουργήσουμε ένα βασικό σύστημα login, που θα έχει ένα ID και ένα password και που θα δίνει τη δυνατότητα σ’ έναν χρήστη να συνδεθεί (log in) στο site και να ψάξει για καινούργιες συνταγές στο σύστημα. Η βάση δεδομένων που θα χρησιμοποιήσουμε έχει τους εξής δύο πίνακες (tables) : Users και Recipes.

Ο πρώτος διαθέτει ένα μοναδικό User Key (ID) για την εσωτερική μεταβίβαση των πληροφοριών όπως επίσης και ένα μοναδικό πεδίο User Name (UserName) που είναι ευκολότερο να το θυμάται ο χρήστης, ένα πεδίο Password και διάφορα στατιστικά πεδία που θα επεξηγηθούν αργότερα.

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

Αναζητώντας έναν χρήστη στον πίνακα Users, μπορούμε να χρησιμοποιήσουμε το ID του για να ψάξουμε όλες τις συνταγές χρησιμοποιώντας το στο clause WHERE του ερωτήματος (query) στον πίνακα Recipes.

 

Επικύρωση Καταχώρησης & Αποθήκευση Στατιστικών

Το πρώτο πράγμα που θα πρέπει να κάνουμε είναι να βεβαιωθούμε ότι ο χρήστης πράγματι καταχωρεί τιμές, έτσι θα πρέπει να δημιουργήσουμε κάποια επικύρωση στην πλευρά του πελάτη (client-side validation) με τα tags <cfform> και <cfinput> για να κάνουμε υποχρεωτικά τα πεδία username και password.

Αυτή η απαίτηση της καταχώρησης θα εξασφαλίσει ότι όλοι οι χρήστες θα καταχωρήσουν τιμές και στα δύο πεδία πριν χρειασθεί να τα ελέγξουμε. Έτσι, βασικά καταλήγουμε στον εξής κώδικα για την κύρια φόρμα καταχώρησης (main login form, login.cfm) :

<cfform action="login2.cfm" method="post">

<b> User Name : </b><cfinput name="UserName" type="text"

Required="Yes" message="Δώστε User Name"><br>

size=2>

<b> Password : </b><cfinput name="Password" type="text"

Required="Yes" message="ΔώστεPassword"><br>

<input type="submit" value="Login Now!"> size=2>

</cfform>

Όπως μπορούμε να δούμε, η ιδιότητα action του tag cfform είναι ίση με "login2.cfm", δηλ. τη σελίδα στόχο (target page) της φόρμας. Οι μεταβλητές από τα πλαίσια κειμένου (input boxes) θα μεταβιβασθούν και έτσι θα μπορούμε να τοποθετήσουμε τον κώδικα επικύρωσης (validation code) στο login2.cfm και να έχουμε ακόμη πρόσβαση στο τι καταχώρησε ο χρήστης.

Τώρα, φυσικά, είναι καιρός να δούμε και την επικύρωση στην πλευρά του server (server-side validation). Θα πρέπει να σιγουρευτούμε ότι ο χρήστης είναι αυτός που ισχυρίζεται ότι είναι. Αλλιώς, η φόρμα login θα επιτρέπει σ’ έναν οποιονδήποτε να μπει στο site, ανεξάρτητα από το αν είναι ένας καταγεγραμμένος χρήστης (registered user) ή όχι.

Αυτό που χρειάζεται να κάνουμε είναι να ελέγξουμε και να βεβαιωθούμε ότι τα user name και password υπάρχουν στη βάση δεδομένων. Η αντίστοιχη εντολή SQL είναι η εξής :

SELECT * FROM Users

WHERE UserName = '#Form.UserName#'

AND Password = '#Form.Password#'

Με την παραπάνω εντολή θα έχουμε στα χέρια μας όλα τα στοιχεία του χρήστη, τα περισσότερα από τα οποία θα χρησιμοποιήσουμε σε στατιστική επεξεργασία. Αλλά οι δύο σημαντικότερες λειτουργίες αυτού του ερωτήματος είναι οι εξής : 1) να επικυρώσει (validate) ότι ο χρήστης πράγματι υπάρχει και 2) να πάρουμε το μοναδικό User ID, το οποίο περιέχει τα δεδομένα που χρησιμοποιούμε για να φιλτράρουμε όλες τις άλλες πληροφορίες στο site.

Αν ο χρήστης δεν υπάρχει, θα πρέπει να μην του επιτραπεί η πρόσβαση στις προστατευμένες σελίδες μας. Βασικά, εκτελούμε το ερώτημα (query) και μπορούμε να ελέγξουμε το record count για να διαπιστώσουμε αν επέστρεψε μια σειρά (row).

Το καμία σειρά (zero rows) σημαίνει ότι δεν υπάρχει καταχωρημένος τέτοιος χρήστης, ενώ αν επιστραφούν πολλές σειρές σημαίνει ότι η βάση δεδομένων δεν έχει στηθεί σωστά, εφόσον το username θα πρέπει να είναι μοναδικό.

Αν επιτρεπόταν να υπάρχουν διπλά user names, θα είχαμε πολλά άτομα που θα έκαναν σύνδεση (log on) με το ίδιο ID και θα είχαν έτσι πρόσβαση ο ένας στα στοιχεία του άλλου.

Αν και το παράδειγμά μας χρησιμοποιεί το SELECT * σαν το κριτήριο επιλογής, είναι σημαντικό για την ταχύτητα της εφαρμογής μας να παίρνουμε μόνο τα δεδομένα που πραγματικά χρειαζόμαστε. Η εντολή SELECT * είναι πολύ καλή αλλά θα μπορούσαμε να χρησιμοποιήσουμε και την εξής :

SELECT UserName, Password, LastIP, LastBrowser, LastLogin, TotalLogins

FROM Users

WHERE UserName = '#Form.UserName#'

AND Password = '#Form.Password#'

 

Χειρισμός των μη Έγκυρων Καταχωρήσεων στον Server

Θα πρέπει να αντιμετωπίσουμε τους χρήστες που καταχωρούν μη έγκυρα user name ή password. Έτσι, αν το query στην πλευρά του server (server-side) επιστρέφει 0 εγγραφές (zero records), μπορούμε να επιστρέψουμε τον χρήστη στη σελίδα login μ’ ένα μήνυμα.

Ένας καλός τρόπος να το κάνουμε αυτό είναι να περάσουμε το user name και ένα μήνυμα "Invalid Login" πίσω στο URL και να ανακατευθύνουμε τον χρήστη πίσω στη σελίδα Login. Η σελίδα login.cfm θα πρέπει να τροποποιηθεί για να το χειρισθεί αυτό χρησιμοποιώντας τη συνάρτηση IsDefined, ώστε να μπορέσει να ελέγξει αν οι μεταβλητές URL υπάρχουν πριν εμφανίσει τη σελίδα.

Θα δούμε τώρα πώς μπορούμε να αποθηκεύσουμε τα στατιστικά στοιχεία καταχώρησης του χρήστη (user login statistics).

Ποιοι χρήστες συνδέονται (log in) τακτικά;
Ποιους φυλλομετρητές (browsers) χρησιμοποιούν;
Πόσο συχνά συνδέονται;

Θα πρέπει να βρούμε έναν τρόπο να παρακολουθούμε τους χρήστες για να διαπιστώσουμε τι κάνουν ώστε να προσαρμόσουμε το site μας ανάλογα.

Χάρη σε μερικές μεταβλητές CGI της ColdFusion, όπως το είδος του φυλλομετρητή και η ΙΡ διεύθυνση του χρήστη, θα μπορούμε να παρακολουθούμε μερικές «προσωπικές» πληροφορίες των χρηστών ώστε να μπορούμε να διαχειριστούμε καλύτερα το site μας.

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

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

Στο login2.cfm, αποθηκεύουμε τις παλιές μεταβλητές ως εξής :

<cfset oldIP = getUser.LastIP>

<cfset oldBrowser = getUser.LastBrowser>

<cfset oldLogin = getUser.LastLogin>

<cfset TotLogins = getUser.TotalLogins>

Δεύτερο, θα πάρουμε αυτά που μας δίνει ο φυλλομετρητής και θα τα αποθηκεύσουμε σε μερικές τοπικές μεταβλητές. Χρησιμοποιώντας τις μεταβλητές CGI της ColdFusion, μπορούμε εύκολα να αποσπάσουμε το είδος του φυλλομετρητή και την ΙΡ διεύθυνση που χρησιμοποιούνται από τον χρήστη.

<cfset newIP = CGI.REMOTE_ADDR>

<cfset newBrowser = CGI.HTTP_USER_AGENT>

Θα δούμε τώρα πώς μπορούμε να παρακολουθήσουμε μερικά δεδομένα του χρήστη. Θα χρησιμοποιήσουμε τις συναρτήσεις CreateODBCDateTime() και Now() για να δημιουργήσουμε ένα date-time stamp που να μπορεί να το διαβάσει η βάση δεδομένων μας. Θα χρειασθεί επίσης να αυξήσουμε τον συνολικό αριθμό των logins κατά 1 και μετά να γράψουμε μια εντολή SQL update μέσα στο tag <cfquery> για να ενημερώσουμε τα δεδομένα μας.

Η καταχώρηση αυτού του είδους πληροφοριών θα μας βοηθήσει να μάθουμε τον μέσο όρο της κίνησης των χρηστών και θα δώσει απαντήσεις σε ερωτήσεις όπως : "Κάνουν οι χρήστες συνεχείς επισκέψεις στο site μας;" και "Πότε έκαναν login οι περισσότεροι χρήστες;".

<cfset TotLogins = TotLogins + 1>

<cfquery Datasource="yourdatasourcename" name="UpdateUser">

UPDATE Users

SET TotalLogins = #TotLogins#,

LastIP = '#newIP#',

LastBrowser = '#newBrowser#',

LastLogin = CreateODBCDateTime(Now())

WHERE UserID = #session.UserID#

</cfquery>

 

Αποθήκευση Login Πληροφοριών στον Πελάτη (Client)

Καθώς οι χρήστες περιηγούνται από συνταγή σε συνταγή στο site μας, θα πρέπει να βεβαιωθούμε ότι το site είναι σε θέση να θυμάται ποιος είναι ο χρήστης έτσι ώστε να έχει πρόσβαση σ’ όλες τις προστατευμένες περιοχές του site.

Για να γίνει αυτό θα πρέπει να αποθηκεύσουμε αυτά τα στοιχεία στον πελάτη (client). Είναι σημαντικό να τονίσουμε το ότι χρησιμοποιούμε πολλά είδη αποθήκευσης εδώ, με μεταβλητές συνόδου (session variables) και cookies, έτσι ώστε να υπάρχει μια μικρή περιττή επανάληψη (redundancy) στην περίπτωση που ένας χρήστης έχει απενεργοποιήσει τα cookies ή χρησιμοποιεί έναν μη στάνταρτ φυλλομετρητή.

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

Θα θελήσουμε να χρησιμοποιήσουμε τα cookies σαν εφεδρεία (backup), εφόσον οι μεταβλητές συνόδου έχουν περιορισμένη διάρκεια ζωής, που καθορίζεται από το μήκος του timeout που ορίζεται στον server. Ένα cookie παρέχει, στις περισσότερες περιπτώσεις, κάποια επιπλέον συνέχεια στον χρήστη στην περιήγηση του site για μεγάλες χρονικές περιόδους.

Πρώτα απ’ όλα μπορεί να θέλουμε να ελέγξουμε το αρχείο application.cfm. Αυτό θα μας δώσει μια βασική ιδέα του πώς μπορούμε να αρχικοποιήσουμε (initialize) τις μεταβλητές συνόδου (session variables). Θέλουμε ο κώδικάς μας να μπορεί να αναφέρεται στις μεταβλητές συνόδου και δεν υπάρχει λόγος να τοποθετήσουμε εντολές <cfparam> ή <cfif IsDefined()> στον κώδικά μας.

Και επειδή θέλουμε οι νέοι επισκέπτες να αναγκασθούν να κάνουν log in, δημιουργούμε τις μεταβλητές και τις καθαρίζουμε όταν δημιουργείται η σύνοδος (session). Έτσι, όταν νέοι χρήστες επισκέπτονται το site ή παλιοί χρήστες επιστρέφουν, ξεκινούν με μια καθαρή κατάσταση.

Μόλις επικυρώσουμε την ταυτότητα του χρήστη και καταγράψουμε όποια στοιχεία θέλουμε να κρατήσουμε, γράφουμε την τιμή του UserID στη μεταβλητή συνόδου Session.UserID. Μ’ αυτόν τον τρόπο, οι πληροφορίες της μεταβλητής αποθηκεύονται στον server σε μια μεταβλητή συνόδου.

Τι γίνεται τώρα με το πάντα σημαντικό cookie backup; Όλοι γνωρίζουμε ότι οι σύνοδοι έχουν χρονικό όριο (time out), ανεξάρτητα από το πόσο ψηλά ορίζουμε την τιμή του timeout και οι χρήστες σε κάποια στιγμή θα εγκαταλείψουν το site μας, έτσι θα αποθηκεύσουμε αυτά τα στοιχεία και σ’ ένα cookie επίσης.

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

Προσθέτουμε απλά ένα πλαίσιο ελέγχου (checkbox) στη φόρμα login με κάποιο κείμενο δίπλα, όπως "Αποθηκεύστε το login μου ώστε να μην χρειάζεται να θυμάμαι το password", ως εξής :

<input type="checkbox" name="ExpireCookie"> "Αποθηκεύστε το login μου ώστε να μην χρειάζεται να θυμάμαι το password"

Μετά, στο login2.cfm, ελέγχουμε την τιμή αυτού του πλαισίου ελέγχου πριν αποθηκεύσουμε το cookie. Η ColdFusion θα ορίσει το check box μόνο αν δεν είναι κενό (blank), όμως, έτσι θα πρέπει να γράψουμε τον κατάλληλο κώδικα, ελέγχοντας την ύπαρξή του.

<cfif IsDefined("Form.ExpireCookie")> <cfcookie name="UserID"

value="#GetUser.UserID#" Expires="NEVER">

<cfelse> <cfcookie name="UserID" value="#GetUser.UserID#">

</cfif>

Κάνουμε την υπόθεση ότι κανένας δεν θα θελήσει να καταχωρήσει ένα password περισσότερες από μία φορές, έτσι πάντα αποθηκεύουμε το cookie με το EXPIRES = "NEVER" στο tag cfcookie.

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

 

Έλεγχος των Στοιχείων Login Σελίδα-Σελίδα

Αφού λοιπόν έχει συνδεθεί (logged in) ο χρήστης, μπορεί να δει ο,τιδήποτε έχουμε να του προσφέρουμε στη σελίδα "post-login" και μπορούμε να συνδέσουμε (link) όλο το προστατευμένο περιεχόμενο από εδώ. Αλλά τώρα μπορεί να απορέσουμε πώς μπορούμε να προστατεύσουμε αυτές τις σελίδες από άλλους.

Απλά ελέγχουμε την ύπαρξη της session.UserID στην κορυφή της κάθε σελίδας και είμαστε εντάξει. Είναι προτιμότερο να το τοποθετήσουμε σ’ ένα included CFML template (με το tag <cfinclude>) έτσι ώστε να μπορεί να με-ταφερθεί εύκολα από σελίδα σε σελίδα, όπως include_CheckAuthority.cfm στα αρχεία zipped.

Βασικά, αυτό το αρχείο κάνει δύο πράγματα. Πρώτα, ελέγχει την ύπαρξη μιας μεταβλητής συνόδου (session variable). Αν υπάρχει κάποια, θέτουμε μια μεταβλητή flag (bLoggedIn στο αρχείο δείγμα). Αν δεν υπάρχει, ελέγχουμε για ένα cookie. Αν βρούμε ένα cookie, θα πρέπει να επαναορίσουμε τη μεταβλητή συνόδου ξανά στην τιμή του cookie και να θέσουμε τη μεταβλητή flag ίση με True.

Αν δεν βρούμε ένα cookie, ξέρουμε ότι ο χρήστης δεν έχει κάνει ποτέ logged in. Αφού επεξεργαστούμε τις μεταβλητές session και cookie, έχουμε τώρα ένα flag που δείχνει αν θα επιτραπεί ή όχι στον χρήστη να δει αυτή τη σελίδα.

Σε γενικές γραμμές, αν ο χρήστης δεν έχει εξουσιοδότηση (Unauthorized), αποτελεί μια καλή ιδέα να συμπεριλάβουμε μια σελίδα λάθους (error page) που να φανερώνει ότι ο χρήστης δεν έχει πρόσβαση σ’ αυτή τη σελίδα. Χρησιμοποιώντας ένα tag <cfinclude> θα μπορούμε να αποθηκεύσουμε αυτό το template ξεχωριστά και χρησιμοποιώντας ένας tag <cfexit> θα το εμποδίσει από το να επεξεργαστεί το υπόλοιπο της σελίδας.

Αν ρίξουμε μια ματιά στο αρχείο include_CheckAuthority.cfm, θα δούμε αυτόν τον έλεγχο ως εξής :

<cfif bLoggedIn = False> <cfinclude template="myErrorFile.cfm">

<cfexit> </cfif>

 

Σύνοψη

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

 

 

back.gif (9867 bytes)

Επιστροφή