ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΤΕΧΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΜΑ:



Σχετικά έγγραφα
ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ.

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

ΕΦΑΡΜΟΓΗ ΔΙΑΧΕΙΡΙΣΗΣ ΙΣΤΟΣΕΛΙΔΩΝ ΜΕΛΩΝ ΔΕΠ, ΤΜΗΜΑΤΟΣ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΠΑΤΡΩΝ ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΠΛΟΗΓΗΣΗΣ ΚΑΙ ΧΡΗΣΗΣ

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

Εγχειρίδιο Χρήσης για Διαχειριστές. Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο

Εγχειρίδιο Λειτουργίας Τράπεζας Χρόνου

Εγχειρίδιο Χρήσης Εφαρμογής Συστήματος Διαχείρισης Λογισμικού

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ:

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΟΡΓΑΝΩΣΗΣ ΓΡΑΦΕΙΟΥ. Helpdesk

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

Εγχειρίδιο Χρήσης-Οδηγός Εκπαίδευσης Χρηστών. - Δήμος Δέλτα - Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

Οδηγός Χρήστη. Καλώς ήλθατε στο Ηλεκτρονικό Περιβάλλον Μάθησης.

Διαχείριση περιεχομένου πύλης ηλεκτρονικών υπηρεσιών v10 v.1.0. [User manual]

Εγχειρίδιο Χρήσης για Εκπαιδευτές/Διοικητικούς. Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο

Περιεχόμενα. Εισαγωγή. Οδηγός Χρήστη - Φοιτητή

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER

Οδηγός Συστήματος Ηλεκτρονικής Διαχείρισης Εγγράφων (ΣΗΔΕ)

Βασικές Οδηγίες Χρήσης της Εφαρμογής

Εγχειρίδιο Φοιτητή. Course Management Platform. Εισαγωγή. for Universities Ομάδα Ασύγχρονης Τηλεκπαίδευσης Παν. Μακεδονίας Σεπτέμβριος 2004

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΠΛΑΤΦΟΡΜΑΣ OPENSMS

Οδηγίες Χρήσης (προσθήκη νέου άρθρου σε σελίδα iκαταστήματος)


Δραστηριότητα 9 Δημιουργία και διαχείριση blog μέσω του Blogger. Δημιουργία ιστολογίου

Αναλυτική παρουσίαση της Εφαρμογής (Ενεργοί Δημότες)

Blog στο Wordpress. Επιμέλεια: Δέγγλερη Σοφία

6 Εισαγωγή στο Wordpress 3.x

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Πάτρας

Είσοδος. Καλωσορίσατε στο Ενιαίο Σύστημα Πληρωμών Δαπανών Ηλεκτρονικών Υπηρεσιών.

Εγχειρίδιο διαχείρισης χρηστών και λιστών διανομής για τον Υπεύθυνο Φορέα του Δικτύου "Σύζευξις" -1-

«Οδηγίες χρήσης εφαρμογής Ενιαίου Συστήματος Πληρωμών»

7 Βήματα για δημιουργία Ιστοτόπου Ιστολογίου

Δημιουργία blog στο wordpress.com

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

Εγχειρίδιο εγκατάστασης και χρήσης περιοδικών etwinning

Οδηγός Εγγραφής και Χρήσης Εφαρμογής. Διαχειριστής Ιδρύματος

Κατασκευή Ιστολόγιου

Ιδρυματικό Αποθετήριο ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

Εγχειρίδιο Χρήσης. για ΟΙΚΟΝΟΜΙΚΟΥΣ ΦΟΡΕΙΣ

Οδηγός γρήγορης εκκίνησης

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΑΝΤΑΛΛΑΚΤΗΡΙΩΝ

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

Εγχειρίδιο Συντονιστή Τηλεδιασκέψεων Υπηρεσίας e:presence

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

ΠΛΑΤΦΟΡΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΙΝΤΕΟΔΙΑΛΕΞΕΩΝ ΔΗΛΟΣ delos.uoa.gr. Εγχειρίδιο Χρήσης Μελών ΔΕΠ

Πανεπιστήμιο Αιγαίου. Ναυτίλος. Σύστημα Ηλεκτρονικής Υποβολής Αιτήσεων Μεταπτυχιακών Προγραμμάτων Πανεπιστημίου Αιγαίου

Blog στο Wordpress. Επιμέλεια: Δέγγλερη Σοφία

ΕΓΧΕΙΡΙΔΙΟ ΔΙΑΧΕΙΡΙΣΗΣ Συστήματος Διαχείρισης & Διακίνησης Εγγράφων DocuTracks

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Περιεχόμενα. Αντί προλόγου Πώς να χρησιμοποιήσετε το βιβλίο Κεφάλαιο 1: Πώς δημιουργώ το Προφίλ μου στο Facebook;...

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ: Ανάπτυξη του Εκπαιδευτικού Ιστότοπου. με PHP και MySQL

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ ΓΙΑ ΤΗΝ ΕΞΥΠΗΡΕΤΗΣΗ ΑΣΘΕΝΩΝ ΣΥΜΒΕΒΛΗΜΕΝΟΥΣ ΜΕ ΤΟΝ Ε.Ο.Π.Υ.

ΟΔΗΓΙΕΣ ΧΡΗΣΤΗ ΓΙΑ ΤΟ ΠΡΟΓΡΑΜΜΑ ΗΛΕΚΤΡΟΝΙΚΗΣ ΤΑΞΗΣ

ΑΠΟΤΙΜΗΣΗ ΤΟΥ ΕΡΓΟΥ ΤΟΥ ΤΜΗΜΑΤΟΣ ΣΤΟΧΟΙ ΓΙΑ ΤΗΝ ΠΕΡΙΟΔΟ ΠΑΡΑΡΤΗΜΑ ΧΙ

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

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Πάτρας

Ο Οδηγός γρήγορης εκκίνησης

«Σύστημα ΔΕΠ» ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ. Έκδοση 1.1

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

ΓΕΝΙΚΗ ΓΡΑΜΜΑΤΕΙΑ ΔΗΜΟΣΙΩΝ ΕΠΕΝΔΥΣΕΩΝ & ΕΣΠΑ

Λιμενικό Σώμα Ελληνική Ακτοφυλακή ΕΘΝΙΚΗ ΕΝΙΑΙΑ ΝΑΥΤΙΛΙΑΚΗ ΘΥΡΙΔΑ. Εγχειρίδιο Χρήσης

Υπηρεσία Ιστοτόπου - Ιστολογίου

<a href=" στο κείμενο</a>.

Ιδρυματικό Αποθετήριο ΤΕΙ ΠΕΙΡΑΙΑ

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

Συνεργείο Αυτοκινήτων

