background image

Κεφάλαιο 3 - Ανάπτυξη και Υλοποίηση της Εφαρμογής 
 

 

 

60 

 

λειτουργιών που δεν είναι διαθέσιμες σε μη συνδεμένους επισκέπτες. Η δεύτερη μεταβλητή 
είναι  η  “$_SESSION['vhdl_user']['activated']”  που  επισημαίνει  την  ενεργοποίηση  του 
λογαριασμού μέσω του e-mail επιβεβαίωσης. Η μεταβλητή αυτή έχει την τιμή 1 εάν ο χρήστης 
έχει επιβεβαιώσει τον λογαριασμό του ή έχει συνδεθεί με “SID” λογαριασμό επισκέπτη και 0 
εάν  ο  χρήστης  δεν  έχει  επιβεβαιώσει  τον  λογαριασμό  του.  Έπειτα  έχουμε  την  μεταβλητή 
“$_SESSION['vhdl_user']['type']” που παίρνει την τιμή 1 για λογαριασμούς τύπου διαχειριστή 
και 0 στους υπόλοιπους. Ο έλεγχος αυτής τις τιμής γίνεται κατά κόρον για την βεβαίωση ότι οι 
λειτουργίες  διαχειριστών  εκτελούνται  από  λογαριασμούς  χρηστών  με  τα  αντίστοιχα 
δικαιώματα.  Τέλος,  έχουμε  την  χρήση  “$_SESSION['vhdl_user']['username']”  και 
“$_SESSION['vhdl_user']['id']”  που  παίρνουν  αντίστοιχα  τις  τιμές  του  ονόματος  και  του 
αναγνωριστικού “id” του χρήστη ενώ στην περίπτωση συνδεμένου επισκέπτη “SID” περιέχουν 
τις τιμές “Guest” και “0”. Αυτό μας επιτρέπει συχνά να απομονώσουμε λειτουργίες για τους 
συνδεμένους  χρήστες  και  για  τους  συνδεμένους  επισκέπτες  κάνοντας  τον  έλεγχο  για  τις 
συγκεκριμένες  τιμές  που  δίνουμε  στην  σύνδεση  επισκεπτών.  Το  επίπεδο  αυτό  είναι 
ενσωματωμένο  στις  περισσότερες  λειτουργίες  και  συχνά  χρησιμοποιούμε  διαδοχικούς 
ελέγχους απομονώνοντας σταδιακά τις ποιο λεπτές λειτουργίες όπως αυτές που προσφέρονται 
σε διαχειριστές. 

 

Το  τελευταίο  επίπεδο  ασφάλειας  αφορά  τα  αρχεία  της  εφαρμογής.  Καθώς 

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

1. 

<?php

 

header

(

"location: //"

.

$_SERVER

[

"SERVER_NAME"

]);

 

?>

 

 

Κώδικας 27: index.php - Κώδικας του αρχείο ανακατεύθυνσης 

Έτσι  χρησιμοποιούμε  σε  κάθε  κατάλογο  εκτός  του  αρχικού  ένα  αρχείο  “index.php”  με 
συγκεκριμένη  δομή  ώστε  να  ανακατευθύνει  τον  χρήστη  στην  αρχική  διεύθυνση  του 
εξυπηρετητή (Κώδικας 27). Έτσι αρχικά επιβεβαιώνουμε ότι ο επισκέπτης δεν έχει πρόσβαση 
απευθείας στους καταλόγους τις εφαρμογής. 

1. 

<?php

  

2. 

if

(

 

!

isset

(

$db

)

 

){

 

3. 

  header

(

"location: //"

.

$_SERVER

[

"SERVER_NAME"

]);

  

4. 

  exit

();

 

5. 

}

 

6. 

?>

 

 

Κώδικας 28: Κώδικας ανακατεύθυνση που βρίσκεται σε κάθε αρχείο σελίδας 

Όσο  αφορά  τα  αρχεία  στον  κατάλογο  “/pages/”  που  αποτελούν  τον  κορμό  εμφάνισης  κάθε 
σελίδας, περιέχουμε έναν έλεγχο για την επιβεβαίωση της σωστής ροής κίνησης. Ο έλεγχος 
αυτός στοχεύει στην εύρεση του αντικειμένου που δημιουργούμε στο αρχείο “loader.php” από 
την κλάση “Database” και προκαλεί ανακατεύθυνση σε περίπτωση που το αντικείμενο αυτό 
δεν υπάρχει (Κώδικας 28). Έτσι αρχικά επιβεβαιώνουμε ότι ο χρήστης επισκέπτεται την σελίδα 
από την σωστή ροή κίνησης ενώ έχουμε το δευτερεύον πλεονέκτημα ανίχνευσης προβλημάτων 
στην  σύνδεση  με  την  βάση  δεδομένων.  Με  το  επίπεδο  αυτό  ασφαλίζουμε  την  σωστή  ροή 
κίνησης.