Tips n Tricks

Tips and tricks Έξυπνα κόλπα για διάφορα θέματα πληροφορικής. Παρακολουθείστε τα μπροστά στην οθόνη του υπολογιστή σας σε μορφή swf.

 

Προγραμματισμός Internet

internet programming Tips n' tricks για διάφορα θέματα προγραμματισμού διαδικτύου.

 

Απόκρυψη περιεχομένων καταλόγων στον Apache

Από τους πιο σημαντικούς παράγοντες στο στήσιμο ενός δικτυακού τόπου είναι η ασφάλεια των αρχείων και των καταλόγων μας. Το συγκεκριμένο tip αφορά την δυνατότητα πρόσβασης που έχουν οι επισκέπτες του δικτυακού μας τόπου στους φάκελους της δομής μας και αφορά servers που τρέχουν τον Apache.

Εξ’ ορισμού ο Apache κατά το στήσιμό του συμπεριφέρεται ως εξής: όταν ο επισκέπτης ζητήσει μια διεύθυνση χωρίς συγκεκριμένο όνομα αρχείου (πχ www.mysite.com, ή www.mysite.com/myfolder ) ψάχνει στον φάκελο που οδηγεί η διεύθυνση να βρει κάποιο αρχείο με το όνομα index.html ή index.php. Στην περίπτωση που βρει αρχείο με το όνομα αυτό το φορτώνει στον browser. Στην περίπτωση που δεν βρει κάποιο τέτοιο αρχείο εμφανίζει στον browser τα περιεχόμενα του καταλόγου όπως φαίνεται στη παρακάτω εικόνα.

apache

Για να αποτρέψουμε αυτήν την συμπεριφορά χρειάζεται να αλλάξουμε την αντίστοιχη ρύθμιση στον Apache.


Αλλαγή ρύθμισης httpd.conf

Στην περίπτωση που έχουμε εγκαταστημένο το xampp control center ανοίγουμε από το πλήκτρο explore την δομή των καταλόγων του site μας και οδηγούμαστε στο φάκελο apache/conf.

apache

apache

Στον φάκελο αυτό υπάρχει το αρχείο ρυθμίσεων του Apache, httpd.conf το οποίο και ανοίγουμε με έναν επεξεργαστή κειμένου.

apache

Μέσα στο κείμενο βρίσκουμε την γραμμή

apache

Και απλά προσθέτουμε ένα – πριν την λέξη indexes και αποθηκεύουμε το αρχείο.

apache


Επανεκκίνηση Apache

Τώρα το μόνο που χρειάζεται είναι να επανεκκινήσουμε την υπηρεσία του Apache για να φορτωθούν οι νέες ρυθμίσεις (Κάνουμε πρώτα stop και μετά start).

apache

Πλέον οι επισκέπτες δεν μπορούν να δουν από τον browser τους τα περιεχόμενα των καταλόγων μας.

apache

 

 

Απόκρυψη προειδοποιήσεων στην php

Στις σελίδες που χρησιμοποιείται κώδικας php όταν κάποια εντολή περιλαμβάνει λάθη εκτέλεσης, εμφανίζεται στον browser η γνωστή προειδοποίηση PHP WARNING:..κλπ. Αυτό είναι αρκετά βοηθητικό την περίοδο που αναπτύσσουμε και τεστάρουμε την σελίδα μας, καθώς μας βοηθάει να εντοπίσουμε και να διορθώσουμε λάθη. Στην περίπτωση όμως που ανεβάσουμε την σελίδα μας και την κάνουμε προσιτή στο κοινό, είναι πιθανό να θέλουμε για αισθητικούς λόγους να μην φαίνονται τυχόν προειδοποιήσεις PHP που δεν θα οδηγήσουν σε fatal error και σε αναστολή εκτέλεσης της σελίδας.