TEC510 Ανάπτυξη Δικτυακών Τόπων (Ε εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Επιστημονικός συνεργάτης Εργαστηρίου: Γιώργος Μηλιώτης

Κεφάλαιο 11: Εισαγωγή στην HTML. Εφαρμογές Πληροφορικής Κεφ. 11 Καραμαούνας Πολύκαρπος

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΕΦΑΡΜΟΓΗΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΥΠΟΒΟΛΗΣ ΙΣΟΖΥΓΙΩΝ ΚΡΕΑΤΟΣ

Μεταβίβαση Δικαιωμάτων Ενιαίας Ενίσχυσης Εγχειρίδιο Εφαρμογής (SUD)

Ηλεκτρονικές Υπηρεσίες

ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΥΠΗΡΕΣΙΑΣ [ΥΠΗΡΕΣΊΑ 4 - ΑΝΆΠΤΥΞΗ

Οδηγίες για τη Χρήση του Google Drive

Εγχειρίδιο Χρήστη - Μαθητή

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

Εγχειρίδιο Χρήσης Φορέα Πιστοποίησης

Αναλυτικά Φύλλα Μισθοδοσίας

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΥΠΟΣΥΣΤΗΜΑΤΟΣ ΑΓΡΟΠΕΡΙΒΑΛΛΟΝΤΙΚΩΝ ΕΝΙΣΧΥΣΕΩΝ. Μέτρο 2.2.1

Εφαρμογή Ηλεκτρονικής Υποβολής Δηλώσεων Ε9. Οδηγίες Χρήσης

Management Classes Create Class Create Class Management Classes List of Classes

Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ

ΑΡΧΕΙΟ ΕΚΘΕΣΕΩΝ ΠΡΑΓΜΑΤΟΓΝΩΜΟΣΥΝΗΣ ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ 8 ΝΟΕΜΒΡΙΟΥ 2014

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

ΗΛΕΚΤΡΟΝΙΚΕΣ ΥΠΗΡΕΣΙΕΣ ΝΗΟΛΟΓΗΣΗΣ ΠΛΟΙΩΝ

Εισαγωγη στην html. Η δομή μιας ιστοσελίδας (αρχείο html) Η βασική δομή ενός αρχείου html είναι η εξής: <html> <head>

Εγχειρίδιο Χρήσης Εφαρμογής Συστήματος Διαχείρισης Κοινών Πόρων

Εκπαιδευτικό Εργαλείο Κανονικοποίησης

ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΥΠΗΡΕΣΙΑΣ [ΥΠΗΡΕΣΊΑ 9 ΣΎΣΤΗΜΑ

Ολοκληρωμένες Δράσεις προβολής δημοσιότητας για το Δήμο Αρχανών Αστερουσίων Εγχειρίδιο Χρήσης - Παρουσίαση

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΑΣΦΑΛΙΣΤΙΚΩΝ ΕΤΑΙΡΕΙΩΝ

Εργαλεία. Επικοινωνίας & Συνεργασίας Πανεπιστήμιο Κύπρου

XAMPP Apache MySQL PHP javascript xampp

Οδηγίες Χρήσης της MySQL

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΟΛΟΚΛΗΡΩΜΕΝΟΥ ΠΛΗΡΟΦΟΡΙΑΚΟΥ ΣΥΣΤΗΜΑΤΟΣ (ΟΠΣ) ΓΙΑ ΤΗΝ ΠΡΟΓΡΑΜΜΑΤΙΚΗ ΠΕΡΙΟΔΟ ΣΕΣ

Vodafone Business Connect

Διαχείριση Αξιόγραφων

ΔΙΩΝΗ Οδηγίες κατάθεσης τεκμηρίων στο Ιδρυματικό Αποθετήριο του Πανεπιστημίου Πειραιώς. ELiDOC Systems & Services

Transcript:

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΤΕΧΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΜΑ: Δημιουργία ιστοσελίδας ανταλλαγής ή πώλησης και αγοράς προϊόντων με τη μέθοδο των ανακοινώσεων και προσωπικών μηνυμάτων των χρηστών ΕΠΙΒΛΕΠΩΝ ΚΑΘΓΗΤΗΣ: Καραδήμος Δημήτριος ΣΥΝ-ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: Μωυσιάδης Λευτέρης ΕΠΙΜΕΛΕΙΑ ΕΚΠΟΝΗΣΗΣ ΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ: Τσιρογιάννη Μαρίνα Καβάλα 2013

ΠΕΡΙΛΗΨΗ Σκοπός της πτυχιακής εργασίας είναι η δημιουργία μιας διαδικτυακής εφαρμογής για την ανταλλαγή, πώληση και αγορά προϊόντων. Σε ένα τέτοιο περιβάλλον, ο κάθε χρήστης θα μπορεί να κάνει εγγραφή και έπειτα όντας συνδεδεμένος με τον λογαριασμό του θα μπορεί να βλέπει όλα τα προϊόντα που έχουν αναρτηθεί από τους άλλους χρήστες και θα έχει την δυνατότητα να αναρτά και ο ίδιος προϊόντα προς πώληση ή ανταλλαγή. Οι αναρτήσεις των προϊόντων θα περιλαμβάνουν φωτογραφία του προϊόντος καθώς και περιγραφή του. Σε κάθε ανάρτηση ο κάθε χρήστης θα μπορεί να δημιουργεί δημοσίευση η οποία θα αφορά το συγκεκριμένο προϊόν και θα απευθύνεται στον χρήστη ο οποίος έχει κάνει την ανάρτηση. Οι δημοσιεύσεις θα μπορούν να είναι ιδιωτικές, δηλαδή να τις βλέπει μόνο ο παραλήπτης, ή δημόσιες, δηλαδή θα είναι ορατές σε όλους. Την επίβλεψη του συστήματος θα την έχει ο διαχειριστής, ο οποίος θα είναι υπεύθυνος για την δημιουργία λογαριασμών χρηστών αλλά και για την παρακολούθηση της εύρυθμης λειτουργίας της εφαρμογής.

ΠΕΡΙΕΧΟΜΕΝΑ Κεφάλαιο 1 ΕΙΣΑΓΩΓΗ... 5 Κεφάλαιο 2 ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΠΡΟΒΛΗΜΑΤΟΣ... 7 Κεφάλαιο 3 ΘΕΩΡΙΑ... 9 3.1 HTML5... 9 3.1.1 Ετικέτες μορφοποίησης... 10 3.1.2 Φόρμες... 11 3.2 Cascading Style Sheets... 12 3.3 PHP5... 15 3.4 PostgreSQL... 16 3.5 BitNami WAPP Stack... 18 Κεφάλαιο 4 ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ... 20 4.1 Σύνδεση στο σύστημα... 20 4.2 Εγγραφή χρήστη... 21 4.3 Διαχείριση χρηστών... 22 4.4 Προβολή προιόντων... 25 4.5 Ανάρτηση νέας αγγελίας... 26 4.6 Αναζήτηση προϊόντος... 27 4.7 Προβολή δημοσιεύσεων... 28 4.8 Δημιουργία νέας δημοσίευσης... 28 Κεφάλαιο 5 ΑΝΑΣΚΟΠΗΣΗ ΤΗΣ ΠΤΥΧΙΑΚΗΣ ΚΑΙ ΜΕΛΛΟΝΤΙΚΕΣ ΒΕΛΤΙΩΣΕΙΣ... 30 Παράρτημα Α Εγχειρίδιο χρήστη... 32 5.1 Σύνδεση/Αποσύνδεση χρήστη... 32 5.2 Δυνατότητες διαχειριστή... 34 5.3 Αγγελίες... 35

5.3.1 Ανάρτηση αγγελίας... 36 5.4 Ανακοινώσεις... 37 5.4.1 Δημιουργία δημοσίευσης... 37 Παράρτημα Β Λεξικό Δεδομένων... 39 Παράρτημα Γ - Απαιτήσεις... 41 Παράρτημα Δ Προδιαγραφές... 46 Παράρτημα Ε Βάση δεδομένων... 49 Πίνακας users... 49 Πίνακας products... 49 Πίνακας messages... 50 Διάγραμμα Οντοτήτων-Συσχετίσεων... 51 ΒΙΒΛΙΟΓΡΑΦΙΑ... 52

Κεφάλαιο 1 ΕΙΣΑΓΩΓΗ Η δομή της πτυχιακής εργασίας είναι η εξής: Στο Κεφάλαιο 2 περιγράφονται οι λόγοι για τους οποίους υπάρχει η ανάγκη υλοποίησης μια διαδικτυακής εφαρμογής για την ανταλλαγή και πώληση προϊόντων. Γίνεται μια ανάλυση των απαιτήσεων που έχει μια τέτοια εφαρμογή αλλά και τα διάφορα θέματα που χρειάζεται να λάβει υποψη του ο προγραμματιστής. Επίσης γίνεται αναφορά σε παρόμοια συστήματα και στα χαρακτηριστικά τους. Στο Κεφάλαιο 3 παρουσιάζονται τα διάφορα εργαλεία και οι τεχνολογίες που χρησιμοποιήθηκαν για να αναπτυχθεί η διαδικτυακή εφαρμογή. Για κάθε ένα από αυτά τα θέματα γίνεται μια εισαγωγή στο θεωρητικό υπόβαθρο κάθε τεχνολογίας και περιγράφονται τα πλεονεκτήματα τους και το γιατί ήταν κατάλληλες για την ανάπτξη της εφαρμογής. Γίνεται μια εισαγωγή στις γλώσσες HTML5, CSS, PHP5 και PostgreSQL. Πιο συγκεκριμένα, αναφέρονται οι διαφορές και τα πλεονεκτήματα της HTML5 σε σχέση με τις παλαιότερες εκδόσεις. Αντίστοιχα, συκγρίνεται η PostgreSQL με άλλα είδη της γλώσσας SQL. Τέλος, παρουσιάζεται το λογισμικό BitNami WAPP Stack που χρησιμοποιήθηκε για να δημιουργηθεί η ιστοσελίδα. Στο Κεφάλαιο 4 αναλύονται οι λεπτομέρειες της υλοποίησης της εφαρμογής, και οι αλγόριθμοι που χρησιμοποιήθηκαν. Εξηγείται με λεπτομέρεια το πως υλοποιήθηκαν οι διάφορες λειτουργίες της εφαρμογής, για όλα τα είδη των χρηστών. Επίσης, περιγράφεται το πως αποθηκεύονται τα δεδομένα, πως ανακτώνται από τη βάση δεδομένων και το πως αλληλεπιδρούν οι χρήστες μεταξύ τους και με την βάση δεδομένων. Στο Κεφάλαιο 5 γίνεται μια συνολική επισκόπηση της πτυχιακής εργασίας και αναφέρονται οι στόχοι οι οποίοι επετεύχθησαν. Γίνεται αναφορά στα πλεονεκτήματα του συστήματος που αναπτύχθηκε, αλλά και συζητούνται τα προβλήματα τα οποία παρουσιάστηκαν κατά την ανάπτυξη και πως αυτά επιλύθηκαν. Τέλος, αναφέρονται κάποια θέματα τα οποία θα μπορούσαν να εξεταστούν σε περαιτέρω ανάπτυξη του λογισμικού, και κάποιες δυνατότητες οι οποίες θα μπορούσαν να προστεθούν προκειμένου να βελτιωθεί η εφαρμογή.

Στα παραρτήματα δίνονται οι λεπτομέρειες της σχεδίασης και της τελικής υλοποίησης του λογισμικού. Στο Παράρτημα Α βρίσκεται το εγχειρίδιο χρήστη, στο Παράρτημα Β βρίσκεται το λεξικό δεδομένων και στο Παράρτημα Γ περιγράφονται οι απαιτήσεις της εφαρμογής. Στο Παράρτημα Δ παρουσιάζονται οι προδιαγραφές σε φόρμες και στο Παράρτημα Ε υπάρχει η περιγραφή της βάσης δεδομένων, καθώς και το διάγραμμα οντοτήτων συσχετίσεων. Τέλος στο Παράρτημα ΣΤ βρίσκεται ο κώδικας της εφαρμογής.

Κεφάλαιο 2 ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΠΡΟΒΛΗΜΑΤΟΣ Ο στόχος της πτυχιακής εργασίας είναι η δημιουργία μιας εφαρμογής μέσω της οποίας χρήστες θα μπορούν να αναρτούν αγγελίες με σκοπό να ανταλάσσουν ή να πωλούν προϊόντα. Τα πιο συνηθισμένα μέρη που γίνεται αυτό το διαδίκτυο είναι τα διάφορα φόρουμ όπου οι χρήστες εγγράφονται, παρακολουθούν τις αναρτήσεις των άλλων μελών του φόρουμ και μπορούν να εκδηλώνουν το ενδιαφέρον τους για κάποιο προϊόν είτε με την αποστολή προσωπικού μηνύματος στον χρήστη ο οποίος άναρτησε την αγγελία, είτε με δημοσίευση στο θέμα, την οποία μπορούν και οι άλλοι χρήστες να δουν. Το πρόβλημα με αυτήν την προσέγγιση είναι ότι τα φόρουμ είναι ιστότοποι συζήτησης και έτσι δεν περιορίζονται μόνο στον σκοπό της αγοραπωλησίας προϊόντων. Σε κάποιες περιπτώσεις η δομή των φόρουμ δεν είναι η κατάλληλη για αυτήν την εργασία και ο εκάστοτε διαχειριστής πρέπει να σχεδιάσει σωστά την δομή του φόρουμ. Για παράδειγμα, ο διαχειριστής πρέπει να αποφασίσει αν κάθε προϊόν θα έχει δικό του θέμα, αν τα διαφορετικά είδη προϊόντων να χωρίζονται σε διαφορετικές θεματικές ενότητες κλπ. Επιπλέον, επειδή οι αναρτήσεις θα γίνονται από τους χρήστες, δεν είναι βέβαιο ότι η ανάρτηση του προϊόντος θα γίνει στο σωστό σημείο, ή αν τα σχόλια των μελών για κάθε προϊόν θα είναι σχετικά με αυτό. Σε άλλες περιπτώσεις, υπάρχουν χρήστες που χρησιμοποιούν τα ιστολόγια (blogs) για ανάρτηση αγγελιών. Το πλεονέκτημα των blogs είναι η ευκολία χρήσης, και η πιο ευπαρουσίαστη μορφή των αγγελιών, καθώς στην συντρηπτική πλειοψηφία ο χρήστης που αναρτά την αγγελία έχει την δυνατότητα να μορφοποιεί το κείμενο του, και να προσθέτει με εύκολο τρόπο κάποια φωτογραφία του προϊόντος. Σε αυτήν την περίπτωση όμως, είναι πιο δύσκολο να ελεγχθούν οι χρήστες που έχουν πρόσβαση στο ιστολόγιο όπως και οι δημοσιεύσεις τους. Επίσης, σε αυτήν την περίπτωση είναι δύσκολο να επιτευχθεί εμπιστοσύνη ανάμεσα στους χρήστες για την ολοκλήρωση των συναλλαγών. Για τους σκοπούς της παρούσας πτυχιακής εργασίας, ακολουθήθηκε μια πιο στοχευμένη προσέγγιση σε σχέση με τις παραπάνω περιπτώσεις, έτσι

ώστε να μην υπάρχουν τα μειονεκτήματα που παρουσιάζουν οι παραπάνω περιπτώσεις. Καταρχήν, είναι ξεκάθαρο ότι η διαδικτυακή εφαρμογή που απαιτούνταν θα έπρεπε να είναι εξειδικευμένη και να είναι αποκλειστικά μια πλατφόρμα όπου οι χρήστες παρουσιάζουν τα προϊόντα τους και προβαίνουν σε αγοραπωλησίες, σε αντίθεση με τις γενικής χρήσης πλατφόρμες των φόρμουμ και των ιστολογίων. Επίσης, εφόσον ο στόχος είναι η πραγματοποίηση συναλλαγών μεταξύ χρηστών, τότε ο έλεγχος για το ποιος χρήστης μπορεί να εισέλθει στο σύστημα πρέπει να είναι αυστηρός, και να γίνεται από τον διαχειριστή πρίν επιτραπεί η είσοδος στον κάθε χρήστη που πραγματοποιεί αίτηση για εγγραφή. Με αυτόν τον τρόπο θα αποφεύγονται αναξιόπιστοι χρήστες, ή λογαριασμοί οι οποίοι δημιουργούνται αυτόματα από bots. Επίσης, είναι πιο εύκολο να περιορίζεται με αυτόν τον τρόπο το άσχετο ή ακατάλληλο περιεχόμενο από χρήστες οι οποίοι δεν ενδιαφέρονται για την πραγματοποίηση συναλλαγών. Τέλος, η δημιουργία νέας πλατφόρμας επιτρέπει στον προγραμματιστή να διαμορφώσει τις διάφορες σελίδες και δυνατότητες ανάλογα με τις ανάγκες της εφαρμογής και των χρηστών του. Για παράδειγμα, παρουσιάζοντας όλα τα αναρτημένα προϊόντα σε μια σελίδα συγκεντρωτικά, και τα σχόλια που αφορούν στα προϊόντα σε διαφορετική σελίδα, επιτυγχάνεται η μη αλλοίωση της παρουσίασης των προϊόντων αφού δεν θα χρειάζεται ο χρήστης να αναζητά το προϊόν ανάμεσα στα διάφορα σχόλια. Από την άλλη πλευρά, οι δημοσιεύσεις που αφορούν στο κάθε προϊόν, θα προβάλλονται συγκεντρωμένα σε διαφορετικό σημείο στην ιστοσελίδα, με την ένδειξη σε ποιο προϊόν αναφέρονται και θα χωρίζονται σε δύο κατηγορίες, σε ιδιωτικά και δημόσια μηνύματα. Εκεί, θα μπορεί ο χρήστης να αναζητά όλες τις δημοσιεύσεις σχετικές με το προϊόν της επιλογής του, αλλά και να βλέπει τα προσωπικά μηνύματα που έχουν σταλεί σε αυτόν σχετικά με τις δικές του αγγελίες.

Κεφάλαιο 3 ΘΕΩΡΙΑ Σε αυτό το κεφάλαιο παρουσιάζεται το θεωρητικό υπόβαθρο που χρειάστηκε για την υλοποίηση της εφαρμογής και γινεται μια εισαγωγή στις γλώσσες προγραμματισμού και στα εργαλεία που χρησιμοποιήθηκαν. 3.1 HTML5 Η γλώσσα HTML (Hypertext Markup Language) είναι η βάση όλων των ιστοσελίδων. Αυτή χρησιμοποιείται για την διάρθρωση και την παρουσίαση του περιεχομένου. Οι browsers είναι προγράμματα τα οποία έχουν την δυνατότητα να διαβάζουν αυτήν την γλώσσα και να την μεταγράζουν με τέτοιο τρόπο έτσι ώστε να προβάλουν στον χρήστη το περιεχόμενο της ιστοσελίδας σύμφωνα με την δομή και την μορφοποίηση που ορίζει ο κώδικας HTML. Το περιεχόμενο μιας ιστοσελίδας μπορεί να είναι κείμενο, φωτογραφίες, ήχος κλπ. Με την εισαγωγή της έκδοσης HTML5 οι δυνατότητες παρουσίασης περιεχομένου αυξήθηκαν, ειδικότερα στην διαχείριση πολυμέσων. H HTML5 είναι το καινούριο πρότυπο HTML και αντικαθιστά τις προηγούμενες εκδόσεις. Παρόλο που προς το παρόν δεν έχει καθιερωθεί, ήδη οι πιο δημοφιλείς browsers ενσωματώνουν τις καινούριες δυνατότητες που παρέχει η HTML5. Δημιουργήθηκε με σκοπό: Να μειωθεί η εξάρτηση από εξωτερικές τεχνολογίες όπως το Adobe Flash Τα χαρακτηριστικά της να είναι βασισμένα στις τεχνολογίες HTML, CSS, DOM και JavaScript Να είναι η HTML5 ανεξάρτητη από την συσκευή στην οποία εκτελείται Καλύτερο χειρισμό λαθών Να χρησιμοποιείται περισσότερη σήμανση παρά scripts. Στη συνέχεια θα γίνει μια εισαγωγή στην γλώσσα HTML και θα γίνει αναφορά στα καινούρια στοιχεία που παρουσιάστηκαν με την HTML5.

3.1.1 Ετικέτες μορφοποίησης Όπως όλες οι γλώσσες σήμανσης, έτσι και η HTML αποτελείται από ετικέτες οι οποίες ουσιαστικά είναι η περιγραφή του περιεχομένου της ιστοσελίδας, αφού ορίζουν την δομή του εγγράφου, εισάγουν στοιχεία και ορίζουν την μορφοποίηση τους. Το ποιο βασικό έγγραφο HTML5 είναι το παρακάτω: <!DOCTYPE html> <html> <head> <title>τίτλος σελίδας</title> </head> <body> Περιεχόμενο σελίδας </body> </html> Έτσι ορίζεται η βασική δομή του εγγράφου. Στην ΗΤΜL5 ορίζονται επιπλέον ετικέτες για τον πιο λεπτομερή έλεγχο της δομής του περιεχομένου όπως η ετικέτες <article> και <section> οι οποίες ορίζουν την αρχή και το τέλος ενός άρθρου και μιας ενότητας αντίστοιχα. Επίσης ορίζονται οι ετικέτες <header> και <footer> για την δημιουργία κεφαλίδων και υποσέλιδων για κάθε σελίδα. Για να χωριστεί το κείμενο σε παραγράφους χρησιμοποιείται η ετικέτα <p>. Για την μορφοποίηση του κειμένου μιας ιστοσελίδας, η HTML προσφέρει τις ετικέτες <i> και <b> για την δημιουργία έντονου και πλαγιαστού κειμένου. Επίσης υπάρχει η προεπιλεγμένη μορφοποίηση επικεφαλίδων με τις ετικέτες <h1>, <h2> κ.ο.κ.. Η εισαγωγή πολυμέσων γίνεται από τις ετικέτες <img> για εικόνες, <audio> για τον ήχο και <video> για αρχεία βίντεο.

3.1.2 Φόρμες Οι φόρμες χρησιμοποιούνται για να μεταφέρονται πληροφορίες από τον χρήστη σε έναν server μέσω της ιστοσελίδας. Η πληροφορίες αυτές εισάγονται από τον χρήστη με διάφορους τρόπους όπως κουμπιά επιλογής, πλαίσια κειμένου, κουμπιά υποβολής κλπ. Για να δημιουργηθεί μία φόρμα στην HTML: <form action="file.php" method="post"> </form> Στοιχεία ελέγχου Σε αυτήν την ετικέτα με την ιδιότητα action προσδιορίζεται α) ποιο αρχείο θα επεξεργαστεί τα δεδομένα που θα εισαχθούν στην φόρμα και με ποιον τρόπο θα αποσταλλούν τα δεδομένα αυτά στον server. Το αρχείο που θα κάνει την επεξεργασία θα είναι ένα script σε κάποια κατάλληλη γλώσσα προγραμματισμού όπως είναι η PHP (και αυτή χρησιμοποιήθηκε για τις ανάγκες της εργασίας), η Perl κ.α.. Μερικές από τις επιλογές στοιχείων ελέγχου που έχει ο προγραμματιστής είναι: Πλαίσιο εισαγωγής κειμένου Πλαίσια επιλογής Πλήκτρα επιλογής Πλαίσιο επιλογής με λίστα Πλήκτρο αποστολής

Στην HTML5 έχουν προστεθεί επιπλέον τύποι στοιχείων εισαγωγής δεδομένων όπως τα datalist (πλαίσιο κειμένου με επιλογές), τα keygen (δημιουργία γεννήτριας key-pair) και τα output (ορίζει το αποτέλεσμα υπολογισμού). Επίσης, υπάρχουν νέοι τύποι για τα δεδομένα εισόδου από στοιχεία εισαγωγής κειμένου όπως ημερομηνία, email, αριθμός, URL, έτσι ώστε να γίνεται πιο εύκολα η επεξεργασία των δεδομένων. Για να δημιουργηθεί ένα στοιχείο ελέγχου στο έγγραφο HTML και πιο συγκεκριμένα μέσα στις ετικέτες <form> χρησιμοποιείται η σύνταξη: <input type="τύπος στοιχείου" name="όνομα" value="τιμή"> Ο τύπος (type) του στοιχείου ελέγχου μπορεί να είναι ένας από τους προαναφερόμενους. Τα στοιχεία ελέγχου συνοδεύονται από κάποια τιμή (value) και είναι αυτή που θα σταλεί στον server όταν πατηθεί το κουμπί υποβολής. Το αρχείο επεξεργασίας θα αναγνωρίσει αυτήν την τιμή από το όνομα (name) του αντίστοιχου στοιχείου ελέγχου. 3.2 Cascading Style Sheets H γλώσσα CSS ελέγχει την εμφάνιση εγγράφων που έχουν γραφτεί σε κάποια γλώσσα σήμανσης, όπως είναι η HTML. Στην ουσία, τα στυλ CSS εμπλουτίζουν τις ήδη υπάρχουσες ετικέτες HTML και προσφέρουν περισσότερες δυνατότητες μορφοποίησης κειμένου και παρουσίασης των διάφορων στοιχείων που υπάρχουν σε μια ιστοσελίδα. Για να ενσωματωθεί ένα αρχείο CSS σε μια ιστοσελίδα και συνεπώς να γίνουν διαθέσιμα τα στυλ που περιέχονται σε αυτό, πρέπει να γίνει η ακόλουθη δήλωση μέσα στην κεφαλίδα <HEAD> του αρχείου HTML. <link rel="stylesheet" href="style.css" type="text/css"> Όπου style.css είναι το όνομα του CSS αρχείου που περιέχει τους ορισμούς μορφοποίησης. Η ίδια δήλωση πρέπει να γίνει στην κεφαλίδα όλων των αρχείων HTML του ιστότοπου, εκτός εάν σε κάποιες από αυτές

χρησιμοποιηθούν διαφορετικά στυλ. Σε αυτήν την περίπτωση, το όνομα του αρχείου θα αλλάξει, αφού κατά σύμβαση διαφορετικά σύνολα στυλ αποθηκεύονται σε ξεχωριστά CSS αρχεία. Το πλεονέκτημα των CSS εκτός από τις πρόσθετες δυνατότητες μορφοποίησης που δίνουν στην HTML, είναι το γεγονός ότι ο σχεδιαστής της ιστοσελίδας δεν χρειάζεται να επεμβαίνει σε όλα τα αρχεία HTML όταν χρειαστεί να τροποποιηθεί η εμφάνιση της ιστοσελίδας, παρά μόνο να επεξεργαστεί τα αρχεία CSS. Τότε οι αλλαγές θα εφαρμοστούν αυτόματα σε όλες τις επιμέρους σελίδες του ιστότοπου. Μέσα σε ένα αρχείο CSS περιέχονται οι δηλώσεις των στυλ που θα χρησιμοποιηθούν. Αυτές οι δηλώσεις μπορεί να είναι είτε τροποποιήσεις των υπάρχοντων στυλ που δίνονται από την γλώσσα HTML είτε καινούρια στυλ. Η σύνταξη ενός στυλ CSS γίνεται με τον παρακάτω τρόπο (όπως ορίζεται στην ιστοσελίδα http://www.w3schools.com/): Το στοιχείο Selector είναι συνήθως η ετικέτα HTML που είναι προς μορφοποίηση. Οι υπόλοιπες δηλώσεις είναι οι ιδιότητες που θα έχει η ετικέτα όπως για παράδειγμα το μέγεθος, το χρώμα, το στυλ γραμμής, η γραμματοσειρά κλπ και πάντα συνοδεύεται από κάποια τιμή. Οι ιδιότητες που μπορεί να έχει ένα στυλ CSS είναι προκαθορισμένες και ανήκουν στο πρότυπο του CSS, ανάλογα φυσικά με την έκδοση (η τρέχουσα έκδοση είναι η CSS3). Όπως αναφέρθηκε προηγουμένως, εκτός από την τροποποίηση των στυλ της HTML, με τα στυλ CSS υπάρχει η δυνατότητα δημιουργίας νέων στυλ μέσω της εφαρμογής των επιλογέων id και class. Ο επιλογέας id χρησιμοποιείται για να ορίσει ένα στυλ το οποίο θα εφαρμοστεί σε ένα μοναδικό στοιχείο. Για παράδειγμα, όταν ορίζεται ένα στυλ ως

#para1 { text-align:center; color:red; } και εφαρμόζεται στον κώδικα HTML με την εντολή <p id="para1">hello World!</p> Τότε το στυλ εφαρμόζεται μόνο στην παράγραφο <p> η οποία περιέχει το συγκεκριμένο id. Από την άλλη μεριά, ο επιλογέας class χρησιμοποιείται για να ορίσει ένα στυλ για μια ομάδα στοιχείων. Για παράδειγμα, τη τάξη (class).center όπως ορίζεται παρακάτω.center {text-align:center;} μπορεί να χρησιμοποιηθεί και για την μορφοποίηση επικεφαλίδων ή παραγράφων ή για οποιοδήποτε άλλο στοιχείο στον κώδικα HTML με τον παρακάτω τρόπο: <h1 class="center">επικεφαλίδα με στοίχιση στο κέντρο</h1> <p class="center">παράγραφος με στοίχιση στο κέντρο.</p> Παρόλο που τα στυλ CSS αναγνωρίζονται και υποστηρίζονται από όλους τους browsers, υπάρχουν σε αρκετές περιπτώσεις διαφορές μεταξύ τους στον τρόπο που τα εμφανίζουν. Για αυτόν τον λόγο, υπάρχει η ανάγκη να οριστούν τα CSS με τέτοιο τρόπο έτσι ώστε να εξασφαλίζεται η ίδια παρουσίαση των πληροφοριών ανεξαρτήτου browser, λαμβάνοντας υπόψη τις ιδιαιτερότητες του καθενός. Σαν παράδειγμα δίνεται ο ορισμός του φόντου της διαδικτυακής εφαρμογής για διαφορετικούς browsers.

background: -webkit-gradient(linear, left top, left bottom, colorstop(0%,#64c8ef), color-stop(100%,#00a2e2)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #64c8ef 0%,#00a2e2 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, #64c8ef 0%,#00a2e2 100%); /* Opera 11.10+ */ background: -ms-linear-gradient(top, #64c8ef 0%,#00a2e2 100%); /* IE10+ */ 3.3 PHP5 Η PHP (Hypertext Preprocessor) είναι μία ευρέως χρησιμοποιούμενη, ανοιχτού κώδικα και γενικού σκοπού γλώσσα η οποία είναι ειδικά σχεδιασμένη για την ανάπτυξη εφαρμογών διαδικτύου. Όπως αναφέρθηκε σε προηγούμενη ενότητα, κατά την δήλωση μιας φόρμας HTML δηλώνεται και το αρχείο script το οποίο θα επεξεργαστεί τα δεδομένα της φόρμας όταν πατηθεί το κουμπί υποβολής. Αυτήν την εργασία την αναλαμβάνουν τα αρχεία PHP και η επεξεργασία των δεδομένων γίνεται στον server (σε αντίθεση με τα JavaScripts τα οποία εκτελούνται στον client). Μετά την επεξεργασία, τα δεδομένα διαμορφώνονται με τέτοιο τρόπο έτσι ώστε όταν αποσταλλούν πίσω στον client, να μπορούν να αναγνωστούν από τον browser. Άρα στην ουσία τα αρχεία PHP μετά την επεξεργασία των δεδομένων, δημιουργεί των κώδικα HTML τον οποίο θα πρέπει να παρουσιάσει με τη σειρά του ο browser, ως αποτέλεσμα της επεξεργασίας. Τα scripts που είναι γραμμένα στην γλώσσα PHP είτε ενσωματώνονται στον κώδικα HTML, είτε τον παράγουν εξ ολοκλήρου. Για παράδειγμα: <HTML> <?php <HEAD> echo <HTML> ; <BODY> echo <HEAD> ; <?php echo <BODY> ; echo hello world ; echo hello world ;?> echo </BODY> ; </BODY> echo </HEAD> ; </HEAD> echo </HTML> ; </HTML>?>

Και με τους δύο παραπάνω τρόπους δημιουργείται μια βασική ιστοσελίδα που εμφανίζει το μήνυμα hello world. Με την ίδια λογική, οποιαδήποτε ετικέτα HTML μπορεί να παραχθεί με εντολές echo της PHP, και στην έξοδο ο browser να εμφανίσει το επιθυμητό κείμενο ή στοιχείο ελέγχου. Στην περίπτωση που το αρχείο PHP επεξεργάζεται τα δεδομένα που αποστέλονται από μία φόρμα, τότε ακολουθείται η εξής διαδικασία: Το script ανακτά τα δεδομένα τα οποία αποθηκεύονται στον server με όνομα της μορφής $_POST[ όνομα ], όπου όνομα είναι η ιδιότητα name που δίνεται σε κάθε στοιχείο ελέγχου κατά τη δημιουργία της φόρμας. Με αυτόν τον τρόπο γίνεται η ανάκτηση των τιμών που έχουν πάρει τα διάφορα στοιχεία ελέγχου (πλαίσια εισαγωγής κειμένου, κουμπιά επιλογής κλπ) και αυτές οι τιμές είτε αποθηκεύονται σε μεταβλητές, είτε χρησιμοποιούνται απευθείας σε υπολογισμούς ή άλλου είδους επεξεργασία. Συνήθως ο κώδικας που δημιουργεί την φόρμα και ο κώδικας που επεξεργάζεται τα δεδομένα της βρίσκονται στο ίδιο αρχείο. Επίσης, μέρος της επεξεργασίας δεδομένων που γίνεται σε ένα PHP script είναι πολύ συχνά και η αλληλεπίδραση με κάποια βάση δεδομένων. Στην επόμενη ενότητα θα αναφερθούν οι συναρτήσεις που χρησιμοποιούνται από την PHP για ανάκτηση και καταχώρηση δεδομένων από προς μια βάση δεδομένων PostgreSQL. 3.4 PostgreSQL Η PostgreSQL είναι μια σχεσιακή βάση δεδομένων ανοιχτού κώδικα, συμβατή με την γλώσσα SQL. Έχει διαφορές στην αρχιτεκτονική της από άλλες σχεσιακές βάσεις δεδομένων όπως η MySQL, όμως η συμβατότητά της με την SQL, η ικανότητά της να τρέχει σε πολλά λειτουργικά συστήματα, καθώς και η ταχύτητα της, την έχουν κάνει αρκετά δημοφιλή και χρησιμοποιείται πλέον από αρκετές εταιρίες και οργανισμούς όπως η Sun Microsystems, η Red Hat, η Greenpeace κ.α.. Για τις ανάγκες της παρούσας πτυχιακής εργασίας χρησιμοποιήθηκαν εντολές SQL στην βάση PostgreSQL μέσω αντίστοιχων συναρτήσεων της PHP. Σε αυτήν την ενότητα θα εξεταστούν οι συναρτήσεις PHP που δίνουν

πρόσβαση στην βάση δεδομένων, και οι βασικές εντολές SQL που χρησιμοποιήθηκαν σε αυτές τις συναρτήσεις. Οι βασικές συναρτήσεις που χρησιμοποιήθηκαν είναι η pg_connect(), pg_query() και η pg_fetch_array(). Πιο συγκεκριμένα, η pg_connect() ορίζεται ως: resource pg_connect ( string $connection_string [, int $connect_type ] ) Αυτή η συνάρτηση χρησιμοποιείται για να γίνει η σύνδεση με την βάση δεδομένων, επιτρέποντας έτσι την εκτέλεση ερωτημάτων και την συλλογή αποτελεσμάτων. Για να γίνει η σύνδεση πρέπει να δωθούν ως ορίσματα το όνομα της βάσης και τα συνθηματικά που έχουν οριστεί κατά την εγκατάσταση της βάσης δεδομένων. Επιστρέφει ένα αντικείμενο σύνδεσης όταν η σύνδεση είναι επιτυχής, ενώ αν η σύνδεση δεν είναι επιτυχής, επιστρέφει FALSE. Από την άλλη, η pg_query() ορίζεται ως: resource pg_query ([ resource $connection ], string $query ) και εκτελεί ένα ερώτημα στην βάση δεδομένων. Ως πρώτο όρισμα δέχεται προαιρετικά το αντικείμενο σύνδεσης το οποίο επιστρέφεται από την pg_connect(). Στην περίπτωση της εφαρμογής που αναπτύχθηκε, η σύνδεση είναι μία και γίνεται από την αρχή της φόρτωσης της σελίδας, συνεπώς χρησιμοποιείται μόνο το δεύτερο όρισμα το οποίο είναι το ερώτημα SQL με τις εντολές που θα εξεταστούν στην συνέχεια. Η pg_query() επιστρέφει ένα αντικείμενο αποτελεσμάτων, οι πληροφορίες του οποίου γίνονται προσπελάσιμες με την εκτέλεση της pg_fetch_array(). Η pg_fetch_array() ορίζεται ως: array pg_fetch_array ( resource $result [, int $row [, int $result_type = PGSQL_BOTH ]] ) Αυτή η συνάρτηση λαμβάνει ως όρισμα το αποτέλεσμα της pg_query() και επιστρέφει ένα πίνακα με αποτελέσματα. Οι τιμές από αυτά

τα αποτελέσματα μπορούν να ανακτηθούν ορίζοντας για κάθε γραμμή του πίνακα το όνομα της στήλης που εξετάζεται. Οι εντολές SQL που χρησιμοποιήθηκαν μαζί με τις περιγραφές τους παρουσιάζονται στον επόμενο πίνακα: ΕΝΤΟΛΗ SQL INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...) UPDATE table_name SET column1=value, column2=value2,... WHERE some_column=some_value SELECT column_name(s) FROM table_name WHERΕ some_column=some_value DELETE FROM table_name WHERE some_column=some_value ΠΕΡΙΓΡΑΦΗ Εισαγωγή νέας εγγραφής σε πίνακα Αλλαγή των τιμών στηλών από κάποιον πίνακα για τις εγγραφές που ορίζονται σύμφωνα με κριτήρια Επιλογή τιμών στηλών από έναν πίνακα για τις εγγραφές που ορίζονται από κάποια κριτήρια Διαγραφή συγκεκριμένων εγγραφών από έναν πίνακα 3.5 BitNami WAPP Stack Το λογισμικό BitNami WAPP Stack είναι ένα πλήρες πακέτο ανάπτυξης διαδικτυακών εφαρμογών καθώς περιέχει ένα server Apache έτσι ώστε η εφαρμογή να μπορεί να τρέχει και τοπικά, την γλώσσα PHP, την βάση δεδομένων PostgreSQL καθώς και εργαλεία που βοηθάνε στην διαχείριση των εγκατεστημένων βάσεων δεδομένων. Για παράδειγμα με την εγκατάσταση του WAPP Stack, ο χρήστης μπορεί να εκτελέσει το εργαλείο pgadminiii και να δει σε γραφικό περιβάλλον τις βάσεις δεδομένων που υπάρχουν στον server. Με την προσθήκη των κατάλληλων συνθηματικών, είναι δυνατή η σύνδεση στον server.

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

Κεφάλαιο 4 ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ Σε αυτό το κεφάλαιο θα εξηγηθεί η υλοποίηση των λειτουργιών της εφαρμογής, χρησιμοποιώντας τα εργαλεία που αναφέρθηκαν στο προηγούμενο κεφάλαιο. 4.1 Σύνδεση στο σύστημα Η πρώτη ενέργεια που πρέπει να γίνει για να ενεργοποιηθούν οι διάφορες λειτουργίες της εφαρμογής, είναι η είσοδος κάποιου χρήστη στο σύστημα. Σε κάθε χρήστη κατά την εγγραφή, έχει δοθεί ένα όνομα χρήστη και ένας κωδικός και εισάγοντας στα κατάλληλα πλαίσια αυτές τις πληροφορίες, ο χρήστης πραγματοποιεί είσοδο στο σύστημα. Τα συνθηματικά κάθε χρήστη είναι αποθηκευμένα στον πίνακα users της βάσης δεδομένων. Αυτός ο πίνακας περιέχει όλες τις πληροφορίες κάθε χρήστη, όπως τα στοιχεία επικοινωνίας, αλλά και τα συνθηματικά. Κατά την είσοδο, ο χρήστης πληκτρολογεί τα συνθηματικά του, και με το πάτημα του κουμπιού υποβολής, τα συνθηματικά που έχουν εισαχθεί συγκρίνονται με τα συνθηματικά που είναι αποθηκευμένα στη βάση. Αν το ζεύγος όνομα χρήστη/κωδικός ταυτιστεί με κάποιο ζεύγος στον πίνακα users, τότε η είσοδος του χρήστη πραγματοποιείται επιτυχώς. Για να γίνει αυτή η σύγκριση, πρώτα ανακτώνται τα συνθηματικά που έχουν αποσταλεί στον server με την μέθοδο POST, και έπειτα εκτελείται ένα ερώτημα SQL. Το ερώτημα είναι: SELECT * FROM users WHERE username='$username' AND password='$password' Όπου $username και $password είναι αντίστοιχα το όνομα χρήστη και ο κωδικός του χρήστη που έχουν εισαχθεί. Όταν βρεθεί χρήστης με αυτά τα συνθηματικά, τότε γίνεται έναρξη μιας συνεδρίας (session) και αποθηκεύονται κάποιες ποσότητες σε καθολικές μεταβλητές αυτής της συνεδρίας. Οι ποσότητες αυτές είναι:

Ένδειξη ότι ο χρήστης είναι συνδεδεμένος (μεταβλητή $_SESSION[logged_in] με τιμή authenticated αν υπάρχει συνδεδεμένος χρήστης) Το όνομα χρήστη που συνδέθηκε (μεταβλητή $_SESSION[username] με τιμή το username ) Ένδειξη ένδειξη του τύπου του χρήστη (μεταβλητή $_SESSION[usertype] με τιμές admin ή normal_user ) Έπειτα από την αποθήκευση όλων αυτών των μεταβλητών, πραγματοποιείται η είσοδος του χρήστη στο σύστημα, και εμφανίζονται οι σελίδες και το μενού, με τις επιλογές που πρέπει για κάθε είδος χρήστη. Σε περίπτωση που το ερώτημα SQL δεν επιστρέψει αποτελέσματα (δηλαδή δεν βρεθεί καμία εγγραφή στον πίνακα με αυτά τα συνθηματικά), τότε προβάλεται στην οθόνη ένα μήνυμα λάθους, και επανεμφανίζονται τα πεδία για να εισάγει ξανά ο χρήστης το όνομα χρήστη και τον κωδικό. Πρέπει να σημειωθεί ότι τα πεδία που πρέπει να συμπληρώσει ο χρήστης για την είσοδο του στο σύστημα έχουν οριστεί στον κώδικα HTML ως required, που σημαίνει ότι το σύστημα δεν επιτρέπει στον χρήστη να προχωρήσει με την υποβολή αν δεν έχουν συμπληρωθεί και τα δύο αυτά πεδία. Για την αποσύνδεση ενός χρήστη ακολουθείται η αντίστροφη διαδικασία, δηλαδή πρώτα διαγράφονται οι καθολικές μεταβλητές της συνδρίας, έπειτα διαγράφεται η ίδια η συνεδρία, και τέλος φορτώνεται και προβάλεται η σελίδα εισόδου στο σύστημα. 4.2 Εγγραφή χρήστη Για την εγγραφή χρήστη στο σύστημα χρησιμοποιείται μια φόρμα με πεδία τα οποία ο χρήστης καλείται να συμπληρώσει. Τα πεδία αφορούν στις πληροφορίες του χρήστη (όνομα, επώνυμο, e-mail, διεύθυνση, τηλέφωνο, πόλη και χώρα) και τα συνθηματικά που θα χρησιμοποιεί για να πραγματοποιεί είσοδο στο σύστημα (όνομα χρήστη και κωδικός). Τα πεδία

δεν είναι όλα υποχρεωτικά όμως έχουν οριστεί ως required το ονοματεπώνυμο και το email καθώς και τα συνθηματικά. Όταν ο χρήστης πατήσει το κουμπί υποβολής, τότε τα δεδομένα από όλα τα πεδία στέλνονται με την μέθοδο POST στον server από όπου ανακτώνται από το ίδιο αρχείο και αποθηκεύονται σε μεταβλητές. Η διαδικασία εγγραφής συνεχίζεται μόνο εάν δεν υπάρχει χρήστης με το ίδιο όνομα χρήστη. Για αυτό τον λόγο γίνεται έλεγχος μέσω ενός ερωτήματος: SELECT * FROM users WHERE username='$username' Με αυτό το ερώτημα γίνεται αναζήτηση στον πίνακα users για ονόματα χρήστη ίδια με το όνομα χρήστη που μόλις πληκτρολογήθηκε. Σε περίπτωση που δεν υπάρχει χρήστης με ίδιο όνομα, τότε προχωράει η εγγραφή με το δημιουργηθεί μια νέα εγγραφή στον πίνακα users και να αποθηκευτούν όλα τα πεδία. Αυτό γίνεται με το ερώτημα: INSERT INTO users (name, surname, address, email, telephone, city, country, username, password) VALUES ('$name', '$surname', '$address', '$email', '$telephone', '$city', '$country', '$username', '$password') 4.3 Διαχείριση χρηστών Στην σελίδα διαχείρισης χρηστών, εμφανίζεται ένας πίνακας με όλους τους χρήστες (γραμμές) και τα στοιχεία τους (στήλες). Για να ανακτηθούν οι πληροφορίες όλων των χρηστών με αύξουσα σειρά κατά επώνυμο, χρησιμοποιείται το ερώτημα: SELECT * FROM users ORDER BY surname Με βάση τα στοιχεία που επιστρέφονται από αυτό το ερώτημα δημιουργείται ο πίνακας χρηστών. Για κάθε χρήστη, κάθε πεδίο (όνομα, τηλέφωνο, πόλη κ.ο.κ.) προβάλεται μέσα σε πεδίο εισαγωγής κειμένου (textbox), έτσι ώστε ο διαχειριστής να μπορεί να το επεξεργαστεί. Έτσι, με τον

τρόπο που δημιουργείται το πεδίο του ονόματος που φαίνεται παρακάτω, δημιουργούνται και τα υπόλοιπα με αντίστοιχες εντολές: echo '<td><input type="text" name="nam_'. $row['user_id'].'" value="'. $row['name']. '" size="10"></td>'; Εδώ φαίνεται ότι ενώ δημιουργείται κανονικά ένα πεδίο εισαγωγής κειμένου, αυτό παίρνει ως τιμή το όνομα του χρήστη όπως αυτό ανακτήθηκε από το ερώτημα, και επίσης παίρνει ένα μοναδικό όνομα που δημιουργείται συνενώνοντας το πρόθεμα nam_ και το μοναδικό κλειδί που αντιστοιχεί σε κάθε χρήστη. Αντοίστοιχα προθέματα ορίζονται και για τα υπόλοιπα πεδία, όμως η τιμή id παραμένει σταθερή για τον ίδιο χρήστη. Με αυτόν τον τρόπο, μπορεί να αναγνωριστεί και να προσπελαστεί η τιμή οποιοδήποτε πεδίου στον πίνακα, όπως θα περιγραφεί στη συνέχεια. Επίσης, δίπλα στα πεδία κάθε εγγραφής υπάρχει και ένα εικονίδιο το οποίο χρησιμοποιείται για την διαγραφή κάθε χρήστη. Αυτό το εικονίδιο είναι στην ουσία ένας σύνδεσμος και δημιουργείται ως εξής: <a href="users.php?action=del_user&user_id='. $row['user_id']. '"><img src="delete.png" alt="διαγραφή χρήστη"></a> Όταν γίνεται επιλογή ενός εικονιδίου διαγραφής, ανοίγει στον browser μια σελίδα με διεύθυνση http://localhost/sell/users.php?action=del_user&user_id=(τ ο μοναδικό κλειδί του χρήστη που επιλέχθηκε για διαγραφή) Είναι φανερό εδώ ότι στην διεύθυνση URL προστίθενται πρόσθετες πληροφορίες οι οποίες χωρίζονται μεταξύ τους με το σύμβολο & και είναι οι εξής: action με τιμή del_user

user_id με τιμή το μοναδικό κλειδί το id του χρήστη Άρα μπορεί να γίνει επεξεργασία των πληροφοριών των χρηστών μέσω των επεξεργάσιμων πεδίων και επίσης διαγραφή των χρηστών μέσω των εικονιδίων διαγραφής. Για την πρώτη περίπτωση, κάθε φορά που ο διαχειριστής επεξεργάζεται ένα ή περισσότερα πεδία, πρέπει να πατήσει το κουμπί υποβολής για να αποθηκευτούν οι αλλαγές στην βάση δεδομένων, και πιο συγκεκριμένα στον πίνακα users. Στην πραγματικότητα, με το πάτημα του κουμπιού υποβολής δεν αποθηκεύονται μόνο τα αλλαγμένα πεδία, αλλά όλα. Για αυτόν τον λόγο, χρησιμοποιείται η ίδια ερώτηση όπως προηγουμένως για να ανακτηθούν όλοι οι χρήστες και για τον κάθε έναν: α) Αποθηκεύεται κάθε πεδίο σε μεταβλητές. Το όνομα του κάθε πεδίου είναι γνωστό, αφού δημιουργείται από το μοναδικό id του χρήστη μου εξετάζεται κάθε φορά, και το γνωστό πρόθεμα. β) Εκτελείται ερώτημα SQL για την ενημέρωση των τιμών της εγγραφής στον πίνακα: UPDATE users SET name='$name',surname='$surname',telephone='$telephone', address='$address',email='$email',city='$city',count ry='$country' WHERE user_id=".$row['user_id'] Σε ό,τι αφορά την διαγραφή χρηστών, όπως αναφέρθηκε προηγουμένως, αυτή πραγματοποιείται με την επιλογή του εικονιδίου διαγραφής. Όταν ακολουθείται ο σύνδεσμος, το πρόγραμμα χωρίζει τις πρόσθετες πληροfορίες που βρίσκονται στο URL και τις αποθηκεύει σε μεταβλητές. Αυτό επιτυχγάνεται χρησιμοποιώντας τις μεταβλητές $_REQUEST. Οι εντολές $action = $_REQUEST['action']; $uid = $_REQUEST['user_id'];

Αναγνωρίζουν στην διεύθυνση τις πληροφορίες και τις τιμές τους και τις αποθηκεύουν σε μεταβλητές για να χρησιμοποιηθούν στο πρόγραμμα. Η πρώτη πληροφορία δείχνει ποια ενέργεια πρέπει να πραγματοποιηθεί (διαγραφή) και η δεύτερη δείχνει σε ποιο αντικείμενο πρέπει να γίνει αυτή η ενέργεια (το id του χρήστη). Με αυτά τα δεδομένα, μπορεί να γίνει η διαγραφή ενός χρήστη, όμως αυτή πρέπει να γίνει σε στάδια, καθώς δεν αρκεί να διαγραφεί ο χρήστης από τον πίνακα users, αλλά να αφαιρεθούν και τα προϊόντα τα οποία έχει αναρτήσει (μαζί με τις φωτογραφίες τους), καθώς και τις δημοσιεύσεις μηνυμάτων που τυχόν έχει κάνει. Έτσι, σταδιακά διαγράφονται, τα προϊόντα: SELECT prod_id FROM products WHERE seller='".$username."' ο χρήστης: Τα αρχεία που συνδέονται με τις αναρτήσεις προϊόντων που έχει κάνει foreach (glob("img/".$row['prod_id'].".*") as $filename) { unlink($filename); } και τελικά ο χρήστης: DELETE FROM users WHERE user_id=".$uid 4.4 Προβολή προιόντων Για να προβληθούν όλα τα προϊόντα στην αντίστοιχη σελίδα, εκτελείται το παρακάτω ερώτημα SQL: SELECT * FROM products ORDER BY date DESC Με αυτόν τον τρόπο ανακτώνται όλες οι πληροφορίες για κάθε προϊόν με φθίνουσα χρονολογική σειρά (από την νεότερη ανάρτηση στην παλαιότερη).

Επειδή όμως δεν είναι για όλους στους χρήστες διαθέσιμες όλες οι επιλογές για όλα τα προϊόντα (για παράδειγμα δεν μπορεί ένας χρήστης να διαγράψει προϊόντα που έχουν αναρτήσει άλλοι χρήστες, ή αντίστοιχα ο διαχειριστής μπορεί να διαγράψει οποιοδήποτε προϊόν), όσο γίνεται η προβολή κάθε προϊόντος γίνεται διάκριση ανάλογα με τον τύπο του χρήστη (διαχειριστής ή απλός χρήστης) για να μπει η ένδειξη διαγραφής μόνο στα προϊόντα που πρέπει, και επίσης ελέγχεται ποιος χρήστης είναι συνδεδεμένος έτσι ώστε να μην εμφανιστεί η ένδειξη αποστολής μηνύματος στα προϊόντα που έχει αναρτήσει ο ίδιος. Η διαγραφή προϊόντος γίνεται με τον ίδιο τρόπο που περιγράφηκε στην προηγούμενη ενότητα. Τα προϊόντα που επιτρέπεται να διαγραφούν, συνοδεύονται κατά την προβολή τους από το εικονίδιο διαγραφής, το οποίο όταν πατηθεί οδηγεί σε μια σελίδα, της οποίας το URL περιέχει πρόσθετες πληροφορίες όπως το μοναδικό id του προϊόντος. Όταν συμβεί αυτό, εκτελείται μια εντολή διαγραφής της φωτογραφίας του προϊόντος: foreach (glob("img/".$pid.".*") as $filename) { unlink($filename); } και ένα ερώτημα διαγραφής του προϊόντος από τον πίνακα products DELETE FROM products WHERE prod_id=".$pid 4.5 Ανάρτηση νέας αγγελίας Για να αναρτηθεί νέα αγγελία προϊόντος, εμφανίζεται μια φόρμα, τα πεδία της οποίας πρέπει να συμπληρώσει ο χρήστης. Ο χρήστης εισάγει τον τίλο του προϊόντος και την περιγραφή του, και επιλέγει ένα αρχείο φωτογραφίας του προϊόντος, για να μεταφορτωθεί στον server. Η ανάρτηση αποθηκεύεται στην βάση δεδομένων και πιο συγκεκριμένα στον πίνακα products με το παρακάτω ερώτημα: INSERT INTO products (seller,title,description) VALUES ('$seller','$title','$desc')

Εδώ φαίνεται ότι αποθηκεύονται όλες οι πληροφορίες του προϊόντος εκτός από το όνομα αρχείου φωτογραφίας το οποίο αντιστοιχεί στο προϊόν. Αυτό συμβαίνει γιατί το όνομα αρχείου πρέπει πρώτα να υποβληθεί σε επεξεργασία πριν αποθηκευτεί στην βάση δεδομένων. Για λόγους ευκολίας αναζήτησης, αλλά και λόγους ομοιομορφίας των αρχείων που αποθηκεύονται στον server, το κάθε αρχείο μετονομάζεται σε: Το μοναδικό id της ανάρτησης. η προέκταση του αρχείου Με αυτό το όνομα το αρχείο φωτογραφίας μεταφορτώνεται και αποθηκεύεται στον server. Για να γίνει αυτό ακολουθούνται τα εξής βήματα: 1. Διαχωρισμός ονόματος αρχείου σε όνομα και προέκταση 2. Αποθήκευση της προέκτασης 3. Εύρεση του id του προϊόντος 4. Συνένωση του id με την προέκταση από όπου προκύπτει το τελικό όνομα αρχείου 5. Αποθήκευση του αρχείου με αυτό το όνομα στον υποφάκελο /img στον server Σε αυτό το σημείο η εγγραφή στη βάση ενημερώνεται με το σωστό όνομα αρχείου, χρησιμοποιώντας το παρακάτω ερώτημα SQL: UPDATE products SET picture='$final_filename' WHERE prod_id=".$insert_id 4.6 Αναζήτηση προϊόντος Στην σελίδα προβολής των προϊόντων δίνεται επίσης η δυνατότητα αναζήτησης κάποιου συγκεκριμένου προϊόντος, μέσω κατάλληλου πεδίου εισαγωγής κειμένου. Όταν ο χρήστης πληκτρολογήσει κείμενο και πατήσει το κουμπί αναζήτησης, τότε δεν εμφανίζονται όλα τα προϊόντα, αλλά μόνο εκείνα που περιέχουν στον τίτλο ή στην περιγραφή τους, το κείμενο που πληκτρολογήθηκε. Αυτό γίνεται με το ακόλουθο ερώτημα:

SELECT * FROM products WHERE (title LIKE '%". $search_string. "%' OR description LIKE '%". $search_string."%') ORDER BY date DESC 4.7 Προβολή δημοσιεύσεων Οι δημοσιεύσεις αποθηκεύονται στον πίνακα messages και για να ανακτηθούν υπάρχουν δύο τρόποι, ανάλογα με τον τρόπο προβολής που έχει επιλέξει ο χρήστης: να εμφανίζονται μόνο οι ιδιωτικές δημοσιεύεις ή μόνο οι δημόσιες. Ανάλογα με τον τύπο προβολής επιλέγεται και το ερώτημα SQL και είναι αντίστοιχα για ιδιωτικές και δημόσιες ανακοινώσεις: SELECT * FROM messages WHERE type='private' AND to_user='".$_session['username']."' ORDER BY date DESC και SELECT * FROM messages WHERE type='public' ORDER BY date DESC Συγκεκριμένα για τις ιδιωτικές δημοσιεύσεις, ορίζεται ένας πρόσθετος όρος έτσω ώστε να εμφανίζονται μόνο οι δημοσιεύσεις που αφορούν τον συνδεδεμένο χρήστη. 4.8 Δημιουργία νέας δημοσίευσης Η δημιουργία νέας δημοσίευσης γίνεται από την σελίδα προβολής των προϊόντων. Ο χρήστης για κάθε προϊόν για το οποίο ενδιαφέρεται επιλέγει το εικονίδιο αποστολής μηνύματος και εμφανίζεται μια φόρμα. Σε αυτήν την φόρμα, επιλέγεται αυτόματα ο παραλήπτης, και είναι αυτός ο οποίος έχει κάνει αρχικά την ανάρτηση του προϊόντος. Επίσης, το θέμα της δημοσίευσης είναι αυτόματα συμπληρωμένο με το κείμενο RE: ακολουθούμενο από τον τίτλο του προϊόντος. Παρόλα αυτά το πεδίο αυτό μπορεί να το επεξεργαστεί ο χρήστης, εάν το επιθυμεί. Επιλέγοντας αν θα είναι δημόσια ή ιδιωτική η

δημοσίευση και πληκτρολογώντας το κυρίως κείμενο της δημοσίευσης ο χρήστης αποστέλλει την δημοσίευση με το κουμπί υποβολής και χρησιμοποιώντας την μέθοδο POST. Οι τιμές αυτές ανακτώνται από τον server και δημιουργείται μια νέα εγγραφή στον πίνακα messages με το ερώτημα SQL: INSERT INTO messages (from_user,to_user,subject,msg,type) VALUES ('$from','$sid','$subject','$message_body','$type')

Κεφάλαιο 5 ΑΝΑΣΚΟΠΗΣΗ ΤΗΣ ΠΤΥΧΙΑΚΗΣ ΚΑΙ ΜΕΛΛΟΝΤΙΚΕΣ ΒΕΛΤΙΩΣΕΙΣ Η διαδικτυακή εφαρμογή που δημιουργήθηκε αφορά μια ιστοσελίδα ανταλλαγής ή πώλησης και αγοράς προϊόντων με την μέθοδω των ανακοινώσεων και προσωπικών μηνυμάτων. Σε αυτήν, οι χρήστες μπορούν να δημοσιεύουν αγγελίες σχετικά με προϊόντα τα οποία θέλουν να ανταλλάξουν ή να πουλήσουν. Κάθε αγγελία προϊόντος περιλαμβάνει έναν τίτλο, την περιγραφή του προϊόντας, και μία φωτογραφία. Οι χρήστες μπορούν να δουν αυτές τις αγγελίες ή και να αναζητήσουν κάποιο συγκεκριμένο προϊόν. Για όποιο προϊόν ενδιαφέρει έναν χρήστη, αυτός μπορεί να συντάξει ανακοίνωση, σχετική με το προϊόν, και να αποσταλλεί με παραλήπτη τον χρήστη που έχει αναρτήσει την αγγελία. Ο αποστολέας έχει την επιλογή η ανακοίνωσή του να είναι είτε δημόσια (δηλαδή να είναι ορατή από όλους τους χρήστες), είτε ιδιωτική (ορατή μόνο από τον παραλήπτη). Στην πρώτη περίπτωση, και οι άλλοι χρήστες θα μπορούν να δουν το ενδιαφέρον του αποστολέα της ανακοίνωσης και να κάνουν και οι ίδιοι κάποια προσφορά. Στην δεύτερη περίπτωση, η ανακοίνωση έχει την μορφή προσωπικού μηνύματος. Ο κάθε χρήστης μπορεί να διαγράψει τις αγγελίες του εφόσον τα αντίστοιχα προϊόντα δεν είναι πια διαθέσιμα. Η πρόσβαση στην ιστοσελίδα γίνεται κατόπιν εγγραφής και τα διαθέσιμα προϊόντα είναι ορατά μόνο στους εγγεγραμένους χρήστες. Η εγγραφή γίνεται από σχετική φόρμα, και πρέπει να εγκριθεί από τον διαχειριστή της ιστοσελίδας. Ο διαχειριστής είναι επιφορτισμένος με την διαχείριση τον χρηστών (έγκριση εγγραφών, διαγραφή χρηστών, τροποποίηση στοιχείων) και τους περιεχομένου (επισκόπηση και διαγραφή αγγελιών και ανακοινώσεων). Η εφαρμογή έχει περιθώρια περεταίρω ανάπτυξης, έτσι ώστε να γίνει πιο πλήρης, με περισσότερες λειτουργίες. Μια βελτίωση θα μπορούσε να είναι η κατηγοριοποίηση των προϊόντων. Όταν μεγαλώνει ο αριθμός των προϊόντων, η αναζήτηση γίνεται πιο δύσκολη, ιδιαίτερα αν δεν τηρούνται κάποιοι κανόνες σχετικά με τους τίτλους ή τις περιγραφές των προϊόντων (για παράδειγμα να υπάρχουν λέξεις κλειδιά ή συγκεκριμένες μορφές

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

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

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

Για να αποσυνδεθεί ο χρήστης υπάρχει ο σχετικός σύνδεσμος στο μενού της εφαρμογής. 5.2 Δυνατότητες διαχειριστή Ο διαχειριστής έχει επιπλέον δυνατότητες σε σχέση με τους απλούς χρήστες. Αυτές είναι οι εξής: α) Ενεργοποίηση ή διαγραφή εγγραφών χρηστών β) Διαγραφή χρηστών γ) Διαγραφή αναρτήσεων προϊόντων Σε ό,τι αφορά τη διαχείριση χρηστών, ο διαχειριστής μπορεί να δει όλους τους χρήστες πατώντας στην επιλογή Χρήστες από το μενού. Τότε εμφανίζεται η οθόνη που φαίνεται παρακάτω: Αυτήν την οθόνη περιλαμβάνει τους χρήστες που έχουν κάνει εγγραφή, τα στοιχεία τους σε επεξεργάσιμα κουτιά κειμένου και εικονίδιο για διαγραφή του κάθε χρήστη. Σε αυτήν την οθόνη φαίνονται τόσο οι ενεργοποιημένοι χρήστες όσο και οι χρήστες που έκαναν εγγραφή από την αρχική οθόνη όπως αναφέρθηκε στην προηγούμενη ενότητα. Εδώ ο διαχειριστής μπορεί να τους διατηρήσει, ή αν δεν εγκρίνει την εγγραφή τους να τους διαγράψει. Για να γίνει η επεξεργασία των στοιχείων των χρηστών, το μόνο που χρειάζεται να κάνει ο διαχειριστής είναι να τροποποιήσει τα πεδία που επιθυμεί και να πατήσει το κουμπί Αποθήκευση Αλλαγών.

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

