Έτσι λειτουργεί η διαδικασία αποδοχής της σελίδας στο bluetronix CMS.
Με κάθε επίσκεψη στη σελίδα, το bluetronix CMS περνά από πολλές διαδικασίες επεξεργασίας. Σε αυτόν τον οδηγό θα μάθεις τη πλήρη διαδικασία αποδοχής και θα καταλάβεις πότε γίνονται έλεγχοι ασφαλείας, εκτελούνται σενάρια PHP, αντικαθίστανται μεταβλητές μορφής και παράγονται οι τελικές HTML σελίδες.
1. Φορτώνω σενάρια ασφαλείας
Στην αρχή, το bluetronix CMS φορτώνει τα ασφαλή σενάρια. Αυτά περιλαμβάνουν τον Έλεγχο Ασφαλείας, τον έλεγχο του αριθμού κλήσεων, την προετοιμασία ή τον έλεγχο παραμέτρων MySQL, καθώς και την ανάλυση παραμέτρων GET και POST.
Ελέγχουν που δεν απαιτούν σύνδεση με τη βάση δεδομένων εκτελούνται ήδη σε αυτό το σημείο.
2. Φορτώνω ρυθμίσεις module
Εφόσον υπάρχει, φορτώνεται το αρχείο /bx_Mod/config_own.php. Τα σενάρια και οι μεταβλητές ρύθμισης που καθορίζονται σε αυτό είναι ήδη διαθέσιμα από την αρχή της διαδικασίας απόδοσης.
3. Ξεκινήστε τη συνεδρία
Το CMS ξεκινά τη συνεδρία PHP με @session_start();. Ιδιαίτερα σημασία έχουν τρεις μεταβλητές συνεδρίας: $_SESSION["S_User"] για τον χρήστη CMS ή την κατάσταση επεξεργασίας, $_SESSION["S_Language"] για τη τρέχουσα γλώσσα και $_SESSION["Web_User"] για τον χρήστη του frontend login.
4. Φόρτωση παραμέτρων σελίδας
Στη συνέχεια, το CMS διαβάζει πληροφορίες για την τρέχουσα κλήση από τις μεταβλητές διακομιστή. $domain αποκτά το όνομα τομέα από $_SERVER["SERVER_NAME"], $FileParameter το διαδρομή αιτήματος συμπεριλαμβανομένων των παραμέτρων GET από $_SERVER["REQUEST_URI"] και $file το εκτελούμενο αρχείο από $_SERVER["PHP_SELF"].
$ReferURL περιέχει την τιμή του $_SERVER["HTTP_REFERER"], εφόσον έχει μεταδοθεί. Μπορεί να χρησιμοποιηθεί, για παράδειγμα, κατά την επαναφόρτωση πλαισίων ή περιοχών σελίδας.
5. Δημιουργία σύνδεσης με τη βάση δεδομένων
Το CMS δημιουργεί αυτόματα τη σύνδεση στη βάση δεδομένων. Έπειτα, οι πίνακες δεδομένων του CMS είναι διαθέσιμοι για περαιτέρω ελέγχους και για τη φόρτωση του περιεχομένου των σελίδων.
6. Έλεγχος παραμέτρων GET και POST ξανά
Μετά την εγκαθίδρυση της σύνδεσης στη βάση δεδομένων, το CMS καλεί το SECUREGetPost();. Οι παραμετροποιημένες GET και POST ελέγχονται ξανά και προσαρμόζονται αν χρειαστεί. Τώρα είναι επίσης δυνατοί οι έλεγχοι που απαιτούν πληροφορίες από τη βάση δεδομένων.
7. Ανακατευθύνσεις τομέα, επεξεργασίας και γλώσσας
Ανάλογα με τη ρύθμιση του CMS, το καλέσμενο domain, τη λειτουργία επεξεργασίας, τη γλώσσα που έχει επιλεγεί και τις παραμέτρους κλήσης, μπορεί να γίνει ανακατεύθυνση. Πιθανοί προορισμοί είναι το κύριο domain, το Edit-domain καθώς και γλωσσικά εξειδικευμένα domains ή URLs.
8. Ανακατεύθυνση HTTPS
Εάν η ιστοσελίδα έχει προσκληθεί χωρίς HTTPS, θα γίνει ανακατεύθυνση στην έκδοση SSL ή HTTPS της σελίδας.
9. Φόρτωση κεντρικών PHP scripts
Τώρα το CMS φορτώνει τις κεντρικές PHP λειτουργίες του. Αυτές περιλαμβάνουν, για παράδειγμα, το BlueSMTPMail() για την αποστολή email και το BlueFormSend() για την επεξεργασία φορμών. Επιπλέον κεντρικές λειτουργίες θα ενσωματωθούν επίσης.
10. Φόρτωση δεδομένων σελίδας από 00_site
Τα δεδομένα της ζητούμενης σελίδας διαβάζονται από τον πίνακα της βάσης δεδομένων 00_site. Κατά τη διαδικασία αυτή προσδιορίζονται μεταβλητές CMS όπως το $Template.
Επιπλέον, οι $LayoutHTML και $SitePHP αρχικοποιούνται. Ο $LayoutHTML περιέχει αργότερα το πλήρες HTML layout, ενώ ο $SitePHP περιέχει τον PHP κώδικα που ανήκει άμεσα στη ζητούμενη σελίδα.
11. Φόρτωση διάταξης από 00_layout
Το layout που αντιστοιχεί στη σελίδα φορτώνεται από τον πίνακα της βάσης δεδομένων 00_layout και αποτελεί τη βάση για περαιτέρω επεξεργασία στο $LayoutHTML.
12. Ρύθμιση γλώσσας για αρχεία JavaScript
Εάν υπάρχουν γλωσσικά ειδικά αρχεία, το CMS μπορεί να αντικαταστήσει τα πρότυπα αρχεία BxScript.js και BxHeadScript.js με αντίστοιχες γλωσσικές παραλλαγές, όπως BxScript_de.js ή BxScript_en.js.
Οι ετικέτες αρχείων __FV_/bx_script/BxScript_own_min.js__ ή __FV_/bx_script/BxHeadScript_own_min.js__ προσαρμόζονται στο layout.
13. Δημιουργία κεφαλίδας και δυναμικών περιεχομένων
Τώρα παράγονται δυναμικά περιεχόμενα και εκτελούνται συγκεκριμένα PHP scripts της σελίδας. Το DynMenue() παράγει δυναμικά μενού, το IncludeModul() ενσωματώνει διαμορφωμένα modules και το EditMARK() ρυθμίζει τις ετικέτες επεξεργασίας του CMS.
Με το eval($SitePHP) εκτελείται ο PHP κώδικας της τρέχουσας σελίδας. Το eval($IncludePHP) εκτελεί ενσωματωμένα PHP scripts.
14. Ρύθμιση παραμέτρων για CSS και JavaScript
Για τα CSS και JavaScript αρχεία, ένα παράμετρος αλλαγής ορίζεται. Έτσι, ο περιηγητής μπορεί να φορτώσει μια νέα έκδοση από παλιότερα αρχεία, αντί να χρησιμοποιήσει ένα παλαιωμένο αρχείο από την cache του.
Για παράδειγμα, μια αναφορά αρχείου όπως το /css/style.css μπορεί να μετατραπεί σε έναν καλούντα με παράμετρο έκδοσης όπως το /css/style.css?v2026....
15. Ρύθμιση σκοτεινού ή φωτεινού θέματος
Το CMS διαβάζει τη ρυθμισμένη κατάσταση εμφάνισης από το /bx_style/BxSource/CSSEditDarkLight.bx. Ανάλογα με το περιεχόμενο του αρχείου, ο σκοτεινός ή φωτεινός τρόπος τίθεται στο layout.
16. Ρύθμιση μεταβλητών διαμόρφωσης μονάδας στη διάταξη
Η διαμόρφωση των modules από το /bx_Mod/config_own.php εφαρμόζεται στο layout. Αν, για παράδειγμα, το shop, η αναζήτηση, η σύνδεση ή το module μετάφρασης είναι απενεργοποιημένα, τα αντίστοιχα στοιχεία ελέγχου μπορούν αυτόματα να κρυφτούν.
Για αυτό, οι ετικέτες layout όπως __DB_GB_DesktopIconBasket_Display__, __DB_GB_DesktopIconSearch_Display__, __DB_GB_DesktopIconLogin_Display__ ή __DB_GB_DesktopIconLang_Display__ αντικαθίστανται με κανένα.
17. Αφαίρεση υπολοίπων αναπληρωματικών ετικετών
Οι μη αντικατεστημένες ετικέτες του CMS αφαιρούνται από το τελικό HTML. Αυτό αφορά μεταξύ άλλων ετικέτες των προτύπων __DB_...__ και __ST_...__ καθώς και τις εσωτερικές ετικέτες σχόλιων xxx που προβλέπονται γι' αυτές.
18. Αφαίρεση σχολίων HTML
Το CMS αφαιρεί στη συνέχεια τα HTML σχόλια από το $LayoutHTML. Έτσι, περιττό κείμενο σχολίου δεν παραδίδεται στον περιηγητή.
19. Εκτέλεση μετάφρασης γλώσσας
Εάν το $_SESSION["S_Language"] δεν είναι ίσο με $GBMainLang, τα επισημασμένα κείμενα μεταφράζονται στη γλώσσα που χρησιμοποιείται επί του παρόντος. Οι μεταφράσεις προέρχονται από τον πίνακα της βάσης δεδομένων Translation.
Εάν ένα απαραίτητο κείμενο δεν είναι ήδη παρόν εκεί, θα δημιουργηθεί μια νέα καταχώριση στο Translation. Το CMS αναγνωρίζει μεταφράσιμα περιεχόμενα με βάση τις ετικέτες My Text και My Text.
20. Αντικατάσταση κλήσεων εικόνας μέσω IMG.pl
Κλήσεις εικόνας και περικοπές εικόνας μέσω του IMG.pl αντικαθίστανται από προηγούμενα παραγόμενα ή βελτιστοποιημένα αρχεία εικόνας. Η τελική HTML σελίδα μπορεί έτσι να έχει άμεση πρόσβαση σε αυτές τις παραλλαγές εικόνας.
21. Εμφάνιση ολοκληρωμένης σελίδας
Αφού ολοκληρωθεί η επεξεργασία, το $LayoutHTML εξάγεται στον περιηγητή με τον τύπο περιεχομένου text/html; charset=utf-8, για παράδειγμα μέσω του print $LayoutHTML;.
Για μη ενεργοποιημένα ή εσωτερικά domains, η έξοδος σημαίνεται με noindex, nofollow, ώστε αυτές οι σελίδες να μην καταχωρούνται από τις μηχανές αναζήτησης.
22. Εγγραφή cache
Μετά την έξοδο της σελίδας, το CMS μπορεί να αποθηκεύσει τη δημιουργημένη σελίδα στην μνήμη cache. Προϋπόθεση είναι ότι κανένας S_User δεν είναι συνδεδεμένος, η σελίδα δεν βρίσκεται σε λειτουργία επεξεργασίας και η αποθήκευση στην cache για αυτή τη σελίδα είναι ενεργοποιημένη.
Κατά μελλοντικές κλήσεις, μπορεί να χρησιμοποιηθεί η αποθηκευμένη HTML σελίδα, χωρίς να πρέπει να εκτελεστεί ξανά η πλήρης διαδικασία rendering.
Συχνές Ερωτήσεις
τι ρωτούν συχνά οι πελάτες μας
Τι είναι η διαδικασία rendering της ιστοσελίδας;
Με αυτό το όρο το tutorial αναφέρεται στα βήματα επεξεργασίας με τα οποία το bluetronix CMS δημιουργεί τη τελική HTML σελίδα από δεδομένα σελίδας και διάταξης και την παραδίδει στον περιηγητή.
Ποιους ελέγχους ασφαλείας διεξάγεται πριν από τη σύνδεση στη βάση δεδομένων;
Πριν από τη σύνδεση στη βάση δεδομένων, διεξάγονται μεταξύ άλλων ο Έλεγχος Ασφαλείας, η επαλήθευση του αριθμού κλήσεων, η προετοιμασία παραμέτρων MySQL και η ανάλυση παραμέτρων GET και POST.
Πότε φορτώνεται η διαμόρφωση του module;
Το αρχείο /bx_Mod/config_own.php φορτώνεται, εφόσον υπάρχει, πριν από την εκκίνηση της συνεδρίας και πριν από την εγκαθίδρυση της σύνδεσης με τη βάση δεδομένων.
Για ποιο σκοπό χρησιμοποιούνται οι S_User, S_Language και Web_User;
S_User αναφέρεται στον χρήστη του CMS ή στη λειτουργία επεξεργασίας, S_Language είναι η τρέχουσα γλώσσα της ιστοσελίδας και Web_User ο χρήστης της front-end σύνδεσης.
Από ποιοι πίνακες της βάσης προέρχονται η σελίδα και η διάταξη;
Τα δεδομένα της σελίδας φορτώνονται από 00_site. Η αντίστοιχη διάταξη διαβάζεται από 00_layout και επεξεργάζεται στο $LayoutHTML.
Πότε εκτελείται ο κώδικας PHP μιας σελίδας;
Κατά τη δημιουργία της κεφαλίδας και δυναμικών περιεχομένων, ο κώδικας της σελίδας εκτελείται μέσω του eval($SitePHP) και ο ενσωματωμένος κώδικας PHP μέσω του eval($IncludePHP).
Πότε χρησιμοποιούνται οι γλώσσες JavaScript που εξαρτώνται από τη γλώσσα;
Εάν υπάρχουν κατάλληλες γλωσσικές παραλλαγές, τα BxScript.js και BxHeadScript.js μπορούν να αντικατασταθούν από τα αντίστοιχα γλωσσικά αρχεία.
Πώς προσδιορίζεται η σκοτεινή ή φωτεινή λειτουργία;
Το CMS διαβάζει το αρχείο /bx_style/BxSource/CSSEditDarkLight.bx και καθορίζει βάσει του περιεχομένου του τη λειτουργία εμφάνισης στη διάταξη.
Πότε μεταφράζονται αυτόματα τα κείμενα;
Όταν η τρέχουσα γλώσσα αποκλίνει από το $GBMainLang, τα σωστά επισημασμένα κείμενα μεταφράζονται με βάση τις εγγραφές στον πίνακα Translation.
Υπό ποιες προϋποθέσεις αποθηκεύεται η τελική σελίδα στην cache;
Η cache μπορεί να γραφτεί αν κανένας S_User δεν είναι συνδεδεμένος, η σελίδα δεν βρίσκεται σε λειτουργία επεξεργασίας και η αποθήκευση στην cache για αυτή τη σελίδα έχει ενεργοποιηθεί.