Ένας κεντρικός τρόπος για την απόκρυψη των προειδοποιήσεων είναι μέσω του αρχείου php.ini που βρίσκεται στον κατάλογο της php του server μας. Εκεί θα αναζητήσουμε την ενότητα "Error handling and logging" η οποία αναφέρει την χρήση της παραμέτρου error_reporting.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; error_reporting is a bit-field. Or each number up to get desired error
; reporting level
; E_ALL - All errors and warnings
; E_ERROR - fatal run-time errors
; E_WARNING - run-time warnings (non-fatal errors)
; E_PARSE - compile-time parse errors
; E_NOTICE - run-time notices (these are warnings which often result
; from a bug in your code, but it's possible that it was
; intentional (e.g., using an uninitialized variable and
; relying on the fact it's automatically initialized to an
; empty string)
; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's initial startup
; E_COMPILE_ERROR - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR - user-generated error message
; E_USER_WARNING - user-generated warning message
; E_USER_NOTICE - user-generated notice message
;
; Examples:
;
; - Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE
;
; - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
; - Show all errors except for notices
;
error_reporting = E_ALL; display all errors, warnings and notices

Με την ρύθμιση που παρουσιάζεται στην παραπάνω παράθεση η php θα εμφανίζει όλα τα λάθη. Άρα αρκεί εμείς να αλλάξουμε την πρόταση error_reporting σύμφωνα με τις ανάγκες μας. Αν για πράδειγμα γράψουμε error_reporting=E_ALL & ~E_NOTICE & ~E_WARNING; η php θα εμφανίζει όλα τα λάθη εκτός από τα WRNING και τα NOTICES.

Στην περίπτωση που θέλουμε να αποκρύψουμε την εμφάνιση προειδοποιήσεων σε μεμονομένες εντολές του κώδικά μας, δεν χρειάζεται να αλλάξουμε τις ρυθμίσεις του php.ini, αρκεί μόνο να χρησιμοποιούμε το σύμβολο @ πριν από την εντολή της οποίας δεν επιθημούμε να εμφανιστούν οι προειδοποιήσεις.

 

Συστήματα διαχείρισης περιεχομένου (CMS)

cms Tips n' tricks για διάφορα θέματα που αφορούν συστήματα διαχείρισης περιεχομένου.

 

Εγκατάσταση Joomla 1.0.13 στο ΠΣΔ

Είναι πολύ γνωστό ότι το Πανελλήνιο Σχολικό Δίκτυο έχει ενεργοποιημένη την επιλογή SAFE MODE (SAFE MODE = ON). Αυτό έχει ως αποτέλεσμα τα διάφορα CMS που κυκλοφορούν να μην μπορούν να δουλέψουν στο 100%. Με το Safe Mode ON , δεν μπορεί να γίνει εγκατάσταση των modules, components και mambots που επιθυμεί ο διαχειριστής του CMS. To safe mode patch που κυκλοφορεί ΔΕΝ ΔΟΥΛΕΥΕΙ!!!!. Παρακάτω αναλύω έναν τρόπο για να ξεπεραστεί αυτό το πρόβλημα και να πραγματοποιηθεί εγκατάσταση του Joomla 1.0.13 στο ΠΣΔ με εγκατεστημένα όλα τα modυles, components και mambots που επιθυμείτε!!!!.

Το tip προϋποθέτει ότι ο αναγνώστης γνωρίζει τα βασικά από CMS,PHP,MYSQL και στήσιμο ενός site τοπικά με την χρήση του XAMPP.

ΒΗΜΑ 1. Στήνουμε το XAMPP στον Η/Υ. Το XAMPP είναι πακέτο το οποίο μας παρέχει μετά την εγκατάσταση Apache,MySQL,PHP και Per.l Μπορείτε να το κατεβάσετε από το (http://www.apachefriends.org/en/xampp.html )

ΒΗΜΑ 2. Δημιουργούμε μια βάση δεδομένων στο XAMPP και ορίζουμε τα ίδια στοιχεία με την βάση του Σχολικού Δικτύου, δηλαδή ίδιο όνομα χρήστη βάσης και ίδιο κωδικό πρόσβασης.

ΒΗΜΑ 3. Κάνουμε εγκατάσταση το Joomla CMS (Μπορείτε να κάνετε και άλλο CMS πχ. Mambo,Elxis)

BHMA 4. Κάνουμε εγκατάσταση στο καινούργιο μας τοπικό JOOMLA SITE ότι επιθυμούμε!!! (modules , components, mambots)

ΒΗΜΑ 5. Εξάγουμε την βάση μας με τις παρακάτω ρυθμίσεις : (κάντε click στην εικόνα)

ΒΗΜΑ 6. Κάνουμε import την βάση μας στην βάση του ΠΣΔ

ΒΗΜΑ 7. Με έναν FTP Client περνάμε όλα τα αρχεία του τοπικού joomla στον server του ΠΣΔ

ΒΗΜΑ 8. Κάνουμε EDIT το αρχείο configuration.php και αλλάζουμε τα παρακάτω : (κάντε click στην εικόνα)

BHMA 9. Αποθηκεύουμε και περνάμε ξανα το configuration.php στον server μας.

Είμαστε έτοιμοι να δούμε online site μας με το ίδιο περιεχόμενο του τοπικού site!!!

Μπορείτε να επισκευτείτε τον δικτυακό τόπο http://users.sch.gr/pougaridis/index.php για να δείτε το αποτέλεσμα

Μετρητής StarGallery (Elxis)

Το Star Gallery είναι ένα πολύ καλό και δωρεάν component του Elxis CMS για την διαχείριση συλλογών φωτογραφιών.

Ο μετρητής λειτουργεί κανονικά στο pop up ajax παράθυρο, όμως δεν λαμβάνει υπόψιν του το πρώτο κλικ που γίνεται σε μια φωτογραφία (πριν ανοίξει το ajax παράθυρο πλοήγησης). Έτσι αν κάποιος επισκέπτης κάνει κλικ σε μια φωτογραφία και μετά κλείσει το pop up παράθυρο η φωτογραφία στην οποία έκανε κλικ δεν αυξάνει τον μετρητή της.

Έτσι άνοιξα το αρχείο stargallery.php που περιλαμβάνεται στον φάκελο του component και άρχισα να πειραματίζομαι με τον κώδικα. Τελικά κατέληξα στην εξής λύση. Στην γραμμή 233 του αρχείου (μόλις έχει ελεγχθεί ότι ο χρήστης έχει τα κατάλληλα δικαιώματα για να δει την εικόνα και λίγο πριν φορτωθεί το ajax παράθυρο προσέθεσα τις παρακάτω γραμμές κώδικα:

//Update counter (this part is not in the original stargallery component)
 
$query = "SELECT * FROM #__stargallery WHERE id='$id' AND catid=".$catid.""
. "\n AND approved=1 AND published=1";
 
$database->setQuery( $query, '#__', 1, 0 );
$rows = $database->loadObjectList();
$row = &$rows[0];
$newimgcounter = $row->imgcounter + 1;
$database->setQuery( "UPDATE #__stargallery SET imgcounter='$newimgcounter' WHERE id='$row->id'" );
$database->query();

Τώρα πλέον ο μετρητής του StarGallery λαμβάνει υπόψιν του και το πρώτο κλικ που γίνεται σε μια φωτογραφία πριν ανοίξει το ajax παράθυρο.

Πως να διαλέξω CMS;

Εδώ και πολύ καιρό η μόδα στην ανάπτυξη δικτυακών τόπων ακούει στο όνομα CMS (ή συστήματα διαχείρισης περιεχομένου ελληνιστί). Υπάρχουν εκατοντάδες CMS, τα πιο πολλά από τα οποία είναι και open source για να δοκιμάσετε και να χρησιμοποιήσετε ώστε να έχεται χωρίς πολύ κόπο ένα site επαγγελματικών προδιαγραφών (Για παράδειγμα το δικό μας site κρύβει από πίσω την δουλειά των ανθρώπων που ανέπυξαν το Drupal CMS). Ωραία λοιπόν! Πως όμως θα βρω το CMS που μου ταιριάζει;

Άν κάνεται μια πρόχειρη αναζήτηση για CMS θα δείτε πως εκτός από πάρα πολλά, το κάθε ένα έχει και διαφορετικές δυνατότητες και αδυναμίες. Έτσι άλλα CMS ταιριάζουν σε bloggers άλλα για το στήσιμο portals, άλλα για on-line μαθήματα, άλλα είναι δωρεάν, άλλα έχουν chat αλλά δεν έχουν forum, άλλα έχουν forum αλλά δεν έχουν chat κ.ο.κ.

Για να βρείτε λοιπόν αυτό που σας ταιριάζει (αφού πρώτα έχετε ξεκαθαρίσει τι ακριβώς θέλετε) υπάρχουν δυο κύριες διευθύνσεις που μπορείτε να επισκεφτείτε.

Η πρώτη είναι η http://www.cmsmatrix.org η οποία αποτελεί μια πολύ καλή μηχανή αναζήτησης CMS με βάση τις ανάγκες του καθενός.

Απλά καθορίζεται τα κριτήρια που θέλεται να πληρεί το CMS που ψάχνετε (πχ να έχει σύστημα forum, image gallery, να επιτρέπει κωδικοποίηση UTF-8, να υπάρχει forum υποστήριξης κλπ)

cms matrix

και βλέπετε ποια συστήματα ικανοποιούν τα κριτήρια αυτά.

cms matrix


Μια δεύτερη καλή επιλογή για την αναζήτηση CMS είναι και το http://www.opensourcecms.com το οποίο παρουσιάζει όλα τα open source CMS κατηγοριοποιημένα αλλά δεν έχει την δυνατότητα αναζήτησης με κριτήρια. Μια καλή όμως δυνατότητα που σας δίνει εκτός από την online δοκιμή, είναι η παραχώριση δωρεάν χώρου για να στήσετε και να δοκιμάσετε όποιο cms θέλετε σε "πραγματικές συνθήκες".

cms