προϊόντα που δεν έχει αναρτήσει ο ίδιος (μέσω του εικονιδίου που απεικονίζει ένα φάκελο στην πάνω δεξιά γωνία της φωτογραφίας του προϊόντος). Ακόμη, μπορεί να διαγράψει μόνο δικές του αγγελίες, πατώντας το σχετικό εικονίδιο που εμφανίζεται στην ίδια τοποθεσία. Επίσης δίνεται πάνω αριστερά της οθόνης ένα πεδίο αναζήτησης όπου ο χρήστης μπορεί να εισάγει κείμενο το οποίο θα αναζητηθεί στους τίτλους και τις περιγραφές των αγγελιών, και με το πάτημα του κουμπιού αναζήτηση θα εμφανιστούν όλα τα σχετικά προϊόντα. 5.3.1 Ανάρτηση αγγελίας Για να γίνει ανάρτηση νέας αγγελίας ο χρήστης πρέπει να πατήσει στον σύνδεσμο Νέο Προϊόν από το μενού. Όταν γίνει αυτό εμφανίζεται η φόρμα που φαίνεται στην επόμενη εικόνα: Ο χρήστης συμπληρώνει τα πεδία, και επιλέγει μια φωτογραφία του προϊόντος που θα συνοδεύει την αγγελία. Με το πάτημα το κουμπιού Ανάρτηση Αγγελίας, η αγγελία καταχωρείται και πλέον είναι ορατή σε όλους τους χρήστες.

5.4 Ανακοινώσεις Στον σύνδεσμο Ανακοινώσεις του μενού, εμφανίζονται όλες οι δημόσιες ανακοινώσεις που έχουν γίνει από τους χρήστες με την μορφή που φαίνεται στην παρακάτω εικόνα. Όταν ο σύνδεσμος Ανακοινώσεις έχει επιλεχθεί, τότε εμφανίζονται δύο υποκατηγορίες στο μενού, και αυτές είναι οι Δημόσιες και Ιδιωτικές ανακοινώσεις. Αν και εμφανίζονται από προεπιλογή οι δημόσιες ανακοινώσεις για λόγους ασφάλειας, ο χρήστης μπορεί να επιλέξει να δει μόνο τις ιδιωτικές ανακοινώσεις που έχουν ως παραλήπτη τον ίδιο, δηλαδή ουσιαστικά να δει τα προσωπικά του μηνύματα. 5.4.1 Δημιουργία δημοσίευσης Όπως αναφέρθηκε προηγουμένως, η αποστολή ανακοινώσεων ιδιωτικών ή δημόσιων γίνεται από την σελίδα παρουσίασης όλων των αγγελιών. Ο χρήστης βρίσκει το προϊόν που τον ενδιαφέρει, και επιλέγοντας

το εικονίδιο αλληλογραφίας, εμφανίζεται η φόρμα που φαίνεται στην παρακάτω εικόνα: Σε αυτήν την φόρμα συμπληρώνεται αυτόματα ο παραλήπτης ο οποίος είναι ο ιδιοκτήτης του προϊόντος. Έπειτα ο χρήστης ο χρήστης επιλέγει αν η ανακοίνωση θα είναι δημόσια ή ιδιωτική. Το θέμα της ανακοίνωσης συμπληρώνεται αυτόματα και είναι της μορφής RE: <ο τίτλος της σχετικής αγγελίας>, όμως μπορεί να το αλλάξει αν το επιθυμεί ο αποστολέας. Τέλος, συμπληρώνεται το περιεχόμενο της ανακοίνωσης, και αυτή αποστέλλεται όταν πατηθεί το κουμπί Ανάρτηση Ανακοίνωσης.

Παράρτημα Β Λεξικό Δεδομένων Περιγραφή των μεταβλητών του συστήματος. Όνομα Τύπος Περιγραφή $username string Όνομα χρήστη $password string Κωδικός χρήστη $res_login array Τα αποτελέσματα ερωτήματος στην βάση κατά την είσοδο χρήστη $num_rows integer O αριθμός των αποτελεσμάτων ενός ερωτήματος στην βάση δεδομένων $_SESSION['logged_in'] string Μεταβλητή session. Δείχνει αν ο χρήστης είναι συνδεδεμένος ή όχι $_SESSION['username'] string Μεταβλητή session. Το όνομα χρήστη του συνδεδεμένου χρήστη $_SESSION['usertype'] string Μεταβλητή session. Ο τύπος χρήστη που είναι συνδεδεμένος (διαειριστής ή απλός χρήστης) $action string Μεταβλητή που δείχνει το είδος της ενέργειας που επιλέχθηκε (πχ διαγραφή) $pid string Ο κωδικός του προϊόντος που επιλέχθηκε $filename string Όνομα αρχείου $search_string string Συμβολοσειρά που θα αναζητηθεί στους τίτλους και τις περιγραφές των προϊόντων $result array Αποτελέσματα ερωτήματος PostgreSQL $row array Μια γραμμή από τον πίνακα αποτελεσμάτων ενός ερωτήματος PostgreSQL $where string Συμβολοσειρά που είναι διαφορετική ανάλογα με τις επιλογές του χρήστη και ανάλογα συμπληρώνει ένα ερώτημα PostgreSQL $type string Αποθηκεύεται ο τύπος της δημοσίευσης (δημόσιος ή ιδιωτικός) $name string Το όνομα $surname string Το επώνυμο $address string Η διεύθυνση $email string Η διεύθυνση ηλεκτρονικού ταχυδρομείου

$city string Η πόλη $country string Η χώρα που βρίσκεται ο χρήστης $sid string Το όνομα χρήστη του πωλητή $subject string Το θέμα της ανακοίνωσης $message_body string Το κυρίως κείμενο της ανακοίνωσης $type string Ο τύπος της ανακοίνωσης $from string Ο αποστολέας μιας ανακοίνωσης $title string Ο τίτλος της αγγελίας $desc string Η περιγραφή του προϊόντος $seller string Το όνομα χρήστη του πωλητή $ext string Η προέκταση του ονόματος αρχείου που ανεβάζει ο χρήστης $insert_query string Το αποτέλεσμα του ερωτήματος στη βάση δεδομένων, που βρίσκει το id της τελευταίας ανάρτησης $insert_id string Το id της τελευταίας ανάρτησης στον πίνακα products $final_filename string Το όνομα αρχείου που αποθηκεύεται στην βάση δεδομένων στον πίνακα products

Παράρτημα Γ - Απαιτήσεις Φυσικό περιβάλλον Ε: Που θα λειτουργεί ο εξοπλισμός; Α: Σε ηλεκτρονικό υπολογιστή Ε: Υπάρχει μια τοποθεσία ή πολλές; Η εφαρμογή θα εγκατασταθεί σε έναν server και θα έχουν πρόσβαση πολλοί υπολογιστές μέσω διαδικτύου Ε: Υπάρχουν περιβαλλοντικοί περιορισμοί, όπως θερμοκρασία, υγρασία, ή μαγνητικές παρεμβολές; Α: Όχι Διασυνδέσεις Ε: Η είσοδος προέρχεται από ένα ή περισσότερα άλλα συστήματα; Α: Είσοδοι είναι τα δεδομένα που εισάγουν απευθείας οι χρήστες Ε: Η έξοδος οδηγείται σε ένα ή περισσότερα άλλα συστήματα; Α: Τα δεδομένα εξόδου οδηγούνται στην βαση δεδομένων Ε: Υπάρχει προκαθορισμένος τρόπος με τον οποίο μορφοποιούνται τα δεδομένα; Α: Όχι Ε: Υπάρχει προκαθορισμένο μέσο για τη χρήση των δεδομένων; Α: Όχι Χρήστες και ανθρώπινοι παράγοντες Ε: Ποιος θα χρησιμοποιεί το σύστημα; Α: Οποιοσδήποτε Ε: Θα υπάρχουν διάφοροι τύποι χρηστών; Α: Ο διαχειριστής, και οι απλοί χρήστες Ε: Ποιο είναι το επίπεδο ικανοτήτων για κάθε τύπο χρήστη; Α: Χρήση ίντερνετ

Ε: Τι είδους εκπαίδευση θα απαιτηθεί για κάθε τύπο χρήστη; Α: Δεν απαιτείται εκπαίδευση για την χρήση του συστήματος Ε: Πόσο εύκολο θα είναι για ένα χρήστη να κατανοήσει και να χρησιμοποιήσει το σύστημα; Α: Η εφαρμογή καθοδηγεί τον χρήστη Ε: Πόσο δύσκολο θα είναι για ένα χρήστη να χρησιμοποιήσει το σύστημα με λάθος τρόπο; Α: Σε κάθε δυσλειτουργία εμφανίζεται σχετικό μήνυμα λάθους Λειτουργικότητα Ε: Τι θα κάνει το σύστημα; Α: Ο διαχειριστής θα εγκρίνει τις αιτήσεις των χρηστών για εγγραφή στο σύστημα, και θα ελέγχει τις αναρτήσεις και την συμπεριφορά των χρηστών. Οι απλοί χρήστες μπορούν να αναρτούν αγγελίες για προϊόντα τα οποία θέλουν να πουλήσουν ή να ανταλλάξουν. Επίσης μπορούν να δουν τις αγγελίες που έχουν αναρτήσει οι άλλοι χρήστες και να στείλουν δημοσίευση (δημόσια ή ιδιωτική) σχετική με κάποιο προϊόν. Ε: Πότε θα κάνει αυτές τις ενέργειες το σύστημα; Α: Όταν υπάρχει συνδεδεμένος χρήστης Ε: Υπάρχουν διαφορετικοί τρόποι λειτουργίας; Α: Κάθε τύπος χρήστη έχει διαφορετικές λειτουργίες που μπορεί να εκτελέσει Ε: Πως και πότε μπορεί το σύστημα να αλλάξει ή να επεκταθεί; Α: Σε προκαθορισμένες ώρες συντήρησης συστήματος Ε: Υπάρχουν περιορισμοί στην ταχύτητα εκτέλεσης, το χρόνο απόκρισης ή τη διεκπεραιωτική ικανότητα; Α: Το σύστημα πρέπει να αποκρίνεται άμεσα στις εντολές του χρήστη Τεκμηρίωση Ε: Πόση τεκμηρίωση απαιτείται; Α: Διαγράμματα ροής, διαγράμματα οντοτήτων συσχετίσεων Ε: Πρέπει να είναι άμεση, σε μορφή βιβλίου ή και τα δύο; Α: Σε μορφή βιβλίου