Search Engine Optimization (SEO)

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Search Engine Optimization (SEO)"

Transcript

1 ΑΤΕΙ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Τμήμα Μηχανικών Πληροφορικής ΤΕ Search Engine Optimization (SEO) ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Αράπης Κωνσταντίνος (ΑΜ: 2146) Επιβλέπων: Δρ. Φώτης Κόκκορας, Καθηγητής Εφαρμογών ΛΑΡΙΣΑ 2015

2

3 «Εγώ ο/η Αράπης Κωνσταντίνος, δηλώνω υπεύθυνα ότι η παρούσα Πτυχιακή Εργασία με τίτλο Search Engine Optimization (SEO) είναι δική μου και βεβαιώνω ότι: Σε όσες περιπτώσεις έχω συμβουλευτεί δημοσιευμένη εργασία τρίτων, αυτό επισημαίνεται με σχετική αναφορά στα επίμαχα σημεία. Σε όσες περιπτώσεις μεταφέρω λόγια τρίτων, αυτό επισημαίνεται με σχετική αναφορά στα επίμαχα σημεία. Με εξαίρεση τέτοιες περιπτώσεις, το υπόλοιπο κείμενο της πτυχιακής αποτελεί δική μου δουλειά. Αναφέρω ρητά όλες τις πηγές βοήθειας που χρησιμοποίησα. Σε περιπτώσεις που τμήματα της παρούσας πτυχιακής έγιναν από κοινού με τρίτους, αναφέρω ρητά ποια είναι η δική μου συνεισφορά και ποια των τρίτων. Γνωρίζω πως η λογοκλοπή αποτελεί σοβαρότατο παράπτωμα και είμαι ενήμερος(-η) για την επέλευση των νομίμων συνεπειών» Αράπης Κωνσταντίνος

4 Εγκρίθηκε από την τριμελή εξεταστική επιτροπή Τόπος: Ημερομηνία: ΕΠΙΤΡΟΠΗ ΑΞΙΟΛΟΓΗΣΗΣ

5 Περίληψη Αντικείμενο της πτυχιακής είναι η μελέτη των παραμέτρων που επηρεάζουν την κατάταξη ιστοσελίδων στα "οργανικά" (αλγοριθμικά) αποτελέσματα των μηχανών αναζήτησης (όχι στις πληρωμένες καταχωρήσεις), τόσο σε επίπεδο περιεχομένου όσο και σε επίπεδο HTML κώδικα. Θα γίνει μια καταγραφή των παραμέτρων, θα γίνει έρευνα γύρω από τις διαθέσιμες λύσεις της αγοράς και τέλος θα αναπτυχθεί εφαρμογή σε PHP, που δοθείσης μιας διεύθυνσης URL, θα αναλύει το περιεχόμενό της και θα παράγει αναφορά σε σχέση με συγκεκριμένες παραμέτρους SEO. -i-

6

7 Ευχαριστίες Πρώτον απ όλους θέλω να ευχαριστήσω τον καθηγητή μου κ. Φώτη Κόκκορα, για την ανάθεση του θέματος, την υπομονή του, τις συμβουλές και την πολύτιμη καθοδήγηση που μου έδωσε για τη διεκπεραίωση της πτυχιακής μου εργασίας. Τέλος, θέλω να ευχαριστήσω την οικογένεια μου για την οικονομική και ψυχολογική υποστήριξη της όλα αυτά τα χρόνια. Αράπης Κωνσταντίνος Mάιος iii-

8

9 Περιεχόμενα ΠΕΡΙΛΗΨΗ... I ΕΥΧΑΡΙΣΤΙΕΣ... III ΠΕΡΙΕΧΟΜΕΝΑ... V 1 ΕΙΣΑΓΩΓΗ ΜΗΧΑΝΕΣ ΑΝΑΖΗΤΗΣΗΣ Ιστορικά Στοιχεία Τρόπος λειτουργίας Κυριότερες Μηχανές Αναζήτησης ΔΙΑΡΘΡΩΣΗ ΠΤΥΧΙΑΚΗΣ SEARCH ENGINE OPTIMIZATION ΟΡΙΣΜΟΣ SEO ΚΑΙ ΧΡΗΣΙΜΟΤΗΤΑ WHITE HAT VS BLACK HAT SEO White Hat SEO Black Hat SEO ΛΕΞΕΙΣ-ΚΛΕΙΔΙΑ Keyword Research ON PAGE SEO Page Title Meta Description tag Meta Keywords tag URL Structure Navigation Heading Tags Robots.txt Images Περιεχόμενο Domain Age v-

10 Domain Name και TLDs HTML, CSS Validity Backlinks Ασφάλεια Structured Data Mobile Optimization Speed Optimization Συνήθη λάθη και κακές τεχνικές On Page SEO OFF PAGE SEO Social Media Directory Submission Link building Κακές τεχνικές Off Page SEO LOCAL SEO Google My Business Local Directories On Page Local SEO SEO TOOLS ON PAGE OPTIMIZATION TOOLS SEO Tools για το «στήσιμο» σελίδας SEO Report/Audit Tools OFF PAGE OPTIMIZATION TOOLS WEB ANALYTICS SOCIAL MEDIA TOOLS KEYWORD RESEARCH TOOLS ΑΝΤΙΚΕΙΜΕΝΟ ΠΤΥΧΙΑΚΗΣ ΠΕΡΙΓΡΑΦΗ ΕΡΓΑΛΕΙΟΥ ΓΛΩΣΣΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΑ PHP HTML XAMPP NetBeans vi-

11 5 ΕΡΓΑΛΕΙΟ ΒΙΒΛΙΟΘΗΚΕΣ ΚΑΙ ΚΛΑΣΕΙΣ MD_Extract SEOstats Services_W3C_HTMLValidator Phpgraphlib MultiKeywordDensityChecker PHPWhois OnPageSeo ΥΛΟΠΟΙΗΣΗ Φάκελοι και αρχεία MultiKeywordDensityChecker OnPageSeo Chart.php Chart2.php Index.php Report.php ΑΝΑΦΟΡΕΣ ΤΟΥ ΕΡΓΑΛΕΙΟΥ ΣΥΜΠΕΡΑΣΜΑΤΑ ΒΙΒΛΙΟΓΡΑΦΙΑ vii-

12

13 1 Εισαγωγή Μια μηχανή αναζήτησης είναι ένα διαδικτυακό λογισμικό που επιτρέπει στους χρήστες να εντοπίσουν πληροφορίες στο διαδίκτυο. Δημιουργεί ευρετήρια με βάση το περιεχόμενο των σελίδων και συσχετίζει με αυτά ιστοσελίδες (ή εικόνες, video, κτλ) με λέξειςκλειδιά που δόθηκαν από το χρήστη. Στη συνέχεια ταξινομεί τα σχετικά αποτελέσματα με κάποιον μάλλον πολύπλοκο τρόπο και τα προβάλει στον χρήστη. Ο τρόπος ταξινόμησης των αποτελεσμάτων αναζήτησης λαμβάνει υπόψη του πολλές παραμέτρους και επειδή οι υψηλές θέσεις στην κατάταξη μιας αναζήτησης με σχετικές με τη σελίδα λέξεις-κλειδιά, οδηγεί αποδεδειγμένα σε υψηλή επισκεψιμότητα, αναπτύχθηκαν τεχνικές που επιδιώκουν την όσο το δυνατό υψηλότερη κατάταξη. Το σύνολο των τεχνικών ονομάζεται SEO, από τα αρχικά του Search Engine Optimization και σε ελεύθερη μετάφραση θα το αποδίδαμε ως "Βελτιστοποίηση Κατάταξης Ιστοσελίδων από τις Μηχανές Αναζήτησης". Στη συνέχεια παρουσιάζονται αναλυτικότερα βασικά στοιχεία των μηχανών αναζήτησης, καθώς ο τρόπος λειτουργίας τους καθορίζει ισχυρά τις SEO παραμέτρους. 1.1 Μηχανές Αναζήτησης Ιστορικά Στοιχεία Αρχικά η πρόσβαση πληροφοριών στο διαδίκτυο γίνονταν κυρίως μέσω μηχανισμών χτισμένων γύρω από το πρωτόκολλο FTP (File Transfer Protocol). Το πρώτο εργαλείο αναζήτησης δημιουργήθηκε το 1990 από τους Alan Emtage, Bill Heelan, J. Peter Deutsch σπουδαστές του πανεπιστημίου McGill του Μόντρεαλ και ονομαζόταν Archie. Το πρόγραμμα δημιουργούσε ένα ευρετήριο όλων των αρχείων που υπήρχαν στις σελίδες FTP σε ένα συγκεκριμένο δίκτυο υπολογιστών. Το 1991, ο Mark McCahill, σπουδαστής του πανεπιστημίου της Μιννεσότα, δημιούργησε το Gopher, το οποίο συν τοις άλλοις ερευνούσε για αναφορές απλού κειμένου μέσα στα αρχεία. Η ανάπτυξη του Gopher οδήγησε στη δημιουργία δύο νέων προγραμμάτων -9-

14 αναζήτησης, του Veronica και του Jughead, τα οποία ερευνούσαν ονόματα αρχείων και τίτλους που ήταν αποθηκευμένα στα ευρετήρια του Gopher. Το 1993, ο Matthew Gray, ανέπτυξε το Wandex, την πρώτη μηχανή αναζήτησης που είχε τη μορφή που γνωρίζουμε σήμερα. Η επόμενη μεγάλη εξέλιξη έγινε το 1994, όταν και δημιουργήθηκε η μηχανή αναζήτησης WebCrawler, η οποία δημιουργούσε ευρετήριο με ολόκληρο το κείμενο των ιστοσελίδων και όχι μόνο με τους τίτλους τους. Αυτό επέτρεπε στους χρήστες να ψάξουν για οποιαδήποτε λέξη σε οποιαδήποτε ιστοσελίδα και ήταν η πρώτη που έγινε ευρέως γνωστή στο κοινό. Το 1994 ξεκίνησε και η λειτουργία των Lycos, Infoseek και Yahoo!. Η λειτουργία αναζήτησης της Yahoo! αρχικά βασιζόταν πάνω στο κατάλογο ιστοσελίδων που είχε δημιουργήσει και όχι πάνω σε αντίγραφα του κειμένου των ιστοσελίδων. Το 1995, αναπτύχθηκε η μηχανή αναζήτησης AltaVista, η οποία για κάποιο χρονικό διάστημα ήταν μία από τις δημοφιλέστερες. Αναπτύχθηκε από ερευνητές του Digital Equipment Corporation's(DEC) Network Systems Laboratory και Digital Equipment Corporation's Western Research Laboratory στο Palo Alto της Καλιφόρνια. Ήταν ένα πολύ δυνατό και γρήγορο εργαλείο. Στη συνέχεια, το 1996, ιδρύθηκε η Inktomi από τον Eric Brewer, καθηγητή στο University of California Berkeley και τον Paul Gauthier. Το 1997 ξεκίνησε η λειτουργία της μηχανής αναζήτησης Google, η οποία αναπτύχθηκε από τους Larry Page και Sergey Brin, διδακτορικούς φοιτητές του Stanford University. H εταιρεία ιδρύθηκε το Η Google κατάφερε να έχει καλύτερα αποτελέσματα για τις αναζητήσεις με μία καινοτομία που την ονόμασαν PageRank. Η μηχανή αναζήτησης της Google είναι στις μέρες μας η δημοφιλέστερη. Το 1998 ξεκίνησε η λειτουργία της MSN Search από την Microsoft. Το 2006 μετονομάστηκε σε Windows Live και το 2007 σε Live Search. Αργότερα, το 2009, η Microsoft επαναλανσάρισε τη μηχανή αναζήτησης της, με την ονομασία Bing [34] Τρόπος λειτουργίας Μία μηχανή αναζήτησης αποτελείται από τρία διαφορετικά προγράμματα (Εικόνα 1): 1. Web Crawler, ένα πρόγραμμα που ονομάζεται Web Crawler ή Spider σαρώνει το διαδίκτυο, συλλέγει τις ιστοσελίδες και τις αποθηκεύει (web page cache). 2. Indexer, δημιουργεί ένα ευρετήριο (index) του διαδικτύου με βάση τις σελίδες που έχει αποθηκεύσει ο crawler. -10-

15 3. Query Engine, εδώ επιτελείται η λειτουργία της αναζήτησης. Δέχεται το "ερώτημα" του χρήστη συνήθως από μία ή περισσότερες λέξεις και χρησιμοποιώντας το ευρετήριο, τις αποθηκευμένες σελίδες του crawler και ένα αρχείο καταγραφής από προηγούμενα ερωτήματα (Query log) εμφανίζει τα αποτελέσματα της αναζήτησης. Εικόνα 1: Τρόπος λειτουργίας μηχανής αναζήτησης.[7] Η χρησιμότητα και συνεπώς η επιτυχία μιας μηχανής αναζήτησης εξαρτάται από τα αποτελέσματα που εμφανίζει. Ενώ μπορεί να υπάρχουν εκατομμύρια ιστοσελίδες που περιέχουν τη λέξη ή τη φράση που ψάχνει ο χρήστης, είναι δουλειά της μηχανής αναζήτησης να εμφανίσει τα καλύτερα αποτελέσματα ανάλογα με τη σχετικότητα, τη δημοφιλία και την ποιότητα τους. Οι μηχανές αναζήτησης χρησιμοποιούν διάφορες μεθόδους για να κατατάξουν τα αποτελέσματα τους και να εμφανίσουν τα καλύτερα αποτελέσματα στις πρώτες θέσεις των SERPs. Αυτές οι μέθοδοι είναι διαφορετικές από μηχανή σε μηχανή και αλλάζουν με τα χρόνια ανάλογα με τη χρήση του διαδικτύου και την ανάπτυξη νέων τεχνικών. Λεπτομέρειες γι' αυτές τις μεθόδους παραμένουν μυστικές. Γνωρίζουμε, -11-

16 όμως, ένα γενικό περίγραμμα, το οποίο αποτελείται από ένα συνδυασμό οκτώ (8) παραγόντων χωρισμένων σε τρείς (3) κατηγορίες. Α. Μέτρηση της σπουδαιότητας της σελίδας ανεξάρτητη του ερωτήματος. 1. Με βάση τους συνδέσμους που "δείχνουν" στη σελίδα (PageRank). 2. Με βάση άλλες εκτιμήσεις π.χ η Wikipedia ή σελίδες με.edu TLD (Top-Level Domain) θεωρούνται υψηλής ποιότητας. Β. Μέτρηση της σχετικότητας της σελίδας ανάλογα με το ερώτημα. 1. Με βάση το περιεχόμενο της σελίδας. 2. Με βάση τους συνδέσμους που "δείχνουν" στη σελίδα. 3. Με βάση τα αρχεία καταγραφής ερωτημάτων (Query logs). Τα περισσότερα ερωτήματα που δέχεται η μηχανή αναζήτησης τα έχει λάβει πολλές φορές στο παρελθόν. Τα Query logs καταγράφουν σε ποιές σελίδες οι χρήστες επέλεξαν να επισκεφτούν, και σε κάποιο βαθμό, ακόμη και πόσο χρόνο πέρασαν κοιτάζοντάς τες. 4. Εξατομικευμένη Αναζήτηση. Πολλές μηχανές αναζήτησης όπως η Google και η Bing εμφανίζουν προσαρμοσμένα αποτελέσματα ανάλογα με το ιστορικό δραστηριοτήτων του χρήστη π.χ. τα ερωτήματα που έχει κάνει, τους συνδέσμους που έχει επισκεφτεί. 5. Με βάση συγκεκριμένες απαντήσεις σε γνωστά ερωτήματα π.χ. το πρώτο αποτέλεσμα για το ερώτημα "convert grams to ounces" είναι και η απάντηση του. Γ. Διασπορά του Θέματος. 1. Αν ένας όρος αναζήτησης έχει πολλές σημασίες, τότε οι σημαντικότερες από αυτές θα πρέπει να βρίσκονται μεταξύ των πρώτων αποτελεσμάτων, ανεξάρτητα από την ενυπάρχουσα σπουδαιότητα της σελίδας [7] Κυριότερες Μηχανές Αναζήτησης Οι κυριότερες μηχανές αναζήτησης τα τελευταία χρόνια σε παγκόσμιο επίπεδο είναι τέσσερις, με μερίδιο αγοράς που έφτασε το 98.45% των συνολικών παγκόσμιων αναζητήσεων για το έτος 2013 (Εικόνα 2). Η Google είχε το 77.46% των αναζητήσεων της παγκόσμιας αγοράς, η Yahoo! το 7.30%, η Bing το 5.47% και η Baidu το 8.22%, η οποία δραστηριοποιείται στην Κινέζικη αγορά. -12-

17 Εικόνα 2: Μερίδιο Αγοράς Μηχανών Αναζήτησης για το έτος 2013.[9] Για το 2014, το 67.53% των χρηστών αναζήτησε πληροφορίες στο διαδίκτυο χρησιμοποιώντας την Google, το 6.63% την Bing, το 6.17% την Yahoo! και το 18.38% την Baidu (Εικόνα 3). Εικόνα 3: Μερίδιο Αγοράς Μηχανών Αναζήτησης για το 2014.[10] Τα στοιχεία για το 2015 από τον Ιανουάριο μέχρι και τον Απρίλιο δείχνουν στην πρώτη θέση την Google με 62.19%, στη δεύτερη θέση την Baidu με 19.85%, στην τρίτη θέση την Bing με 8.27% και στην τέταρτη θέση την Yahoo! με 7.78%. (Εικόνα 4) Εικόνα 4: Μερίδιο Αγοράς Μηχανών Αναζήτησης για Ιανουάριο ως Απρίλιο 2015.[11] Google Η Google [18] ξεκίνησε τον Ιανουάριο του 1996 ως ερευνητικό πρόγραμμα από τους Larry Page και Sergey Brin, όταν έκαναν και οι δύο το διδακτορικό τους στο Stanford University της Καλιφόρνια. -13-

18 Ενώ οι συμβατικές μηχανές αναζήτησης κατέτασσαν τα αποτελέσματά τους μετρώντας πόσες φορές οι όροι αναζήτησης εμφανίζονταν στην σελίδα, οι δύο τους δημιούργησαν ένα καλύτερο σύστημα που ανέλυε τις σχέσεις μεταξύ των ιστοσελίδων. Ονόμασαν τη νέα τεχνολογία PageRank. Αρχικά, τη νέα μηχανή αναζήτησης που έφτιαξαν την ονόμασαν BackRub και στη συνέχεια άλλαξαν το όνομα σε Google, που προήλθε από αναγραμματισμό της λέξης Googol. Στην αρχή το Google έτρεχε στην ιστοσελίδα του Stanford University, με τα domain google.stanford.edu και z.stanford.edu. Το domain name της Google κατοχυρώθηκε στις 15 Σεπτεμβρίου του 1997 και η εταιρεία ιδρύθηκε στις 4 Σεπτρεμβρίου του Η μηχανή αναζήτησης της Google είναι η πιο διαδεδομένη στο διαδίκτυο. Παρέχει τουλάχιστον 22 ακόμα ειδικές λειτουργίες πέρα από την αρχική ικανότητα αναζήτησης για λέξη ή φράση. Αυτές περιλαμβάνουν συνώνυμα, προγνώσεις καιρού, χρονικές ζώνες, τιμές μετοχών, χάρτες, δεδομένα σεισμών, ώρες προβολής ταινιών και αποτελέσματα α- γώνων. Προσφέρει ειδικές λειτουργίες για ημερομηνίες, τιμές, θερμοκρασίες, μετατροπές χρημάτων ή μονάδων, μαθηματικούς υπολογισμούς καθώς και μετάφραση των εμφανιζόμενων ιστοσελίδων σε διάφορες γλώσσες. Επίσης παρέχει τη δυνατότητα στους χρήστες να αναζητήσουν πληροφορίες στο διαδίκτυο μέσω φωνής (Google Voice Search) ή δίνοντας κάποια εικόνα (Search by Image). PageRank Το PageRank είναι ένας αλγόριθμος που χρησιμοποιεί η Google για να καθορίσει την σπουδαιότητα μιας σελίδας και αποτελεί έναν από τους πολλούς παράγοντες που καθορίζουν την κατάταξη μιας σελίδας στα αποτελέσματα της. Η σπουδαιότητα της σελίδας καθορίζεται με βάση τον αριθμό και τη σπουδαιότητα των σελίδων που οδηγούν (link) πίσω σε αυτήν. Το δίπλωμα ευρεσιτεχνίας του PageRank ανήκει στο πανεπιστήμιο του Stanford και η Google έχει το αποκλειστικό δικαίωμα χρήσης του. Yahoo! Η Yahoo! [41] είναι εταιρεία διαδικτυακών υπηρεσιών. Είναι ένας από τους πιο παλιούς καταλόγους ιστοσελίδων (Web Directory). Ξεκίνησε ως θεματικός κατάλογος που αργότερα όμως εξελίχτηκε και σε μία μηχανή αναζήτησης. Ιδρύθηκε τον Ιανουάριο του 1994 από τους τότε τελειόφοιτους του Stanford University, David Filo και Jerry Yang, οι οποίοι ήθελαν να ομαδοποιήσουν και να καταγράψουν -14-

19 ιστοσελίδες μείζονος ενδιαφέροντος και να τις ταξινομήσουν σε θεματικές ενότητες. Η ιστοσελίδα που δημιούργησαν ονομάστηκε αρχικά Jerry and David s guide to the World Wide Web και στη συνέχεια μετονομάστηκε σε Yahoo! τον Μάρτιο του Στις 18 Ιανουαρίου 1995 δημιουργήθηκε και το domain yahoo.com. Αρχικά η μηχανή αναζήτησης της Yahoo! εμφάνιζε αποτελέσματα από τον κατάλογο της σε συνδυασμό με ένα ευρετήριο που της παρείχε η Inktomi το 2001 και αργότερα η Google, μέχρι και το 2004 όπου ανέπτυξε τον δικό της Web Crawler. Toν Ιούλιο του 2009 υπέγραψε συμφωνία με την Microsoft, τα αποτελέσματα της αναζήτησης παρέχονται πλέον από τη Bing. Bing Η Bing [3] είναι η μηχανή αναζήτησης της Microsoft. Το 1998 ξεκίνησε η λειτουργία της MSN Search από την Microsoft, η οποία έδειχνε τα αποτελέσματα αναζήτησης της Inktomi. Στις αρχές του 1999 παρουσίαζε αποτελέσματα από την Inktomi σε συνδυασμό με αποτελέσματα από την Looksmart. Για ένα σύντομο χρονικό διάστημα μέσα στο 1999 παρουσίαζε αποτελέσματα από την AltaVista. Από το 2004 και μετά ξεκίνησε να χρησιμοποιεί την δική της τεχνολογία αναζήτησης. Τα αποτελέσματα για αναζήτηση εικόνων (Image Search) παρέχονταν από την Picsearch. Το 2006 μετονομάστηκε σε Windows Live Search και ξεκίνησε η λειτουργία των δικών της αλγόριθμων αναζήτησης εικόνων. Αργότερα, το 2007, μετονομάστηκε σε Live Search και το 2009 η Microsoft επαναλανσάρισε τη μηχανή αναζήτησης της, με την ονομασία Bing. Η Bing όπως και η Google παρέχει κι άλλες ειδικές λειτουργίες στους χρήστες που περιλαμβάνουν: άμεσα αποτελέσματα για αθλητικούς αγώνες, πληροφορίες για μετοχές, μετατροπές μονάδων, μαθηματικούς υπολογισμούς και τοπική αναζήτηση. Baidu H Baidu [2] Ιδρύθηκε το 2000 από τους Robin Li και Eric Xu. Η εταιρεία προσφέρει ένα μεγάλο φάσμα διαδικτυακών υπηρεσιών και κυρίως μια μηχανή αναζήτησης του διαδικτύου για εικόνες, βίντεο και ιστοσελίδες, η οποία χρησιμοποιεί τα Κινέζικα ως κύρια γλώσσα της. Είναι η πιο διαδεδομένη μηχανή αναζήτησης στην Κίνα. Για τη δημιουργία της Baidu χρησιμοποιήθηκε ένας αλγόριθμος βαθμολόγησης ιστοσελίδων για την κατάταξη αυτών από μηχανή αναζήτησης με την ονομασία RankDex, ο οποίος αναπτύχθηκε το 1996 από τον Robin Li. -15-

20 Η Baidu προσφέρει πολλές λειτουργίες για να εντοπίσει κάποιος πληροφορίες, προϊόντα και υπηρεσίες χρησιμοποιώντας όρους αναζήτησης στην Κινεζική γλώσσα. Μερικές από αυτές είναι: η φωνητική αναζήτηση, τιμές μετοχών, ειδήσεις, πληροφορίες για τον καιρό και δρομολόγια τραίνων και αεροπλάνων. 1.2 Διάρθρωση Πτυχιακής Το υπόλοιπο της παρούσας πτυχιακής διαμορφώνεται ως εξής: Στο 2 ο κεφάλαιο γίνεται αναφορά στο τι είναι το Search Engine Optimization (SEO), στα είδη από τα οποία αποτελείται, αναφορά στους παράγοντες που επηρεάζουν την κατάταξη μιας ιστοσελίδας στα SERPs καθώς και οδηγίες σωστής χρήσης τους. Στο 3 ο κεφάλαιο γίνεται καταγραφή μερικών εργαλείων που μπορούν να βοηθήσουν στο SEO μιας ιστοσελίδας. Στο 4 ο κεφάλαιο γίνεται μια αναφορά στα προγράμματα και τις γλώσσες που χρησιμοποιήθηκαν για την ανάπτυξη του εργαλείου που έχει ως αντικείμενο η πτυχιακή εργασία. Στο 5 ο κεφάλαιο παρουσιάζεται η υλοποίηση του εργαλείου και screenshots των αποτελεσμάτων του. -16-

21 2 Search Engine Optimization Σ αυτό το κεφάλαιο προσδιορίζεται το τι ακριβώς είναι το SEO και αναλύονται οι παράγοντες που παίζουν ρόλο στης κατάταξη μιας ιστοσελίδας στα αποτελέσματα μιας μηχανής αναζήτησης. 2.1 Ορισμός SEO και χρησιμότητα Search Engine Optimization (SEO) είναι ένα σύνολο από τακτικές, στρατηγικές και τεχνικές που μπορεί να χρησιμοποιήσει κάποιος για να βελτιώσει και να προωθήσει την προβολή της ιστοσελίδας του στα οργανικά αποτελέσματα αναζήτησης των μηχανών α- ναζήτησης με σκοπό την μεγαλύτερη επισκεψιμότητα από χρήστες. Μια καλύτερη θέση στα αποτελέσματα αναζήτησης εγγυάται και μεγαλύτερη επισκεψιμότητα άρα και πιθανά κέρδη. Πίνακας 1: Μερίδιο επισκεψιμότητας ανάλογα με τη θέση στα αποτελέσματα αναζήτησης.[36] Google Result Page Rank Average Traffic Share % % % 4 8.1% 5 6.1% 6 4.4% 7 3.5% 8 3.1% 9 2.6% % % % % % % Σε έρευνα που πραγματοποιήθηκε από τις 21 Μαΐου μέχρι τις 27 Μαΐου 2013 από την Chitika[36] σε Καναδά και ΗΠΑ, βλέπουμε ότι η πρώτη θέση των αποτελεσμάτων της Google δέχεται το 32.5% της συνολικής κίνησης, η δεύτερη το 17.6% και όσο πέφτει η θέση στην κατάταξη μειώνεται και η επισκεψιμότητα (Πίνακας 1, Εικόνα 5). -17-

22 Επίσης μεγάλη διαφορά στη κίνηση παρατηρείται και ανάλογα με τη σελίδα των α- ποτελεσμάτων αναζήτησης της Google, η πρώτη σελίδα δέχεται το 91.5% της συνολικής κίνησης ενώ η δεύτερη μόλις το 4.8% (Εικόνα 6) Εικόνα 5: Μερίδιο επισκεψιμότητας ανάλογα με τη θέση στα αποτελέσματα αναζήτησης.[29] Εικόνα 6: Μερίδιο κίνησης ανάλογα με τη σελίδα των αποτελεσμάτων αναζήτησης.[28] Οι μηχανές αναζήτησης χρησιμοποιούν πάρα πολλούς παράγοντες και μεταβλητές που καθορίζουν τη θέση που θα έχει μια ιστοσελίδα στα Search Engine Result Pages (SERPs). Το SEO ως μια στρατηγική Internet marketing εξετάζει το πώς λειτουργούν οι μηχανές αναζήτησης, τι ψάχνουν οι χρήστες στο διαδίκτυο και τι όρους ή λέξεις κλειδιά χρησιμοποιούν, προώθηση της ιστοσελίδας, καθώς και βελτιστοποίηση της ιστοσελίδας τόσο για τις μηχανές αναζήτησης όσο και για τους χρήστες. Η βελτιστοποίηση της ιστοσελίδας μπορεί να γίνει τόσο σε επίπεδο κώδικα όσο και σε επίπεδο περιεχομένου (άρθρα, πληροφορίες) και ονομάζεται On Page SEO. Η προώθηση της ιστοσελίδας στα μέσα -18-

23 κοινωνικής δικτύωσης και η δημιουργία συνδέσμων (link building) πραγματοποιούνται εκτός ιστοσελίδας και ονομάζονται Off Page SEO. 2.2 White Hat vs Black Hat SEO Το SEO περιλαμβάνει μια μεγάλη γκάμα τεχνικών που μπορεί να χρησιμοποιήσει κάποιος. Υπάρχουν οι καλές τεχνικές αλλά και οι κακές, υπάρχουν οι «ηθικές» τεχνικές αλλά και οι «ανήθικες» White Hat SEO Η χρήση καλών και «ηθικών» τεχνικών για την παρουσίαση μιας σελίδας χρήσιμης και ευανάγνωστης για τους χρήστες καθώς και εύκολα προσβάσιμης και κατανοητής από τις μηχανές αναζήτησης, με φυσικό επακόλουθο την καλύτερη κατάταξη της στα SERPs, αναφέρεται ως White Hat SEO. Η χρήση White Hat SEO συμμορφώνεται με τις υποδείξεις και τις οδηγίες των μηχανών αναζήτησης και έχει την έγκριση τους. Τα αποτελέσματα αυτών των τεχνικών χρειάζονται χρόνο για να φανούν αλλά διαρκούν πολλά χρόνια Black Hat SEO Η χρήση κακών, «ανήθικων» και επιθετικών τεχνικών με σκοπό την καλύτερη κατάταξη μιας σελίδας στα SERPs αναφέρεται ως Black Hat SEO. Η χρήση Black Hat SEO δεν ακολουθεί τις υποδείξεις και τις οδηγίες των μηχανών αναζήτησης. Πρόσκαιρα μπορεί να έχει κάποια καλά αποτελέσματα όμως η σελίδα σίγουρα θα τιμωρηθεί αργότερα. Δεν συνίσταται η χρήση αυτών των τεχνικών καθώς μπορεί να είναι καταστροφική για την κατάταξη μιας σελίδας στα SERPs. 2.3 Λέξεις-κλειδιά Ως λέξεις κλειδιά (Keywords) αναφέρονται οι λέξεις ή συνδυασμοί δύο ή περισσότερων λέξεων (Long Tail Keywords) που θα χρησιμοποιήσει κάποιος χρήστης για να ψάξει αυτό που τον ενδιαφέρει στη μηχανή αναζήτησης. Η σωστή επιλογή των κατάλληλων Keywords για μια ιστοσελίδα είναι πολύ σημαντική για την κατάταξη της στα SERPs, την επισκεψιμότητα της και συνεπώς τα έσοδα που μπορεί να αποφέρει. Η χρήση των κατάλληλων Keywords στο περιεχόμενο και στο Title tag μιας ιστοσελίδας είναι οι πιο σημαντικοί παράγοντες για SEO. Επίσης αρκετά σημαντική είναι η -19-

24 ύπαρξη τους στο Description tag, στις επικεφαλίδες (Headings) και ιδιαίτερα στο h1 tag. Σημαντική είναι και η χρήση τους στο URL της σελίδας, στο κείμενο των υπερσυνδέσεων (links) καθώς επίσης και στο img alt attribute Keyword Research Keyword research είναι η διαδικασία που ακολουθεί για να βρεί κάποιος τα κατάλληλα keywords για μια ιστοσελίδα για τα οποία επιθυμεί καλύτερη θέση στα SERPs. Η επιλογή των κατάλληλων keywords εξαρτάται κυρίως από τους παρακάτω παράγοντες: 1) Το περιεχόμενο της ιστοσελίδας. 2) Τον όγκο των αναζητήσεων για το συγκεκριμένο keyword. 3) Τον ανταγωνισμό στα SERPs. 4) Στο κοινό που απευθύνεται η σελίδα (ηλικία, φύλο, γλώσσα, χώρα, ενδιαφέροντα). Εικόνα 7: Google Trends: εξέλιξη ενδιαφέροντος για «hotel Santorini» Τα keywords που θα διαλέξει κάποιος πρέπει να είναι ανάλογα του περιεχομένου της ιστοσελίδας, να έχουν όσο το δυνατόν περισσότερες αναζητήσεις στις μηχανές αναζήτησης, να έχουν όσο το δυνατόν λιγότερο ανταγωνισμό (η χρήση keywords με περισσότερες από 1-2 λέξεις έχει συνήθως μικρό ανταγωνισμό αλλά και όγκο αναζητήσεων) έτσι ώστε να «φέρουν» και περισσότερους χρήστες στη σελίδα. -20-

25 Εικόνα 8: Αναζήτηση στο Google Trends για το keyword «hotel Santorini» - Τοπικό ενδιαφέρον, Συναφείς αναζητήσεις. Εικόνα 9: Αναζήτηση στο Google Keyword Planner για το keyword «hotel Santorini» -21-

26 Ένα από τα δημοφιλέστερα εργαλεία που μπορεί να χρησιμοποιήσει κάποιος για Keyword research είναι το Google Adwords Keyword Planner. Με αυτό το εργαλείο μπορεί κάποιος να αναζητήσει ιδέες για λέξεις κλειδιά, να λάβει στατιστικά στοιχεία ιστορικού, να δεί ποια είναι η πιθανή απόδοση μιας λίστας λέξεων κλειδιών. [43] Στην παρακάτω εικόνα (Εικόνα 9) βλέπουμε τις πληροφορίες που μας δίνει το Google Adwords Keyword Planner για την αναζήτηση του keyword «hotel Santorini». Επίσης ακόμα ένα χρήσιμο εργαλείο είναι το Google Trends όπου μπορεί κάποιος να δεί πληροφορίες για το ενδιαφέρον που έχει κάποιο keyword με την πάροδο του χρόνου (Εικόνα 7), ενδιαφέρον που έχει ανά τόπους και συναφείς λέξεις κλειδιά (Εικόνα 8). 2.4 On Page SEO Ως On Page SEO αναφέρονται οι παράγοντες που μπορούν να βελτιώσουν την κατάταξη μιας ιστοσελίδας στα SERPs και αφορούν τον κώδικα της και το περιεχόμενο της. Δεν αφορούν όμως μόνo τις μηχανές αναζήτησης αλλά κυρίως και την βελτιστοποίηση της εμπειρίας και των πληροφοριών που θα αποκομίσει ο χρήστης από την ιστοσελίδα Page Title Το Title tag είναι ο τίτλος της ιστοσελίδας και είναι πολύ σημαντικός παράγοντας γιατί δείχνει τόσο στις μηχανές αναζήτησης όσο και στους επισκέπτες της σελίδας το τι αυτή πραγματεύεται, το θέμα της. Καλό είναι το Title tag να μην περιέχει πολλούς χαρακτήρες (60-70) για να είναι δυνατή η εμφάνιση ολόκληρου του κειμένου στα SERPs. Είναι πολύ σημαντικό να περιέχει keywords που διαλέξαμε για την συγκεκριμένη σελίδα καθώς και να είναι διαφορετικό, ξεχωριστό για κάθε σελίδα του website (Εικόνα 10). Εικόνα 10: Προεπισκόπηση Google SERP. Title, Description, URL σελίδας Meta Description tag Το Description meta tag είναι η περιγραφή μιας σελίδας, αποτελεί δηλαδή μια μικρή περίληψη του θέματος που αυτή πραγματεύεται. Εμφανίζεται στα SERPs οπότε είναι καλό -22-

27 να περιέχει keywords και να έχει μέγεθος από 70 ως 156 χαρακτήρες. Η χρήση διαφορετικού Description για κάθε σελίδα του ιστότοπου ενδείκνυται (Εικόνα 10) Meta Keywords tag Το Keywords meta tag είναι μια ετικέτα που χρησιμοποιείται για να δηλώσει τις λέξεις κλειδιά που χρησιμοποιεί μια ιστοσελίδα. Παλιότερα χρησιμοποιούνταν από τις μηχανές αναζήτησης για την καλύτερη κατάταξη των ιστοσελίδων στα SERPs αλλά τα τελευταία χρόνια λόγω της κατάχρησης της δεν χρησιμοποιείται καθόλου. Η αξία της είναι πλέον μηδενική για το SEO μιας ιστοσελίδας.[6] URL Structure Τα URLs μιας ιστοσελίδας πρέπει να είναι «φιλικά» και για της μηχανές αναζήτησης και για τους ανθρώπους [32]. Η δημιουργία αυτών των URLs χρησιμοποιώντας λέξεις σχετικές με το περιεχόμενο μιας σελίδας βοηθάει στο καλύτερο crawling των σελίδων από τις μηχανές αναζήτησης αλλά και τη δημιουργία καλύτερων links από χρήστες οι οποίοι θα χρησιμοποιήσουν το URL της σελίδας και ως Anchor Text. Εικόνα 11: Παράδειγμα «καλών» και «κακών» URL [33] Πολύ σημαντικό είναι επίσης να υπάρχει 1 URL ανά σελίδα και όχι περισσότερα, αν υπάρχει πρόσβαση στο ίδιο περιεχόμενο μέσω πολλαπλών διευθύνσεων URL, κάντε ένα -23-

28 301 redirect από τα μη προτιμώμενα URLs προς το προτιμώμενο ή χρησιμοποιείστε το rel= canonical link element. Αποφύγετε τη χρήση: 1) μεγάλων σε μήκος URLs με περιττές παραμέτρους και session IDs. 2) πολύ βαθιάς ιεραρχίας δόμησης. 3) λέξεων ή keywords που δεν έχουν σχέση με το περιεχόμενο της σελίδας. Το URL μιας σελίδας εμφανίζεται στα SERPs οπότε καλό είναι να περιέχει keywords. Αν χρησιμοποιούνται περισσότερες από μια λέξεις καλό είναι να χωρίζονται μόνο από τον χαρακτήρα - και όχι από κάτι άλλο (Εικόνα 10) Navigation Η πλοήγηση μιας ιστοσελίδας είναι πολύ σημαντική για τις μηχανές αναζήτησης[32] αλλά αποτελεί επίσης και μια σημαντική βοήθεια στο να βρει γρήγορα ο χρήστης αυτό που ψάχνει. Φτιάχνοντας μια σωστή ιεραρχία δόμησης των σελίδων του site και κάνοντας σωστή σύνδεση μεταξύ τους, το κάνουμε πιο εύκολα προσβάσιμο και εύχρηστο. Η χρήση Breadcrumbs (Εικόνα 12) και Sitemap διευκολύνει την πλοήγηση του χρήστη όπως και η χρήση μιας 404 error page η οποία να περιέχει links για την προηγούμενη σελίδα ή για άλλες δημοφιλείς σελίδες του site σε περίπτωση σφάλματος HTTP 404. Επίσης σημαντική είναι η δημιουργία ενός XML Sitemap μέσω του οποίου οι μηχανές αναζήτησης ανακαλύπτουν πιο εύκολα τις σελίδες του site και η χρήση keywords στο Anchor Text των links. Πρέπει να αποφεύγετε: 1) η ύπαρξη περισσότερων από 100 links σε μια σελίδα.[24] 2) η πλοήγηση της σελίδας να αποτελείται μόνο από drop-down menus, εικόνες ή animations. Είναι καλύτερα το menu και τα links να αποτελούνται από κείμενο.[32] 3) η ύπαρξη links που δεν οδηγούν πουθενά (broken links) είτε γιατί η σελίδα άλλαξε URL είτε γιατί δεν υπάρχει πια. 4) η πρόσβαση των μηχανών αναζήτησης σε σελίδες που δεν χρειάζεται π.χ. 404 error page. Εικόνα 12: Breadcrumb Navigation. -24-

29 2.4.6 Heading Tags Τα Heading tags είναι οι επικεφαλίδες μιας σελίδας και αποτελούνται από 6 tags τα οποία έχουν διαφορετικό μέγεθος και είναι τα h1,h2,h3,h4,h5,h6. Το πιο σημαντικό είναι το h1 και το λιγότερο σημαντικό είναι το h6. Αυτές οι ετικέτες κάνουν το κείμενο που περικλείουν να εμφανίζεται με μεγαλύτερους σε μέγεθος χαρακτήρες από ότι κανονικά κάνοντας το να φαίνεται πιο σημαντικό. Η ύπαρξη πολλαπλών Heading tags σε ένα κείμενο διατεταγμένα σε σειρά δημιουργεί μια ιεραρχική δομή σ αυτό, καθιστώντας την περιήγηση του χρήστη μέσα στο κείμενο ευκολότερη. [32] (Εικόνα 13) Ενδείκνυται η χρήση keywords μέσα στις επικεφαλίδες καθώς και η χρήση μιας μόνο επικεφαλίδας h1 ανά σελίδα ή οποία να περιέχει μια σύντομη περιγραφή του θέματος της σελίδας όπως έχει π.χ. το title tag αλλά να μην είναι το ίδιο κείμενο. Επίσης είναι σημαντικό η κάθε επικεφαλίδα να έχει διαφορετικό κείμενο από οποιαδήποτε άλλη επικεφαλίδα μέσα στη σελίδα αλλά και τις άλλες σελίδες του site. Εικόνα 13: Επικεφαλίδες διατεταγμένες σε σειρά, δημιουργώντας ιεραρχική δομή Robots.txt Το Robots.txt είναι ένα αρχείο κειμένου που χρησιμοποιεί κάποιος στην ιστοσελίδα του για να αποτρέψει τους web crawlers από το να επισκεφθούν κάποιες σελίδες του που δεν θέλει ή που δεν είναι χρήσιμες αν εμφανιστούν στα SERPs. Η χρήση του δεν είναι υποχρεωτική αλλά είναι μια καλή πρακτική. Το robots.txt πρέπει να τοποθετείται στο main directory της ιστοσελίδας αλλιώς ο web crawler δεν θα το βρει. π.χ Images Οι εικόνες μιας σελίδας είναι ένας παράγοντας που αξίζει να βελτιώσει κάποιος για να πετύχει καλύτερα αποτελέσματα στις μηχανές αναζήτησης. Είναι σημαντικό μια εικόνα σε μια σελίδα να έχει τα παρακάτω χαρακτηριστικά (Εικόνα 14): -25-

30 1) να έχει όνομα αρχείου που να περιγράφει το τι δείχνει η εικόνα, καλή είναι και η χρήση κάποιου σχετικού keyword. 2) η ύπαρξη του alt attribute είναι πολύ σημαντική καθώς εμφανίζει ένα εναλλακτικό κείμενο σε περίπτωση που η εικόνα δεν εμφανιστεί. 3) ο ορισμός των χαρακτηριστικών width και height μιας εικόνας κάνει την εμφάνιση τους από τον browser πιο γρήγορη. 4) το μικρό μέγεθος αρχείου της εικόνας κάνει την εμφάνιση της επίσης πιο γρήγορη. 5) να έχει τύπο αρχείου PNG ή JPG ή GIF. Εικόνα 14: Παράδειγμα Search engine optimized εικόνας Περιεχόμενο Το περιεχόμενο μιας ιστοσελίδας είναι ο πιο σημαντικός παράγοντας για να αποκτήσει χρήστες, φήμη και καλή κατάταξη στα SERPs (όπως είχε αναφέρει ο Bill Gates το 1996 Content is King [15]). Οι πληροφορίες που προσφέρει η σελίδα είναι αυτό που κυρίως ενδιαφέρει τους χρήστες και τις μηχανές αναζήτησης. Η συνεχής προσφορά ποιοτικού και χρήσιμου περιεχομένου φέρνει χρήστες στη σελίδα και δημιουργεί backlinks οπότε είναι ο πιο σημαντικός παράγοντας που βελτιώνει την κατάταξη της στα SERPs. Καλές πρακτικές σχετικά με τη συγγραφή ποιοτικού και χρήσιμου περιεχομένου είναι: 1) η αποφυγή ορθογραφικών και γραμματικών λαθών. -26-

31 2) η σωστή χρήση επικεφαλίδων, παραγράφων και σημείων στίξης. 3) ευανάγνωστο κείμενο με σωστή δομή. 4) φρέσκες (up to date) και το κατά δύναμιν μοναδικές πληροφορίες. 5) η χρήση keywords μέσα στο κείμενο Domain Age Domain age είναι η ηλικία της ιστοσελίδας και φαίνεται να έχει ένα μικρό αντίκτυπο στην εμπιστοσύνη που δείχνει μια μηχανή αναζήτησης προς μία ιστοσελίδα και συνεπώς στην κατάταξη της. Ειδικότερα, μια παλιά ιστοσελίδα που δημιουργήθηκε πριν 5 χρόνια είναι πιθανότερο να περιέχει περισσότερο και ποιοτικότερο περιεχόμενο σε σχέση με μια άλλη που έχει μόνο μερικούς μήνες ζωής Domain Name και TLDs Η χρήση ενός μικρού σε αριθμό χαρακτήρων domain name, με εύκολες λέξεις, το καθιστά ευκολομνημόνευτο από τους χρήστες, αλλά καθώς και η χρήση keywords στο domain name δεν αποτελούν πλέον σημαντικό παράγοντα για τις μηχανές αναζήτησης. Αν το domain name αποτελείται από 2 ή περισσότερες λέξεις καλό είναι να χρησιμοποιείται το σύμβολο dash - για το χωρισμό τους. Τα Top-Level Domains (TLDs) με την κατάληξη.com,.net,.org πρέπει να προτιμώνται καθώς και οι καταλήξεις για τοπικές ιστοσελίδες π.χ..gr,.de. οι οποίες μπορούν να βοηθήσουν μια ιστοσελίδα να έχει καλύτερη κατάταξη στις τοπικές αναζητήσεις. Οι ι- στοσελίδες με τις καταλήξεις.edu και.gov έχουν καλύτερη κατάταξη στα SERPs μιας και χρησιμοποιούνται από πανεπιστήμια και κυβερνητικές ιστοσελίδες αντίστοιχα HTML, CSS Validity Η ύπαρξη σωστού και έγκυρου Ηtml κώδικα και Css έτσι ώστε να αποφεύγονται τα λάθη στην εμφάνιση μιας ιστοσελίδας είναι σημαντικός για τις μηχανές αναζήτησης και τους ανθρώπους. Ο οργανισμός W3C είναι αυτός που καθορίζει την εγκυρότητα τους και δίνει οδηγίες για την σωστή χρήση τους Backlinks Backlink (Inbound Link) ονομάζεται ο υπερσύνδεσμος από μια άλλη ιστοσελίδα προς την ιστοσελίδα μας. -27-

32 Η ποσότητα των backlinks είναι μια ένδειξη της δημοτικότητας και σπουδαιότητας μιας σελίδας και παλιότερα έπαιζε πάρα πολύ σημαντικό ρόλο στην κατάταξη της από τις μηχανές αναζήτησης ιδιαίτερα στην Google. Εκτός από την ποσότητα των backlinks μετράει πάρα πολύ κι από που προέρχονται αυτά. Ένα backlink από μια σελίδα πανεπιστημίου έχει πολύ μεγαλύτερη βαρύτητα από ένα backlink από ένα τυχαίο blog. Επίσης, ένα backlink από μια σελίδα σχετική με τη θεματολογία της δικής μας σελίδας έχει μεγαλύτερη βαρύτητα από μιας σελίδας άσχετης με της δικής μας θεματολογίας. Η συνεχής απόκτηση περισσότερων και ποιοτικότερων, καλύτερων backlinks είναι πολύ σημαντικός παράγοντας SEO Ασφάλεια Η ύπαρξη κακόβουλου λογισμικού π.χ. SQL injection ή άλλα malware αποτελεί κίνδυνο για τους χρήστες μιας σελίδας και τιμωρείται από τις μηχανές αναζήτησης. Η ιστοσελίδα πρέπει να απαλλαχτεί όσο το δυνατόν πιο γρήγορα από τέτοιο λογισμικό. Η χρήση SSL Certificate (Εικόνα 15) σε μια σελίδα για την προστασία σημαντικών δεδομένων, π.χ. αριθμούς πιστωτικών καρτών, επίσης επηρεάζει την κατάταξη της στα SERPs.[22] Εικόνα 15: Πώς λειτουργεί το SSL(απλοποιημένα).[20] -28-

33 Structured Data Η χρήση structured data σε μια ιστοσελίδα βοηθάει τις μηχανές αναζήτησης και τους browsers να παρουσιάσουν μια καλύτερη εμπειρία περιήγησης για τους χρήστες. Οι μηχανές αναζήτησης έχοντας πρόσβαση σ αυτά τα δεδομένα τους επιτρέπει να κατανοήσουν πιο εύκολα τις πληροφορίες που βρίσκονται στη σελίδα και να παρουσιάσουν καλύτερα αποτελέσματα αναζήτησης στους χρήστες.[25] (Εικόνα 16) Οι μηχανές αναζήτησης Google, Bing, Yahoo! και Yandex υποστηρίζουν το λεξιλόγιο schema.org για structured data. Τα δεδομένα από αυτό το λεξιλόγιο μπορούν να ενσωματωθούν στον html κώδικα μιας σελίδας χρησιμοποιώντας οποιαδήποτε από τις ακόλουθες μορφές:[1] 1) Microdata. 2) RDFa. 3) JSON-LD. Structured data μπορούν να χρησιμοποιηθούν για διάφορους τύπους περιεχομένου μιας ιστοσελίδας όπως π.χ. για κριτικές, βιβλία, προϊόντα, εκδηλώσεις, συνταγές(εικόνα 16). Εικόνα 16: Στο πρώτο και τρίτο αποτέλεσμα η ιστοσελίδα χρησιμοποιεί structured data ενώ στο δεύτερο όχι. Η αναζήτηση έγινε στην Google Mobile Optimization Η χρήση φορητών συσκευών (κινητά τηλέφωνα, tablets) για περιήγηση στο Internet συνεχώς αυξάνεται στις μέρες μας οπότε η ανάγκη για mobile friendly ιστοσελίδες είναι -29-

34 μεγαλύτερη (Εικόνα 17). Γι αυτό και η σημασία που έχει μια mobile friendly σελίδα ως παράγοντας καθορισμού της κατάταξης της στα SERPs συνεχώς αυξάνεται.[14] Συμβουλές για τη δημιουργία mobile friendly σελίδων: 1) Responsive Design. 2) Χρήση της meta ετικέτας Viewport. 3) Μη χρήση αρχείων flash. 4) Μη χρήση Pop-Ups. 5) Mobile XML Sitemap. 6) Μεγάλα γράμματα, να διαβάζονται εύκολα σε μια φορητή συσκευή. 7) Μεγάλα κουμπιά ή links, με αρκετό χώρο μεταξύ τους. Εικόνα 17: Χρήση φορητών συσκευών για πλοήγηση στο Internet τον Μάιο 2013 και 2014.[23] Speed Optimization Η ταχύτητα εμφάνισης μιας ιστοσελίδας (εκτέλεση και εμφάνιση κώδικα, φωτογραφιών, κειμένου και άλλου περιεχομένου) παίζει σημαντικό ρόλο τόσο στο να μείνει ευχαριστημένος ο χρήστης της σελίδας όσο και ως παράγοντας που επηρεάζει την κατάταξη της στα SERPs.[4] Ο γενικός κανόνας είναι: Πιο γρήγορα είναι και καλύτερα, για όλους. -30-

35 Συμβουλές για μια πιο γρήγορη ιστοσελίδα: 1) Χρήση των τύπων αρχείου PNG ή JPG ή GIF για τις εικόνες. 2) Μείωση του μεγέθους των εικόνων. 3) Ο ορισμός των χαρακτηριστικών width και height των εικόνων. 4) Μείωση του μεγέθους του Html κώδικα, Javascript και Css π.χ. διαγραφή μη αναγκαίων κενών, χαρακτήρων, σχολίων και κώδικα. 5) Χρήση λογισμικού συμπίεσης αρχείων για μεγάλα αρχεία Html, Javascript και Css π.χ. με τη χρήση του λογισμικού Gzip. 6) Μη χρήση πολλών εξωτερικά αρχεία Css ή Javascript. 7) Καλό είναι να αποφεύγεται η χρήση Inline Styles και Javascript. 8) Χρήση μεθόδων προσωρινής αποθήκευσης (Caching). 9) Αποφυγή της χρήσης πολλών ανακατευθύνσεων (Redirects). 10) Αποφυγή χρήσης εμφωλευμένων πινάκων (Nested Tables). 11) Χρήση CDNs (Content Distribution Networks). 12) Βελτίωση του χρόνου απόκρισης του Server Συνήθη λάθη και κακές τεχνικές On Page SEO Κάποια από τα συνήθη λάθη και κακές τεχνικές που χρησιμοποιούνται από τους διαχειριστές μιας ιστοσελίδας και μπορούν να βλάψουν την κατάταξη της στα SERPs είναι οι ακόλουθες: 1) Η δημοσίευση διπλότυπου - αντιγραμμένου περιεχομένου. Αν μια σελίδα έχει περιεχόμενο ίδιο ή παρόμοιο σε μεγάλο βαθμό με μια άλλη τότε υπάρχει η πιθανότητα να μην συμπεριληφθεί καθόλου στα SERPs. Αν μια μηχανή αναζήτησης έχει ήδη αυτό το περιεχόμενο στο ευρετήριο της δεν θα καταχωρήσει ξανά το ίδιο πράγμα. 2) Υπερβολική χρήση, κατάχρηση των keywords (keyword stuffing) στο περιεχόμενο και στα tags μιας σελίδας π.χ. στα title, description, επικεφαλίδες, anchor text. 3) Η χρήση αόρατου κειμένου, Cloaking και Doorway Pages (Black Hat SEO) με σκοπό την εμφάνιση διαφορετικής σελίδας για τους crawlers και διαφορετικής για τους ανθρώπους. 4) Κακή τοποθέτηση διαφημίσεων που μπορεί να βλάψουν την εύκολη ανάγνωση του περιεχομένου της σελίδας ή την καλή περιήγηση του χρήστη σε αυτήν. -31-

36 5) Η χρήση παράνομου περιεχομένου. 6) Η χρήση frames ή flash σε μια σελίδα. Το περιεχόμενο μέσα στις ετικέτες frame και iframe δεν καταχωρείτε από τις μηχανές αναζήτησης, ενώ και η χρήση flash αρχείων δεν ενδείκνυται για τις περισσότερες μηχανές αναζήτησης. 7) Η χρήση μη υποστηριζόμενων πλέον html tags (Deprecated html tags) π.χ. η χρήση της ετικέτας applet δεν υποστηρίζεται από την HTML 5. 8) Η ύπαρξη περισσότερων από ένα URL για την ίδια σελίδα π.χ. και και χωρίς τη χρήση του rel= canonical ή 301 redirects. 9) Η χρήση underscore _ αντί για dash - σαν διαχωριστικό λέξεων στα URLs και στα ονόματα αρχείων.[5] 10) Η ύπαρξη πληροφοριών σχετικά με τον server και την έκδοση του στο HTTP response header μιας σελίδας (server signature). 2.5 Off Page SEO Ως Off Page SEO αναφέρονται όλες οι τεχνικές και οι τρόποι που μπορεί να χρησιμοποιήσει κάποιος για προωθήσει την ιστοσελίδα του και το περιεχόμενο της στο Internet με σκοπό την αύξηση της επισκεψιμότητας της και τη συσσώρευση backlinks, ώστε αυτά με τη σειρά τους να βοηθήσουν στην καλύτερη κατάταξη της στα SERPs. Όπως λέει και το όνομα τους πραγματοποιούνται εκτός ιστοσελίδας Social Media Η χρήση των social media στις μέρες μας είναι ιδιαίτερα διαδεδομένη με εκατομμύρια χρήστες να διατηρούν κάποιο λογαριασμό στα πολλά social media sites που υπάρχουν (Εικόνα 18). Συνεπώς είναι ένας εύκολος και γρήγορος τρόπος προσέγγισης χρηστών και προώθησης του περιεχομένου μιας ιστοσελίδας. Η δημοτικότητα μιας ιστοσελίδας και του περιεχομένου της στα social media αποτελεί ένα σημαντικό παράγοντα που επηρεάζει και την κατάταξη της στα SERPs. Οι χρήστες των social media αρέσκονται στο να μοιράζονται μεταξύ τους χρήσιμα, ενδιαφέροντα και ενημερωτικά άρθρα, βίντεο και όμορφες φωτογραφίες (Εικόνα 19). Η σωστή χρήση αυτών στο περιεχόμενο μιας ιστοσελίδας και ο διαμοιρασμός τους στα social media μπορεί να έχει πολύ καλό αντίκτυπο στην επισκεψιμότητα και τη δημοτικότητα της. -32-

37 Εικόνα 18: Χρήστες κοινωνικών δικτύων από 2010 ως 2014 και πρόβλεψη μέχρι το 2018.[27] Εικόνα 19: Τι μοιράζονται μεταξύ τους οι χρήστες των social media.[37] Τα social media χωρίζονται σε 6 βασικές κατηγορίες:[31] 1) Social Networks (Κοινωνικά δίκτυα) π.χ. Facebook, LinkedIn, Google

38 2) Social News π.χ. Reddit, Digg 3) Microblogging π.χ. Twitter. 4) Media sharing websites π.χ. YouTube, Flickr, Instagram, Pinterest. 5) Social bookmarking websites π.χ. StumbleUpon, Delicious. 6) Forums και Blogs. Τα δημοφιλέστερα social media στις μέρες μας όπου κάθε ιστοσελίδα και επιχείρηση οφείλει να έχει λογαριασμό και ενεργή παρουσία είναι το Facebook, το Google+, το Twitter και το YouTube. Facebook Το Facebook είναι μια ιστοσελίδα κοινωνικής δικτύωσης με έδρα το Menlo Park της California. Ξεκίνησε τη λειτουργία στις 4 Φεβρουαρίου του 2004 με ιδρυτές τον Mark Zuckerberg και τους συμφοιτητές του εκείνο τον καιρό στο πανεπιστήμιο του Harvard Eduardo Saverin, Andrew McCollum, Dustin Moskovitz και Chris Hughes. Αρχικά, μέλη του κοινωνικού δικτύου μπορούσαν να γίνουν μόνο φοιτητές του Harvard αλλά αργότερα επεκτάθηκε η χρήση του και σε κολλέγια στην περιοχή της Βοστόνης, την Ivy League και το πανεπιστήμιο του Stanford. Σταδιακά επεκτάθηκε η χρήση του και σε άλλα πανεπιστήμια αλλά και σε μαθητές λυκείων. Από το 2006 ο καθένας άνω των 13 ετών μπορεί να γίνει μέλος του κοινωνικού δικτύου. Στις μέρες μας το Facebook έχει περισσότερους από 1,3 δισεκατομμύρια ενεργούς χρήστες όπου και το καθιστά το πιο δημοφιλές κοινωνικό δίκτυο του πλανήτη και τη 2 η πιο δημοφιλή ιστοσελίδα μετά το Google. Τα εγγεγραμμένα μέλη του μπορούν να επικοινωνήσουν μέσω μηνυμάτων με τις επαφές τους, να ανεβάσουν φωτογραφίες, να παίξουν παιχνίδια.[13] Google+ Το Google+ (Google Plus) είναι μια υπηρεσία κοινωνικής δικτύωσης που ανήκει και λειτουργεί υπό την Google. Η Google έχει περιγράψει το Google+ ως ένα "κοινωνικό στρώμα" που βελτιώνει πολλές από την διαδικτυακές υπηρεσίες της, το οποίο δεν είναι απλά μια ιστοσελίδα κοινωνικής δικτύωσης, αλλά είναι επίσης ένα εργαλείο συγγραφικού δικαιώματος που συνδέει περιεχόμενο που βρίσκεται στον Παγκόσμιο Ιστό άμεσα με τον ιδιοκτήτη/συγγραφέα του. Η λειτουργία του ξεκίνησε τον Ιούνιο του 2011 και έχει πάνω από 300 εκατομμύρια ενεργούς χρήστες το μήνα.[19] -34-

39 Twitter Το Twitter είναι μια υπηρεσία κοινωνικής δικτύωσης το οποίο επιτρέπει στου χρήστες του να στέλνουν και να διαβάζουν σύντομα μηνύματα, μέχρι 140 χαρακτήρων, τα οποία ονομάζονται Tweets. Τα μηνύματα μπορούν να αναγνωστούν και από μη συνδεδεμένους χρήστες, αλλά μόνο οι συνδεδεμένοι μπορούν να δημοσιεύσουν κείμενα. Δημιουργήθηκε τον Μάρτιο του 2006 από τους Jack Dorsey, Evan Williams, Biz Stone και Noah Glass και ξεκίνησε την λειτουργία του τον Ιούλιο του ίδιου χρόνου. Στις μέρες μας το Twitter έχει πάνω από 288 εκατομμύρια ενεργούς χρήστες κάθε μήνα.[38] YouTube Το YouTube είναι μια πολύ δημοφιλής ιστοσελίδα η οποία επιτρέπει την αποθήκευση, αναζήτηση και αναπαραγωγή βίντεο. Ιδρύθηκε το Φεβρουάριο του 2005 από τους Steve Chen, Chad Hurley και Jawed Karim. Το Νοέμβριο του 2006 εξαγοράστηκε από την Google. Η έδρα της εταιρίας βρίσκεται στο San Bruno της California. Το περιεχόμενο της ιστοσελίδας περιλαμβάνει βίντεο, τηλεοπτικά κλιπ, μουσικά βίντεο, και άλλο περιεχόμενο, όπως το video blogging καθώς και εκπαιδευτικά βίντεο. Όλοι οι χρήστες μπορούν να παρακολουθήσουν ένα βίντεο στο YouTube αλλά μόνο οι εγγεγραμμένοι χρήστες μπορούν να «ανεβάσουν» τα δικά τους βίντεο, να σχολιάσουν και να επικοινωνήσουν με άλλους εγγεγραμμένους χρήστες. Επίσης τα βίντεο τα οποία θεωρούνται ότι περιέχουν προσβλητικό περιεχόμενο είναι διαθέσιμα μόνο σε εγγεγραμμένους χρήστες που επιβεβαιώνουν ότι είναι άνω των 18 ετών. Περίπου 300 ώρες βίντεο μεταφορτώνονται κάθε λεπτό στο YouTube και επίσης έχει περισσότερους από 1 δισεκατομμύριο χρήστες.[42] Οφέλη χρήσης των Social Media από επιχειρήσεις Η χρήση των Social media από τις επιχειρήσεις μπορεί να αποφέρει πολλά οφέλη:[8] 1) Διεύρυνση της αναγνωρισιμότητας της επιχείρησης. 2) Αυξημένη εμπιστοσύνη από τους πελάτες προς την επιχείρηση. 3) Χτίσιμο καλύτερων σχέσεων με τους πελάτες. 4) Καλύτερη εξυπηρέτηση των πελατών. 5) Περισσότερες ευκαιρίες μετατροπής των χρηστών, που ακολουθούν το λογαριασμό της επιχείρησης στα social media, σε πελάτες. 6) Προσδίδει μεγαλύτερο κύρος στην επιχείρηση. 7) Περισσότερη επισκεψιμότητα για την ιστοσελίδα της. 8) Μείωση του κόστους Marketing. -35-

40 9) Καλύτερη κατάταξη στα SERPs. Επίσης κύριο πλεονέκτημα είναι η δυνατότητα που προσφέρεται στην επιχείρηση να απευθυνθεί σε αγορά τεράστιου μεγέθους, χωρίς γεωγραφικούς περιορισμούς. Επιπλέον η τμηματοποίηση της αγοράς με βάση διάφορα κριτήρια όπως γεωγραφικά, κοινωνικά, δημογραφικά, εθνικά, θρησκευτικά γίνεται πολύ πιο εύκολα, ενώ η «πληροφορία» μεταφέρεται εύκολα και με γρήγορους ρυθμούς.[44] Τα social media προσφέρουν πολλές δυνατότητες στις επιχειρήσεις για την ανάπτυξη τους και παίζουν σημαντικό ρόλο στη δημιουργία μιας ολοκληρωμένης στρατηγικής marketing Directory Submission Το Directory submission είναι μια πρακτική που χρησιμοποιείται από παλιά. Είναι η χειρωνακτική καταχώρηση της ιστοσελίδας σε διάφορους δημοφιλής και έμπιστους (και με μεγάλο PageRank) καταλόγους ιστοσελίδων (Web Directory) με σκοπό την δημιουργία backlinks αλλά και την απόκτηση μεγαλύτερης επισκεψιμότητας. Υπάρχουν πολλά Web Directories στο Internet όμως τα 4 καλύτερα και έμπιστα που να επιτρέπουν την καταχώρηση νέων ιστοσελίδων είναι τα: 1) DMOZ ή αλλιώς Open Directory Project (ODP). Πολύ δημοφιλές και έμπιστο directory.( 2) Yahoo! Directory ή όπως πλέον είναι γνωστό ως Yahoo! Small Business. ( 3) Best of the Web (BotW), ξεκίνησε τη λειτουργία του το ( 4) Starting Point directory. ( Η υπερβολική καταχώρηση της ιστοσελίδας σε αμφιβόλου ποιότητας και εμπιστοσύνης web directories μπορεί να έχει αρνητικά αποτελέσματα για την κατάταξη της στα SERPs Link building Ως Link building αναφέρονται οι τεχνικές που εφαρμόζει κάποιος για την απόκτηση όσο το δυνατόν περισσότερων backlinks για την σελίδα του. Οι κυριότερες αναφέρθηκαν και πιο πάνω και είναι η προσφορά ενδιαφέροντος και χρήσιμο περιεχομένου (εικόνες, βίντεο, άρθρα, infographics κ.α.), χρήση των social media και directory submission. -36-

41 2.5.4 Κακές τεχνικές Off Page SEO Όπως και στο On Page SEO έτσι και στο Off Page υπάρχουν τεχνικές για την προώθηση της ιστοσελίδας οι οποίες μπορεί παλιότερα να λειτουργούσαν αλλά στις μέρες μας μπορούν να βλάψουν σημαντικά την κατάταξη της στα SERPs. Κάποιες από αυτές τις τεχνικές είναι: 1) Η αγορά backlinks. Οι σελίδες που πουλάνε backlinks είναι συνήθως αμφιβόλου ποιότητας και εμπιστοσύνης. 2) Η ανταλλαγή backlinks με άλλες ιστοσελίδες ειδικά αν δεν έχουν καλή φήμη ή άσχετη θεματολογία. 3) Η χρήση Article Directories.[35] 4) Η χρήση λογισμικού για την αυτόματη δημιουργία backlinks από την τοποθέτηση τους σε σχόλια blogs και forums. 5) Η χρήση link farms. 2.6 Local SEO Η βελτιστοποίηση μιας ιστοσελίδας για καλύτερη κατάταξη στις τοπικές αναζητήσεις ονομάζεται Local SEO. Αν υπάρχει φυσική διεύθυνση πίσω από μια online επιχείρηση ή αν ο χώρος δραστηριότητας της είναι συγκεκριμένος π.χ. μόνο στην Ελλάδα και όχι παγκόσμια τότε η βελτιστοποίηση της ιστοσελίδας της για τοπικές αναζητήσεις μπορεί να φέρει περισσότερους πελάτες Google My Business Το Google My Business είναι συνένωση των υπηρεσιών Google Places και Google+ Local Business Pages και ξεκίνησε τη λειτουργία του το 2014.[19] Το Google My Business λειτουργεί συμπληρωματικά με τον υπάρχοντα ιστότοπό σας, δίνοντας στην επιχείρησή σας δημόσια ταυτότητα και παρουσία στα προϊόντα της Google. Τα στοιχεία που καταχωρούνται σχετικά με την επιχείρηση μπορούν να εμφανίζονται στην Αναζήτηση Google, τους Χάρτες και το Google+.[45] Οδηγίες συμπλήρωσης του προφίλ της επιχείρησης Google My Business: 1) Συγγραφή μια σωστής περιγραφής της επιχείρησης. 2) Επιλογή του σωστού τομέα δραστηριοποίησης της. 3) Προσθήκη ακριβών πληροφοριών για το τηλεφωνικό νούμερο, τη διεύθυνση και το όνομα της επιχείρησης (NAP Name, Address, Phone Number). -37-

42 4) Προσθήκη του ωραρίου λειτουργίας της. 5) Προσθήκη πραγματικών κριτικών (reviews) από πελάτες. 6) Επιλογή κατάλληλων και ωραίων φωτογραφιών Local Directories Η καταχώρηση της επιχείρησης σε τοπικά ευρετήρια (local directories) (π.χ. Χρυσός Ο- δηγός - Vrisko - μπορεί να βοηθήσει τους πελάτες της να την εντοπίσουν. Επίσης έτσι μπορεί να αποκτηθούν και μερικά backlinks για την ιστοσελίδα On Page Local SEO Σημαντικός παράγοντας εντός της σελίδας που μπορεί να επηρεάσει την κατάταξη της στις τοπικές αναζητήσεις είναι η ύπαρξη της περιοχής δραστηριοποίησης (π.χ. Εξάρχεια) της επιχείρησης στα εξής μέρη μιας σελίδας: Title, Headings, Description, URL και φυσικά στο Περιεχόμενο. Επίσης η ύπαρξη του NAP, ωραρίου λειτουργίας και άλλων πληροφοριών σχετικών με την επιχείρηση στην ιστοσελίδα είναι καλό να πραγματοποιείται με τη χρήση structured data (Εικόνα 20). Εικόνα 20: Χρήση Microdata για πληροφορίες σχετικές με μια επιχείρηση.[12] -38-

43 3 SEO Tools Υπάρχουν πολλά εργαλεία αυτή τη στιγμή που μπορούν να βοηθήσουν στο SEO μιας ιστοσελίδας είτε επί πληρωμή είτε δωρεάν. Κάποια τρέχουν σαν προγράμματα, άλλα είναι για online χρήση μόνο, άλλα ως plug ins για browsers και άλλα ως πρόσθετα στα διάφορα CMS (Content Management System). 3.1 On Page Optimization Tools Τα On Page SEO tools χωρίζονται σε 2 κατηγορίες. Σ αυτά που βοηθούν στο «στήσιμο» της σελίδας και σ αυτά που βγάζουν κάποιο report σχετικά με διάφορους παράγοντες που επηρεάζουν το SEO μιας σελίδας SEO Tools για το «στήσιμο» σελίδας Τα εργαλεία που μπορούν να βοηθήσουν στο «στήσιμο» μιας σελίδας κάνουν τη ζωή μας πιο εύκολη κάνοντας αυτόματα κάποιες εργασίες για τη σελίδας μας ή βοηθώντας μας να της κάνουμε οι ίδιοι γρηγορότερα. Κάποια τέτοια εργαλεία είναι τα εξής: 1) Δημιουργεί XML sitemap για μια ιστοσελίδα. 2) Δημιουργεί structured data, χρησιμοποιώντας τη μορφή Microdata, εύκολα και γρήγορα. 3) WordPress SEO by Yoast. Κάνει τη ρύθμιση μιας ιστοσελίδας που χρησιμοποιεί το WordPress CMS ευκολότερη και γρηγορότερη. 4) Μας δείχνει πως θα εμφανίζετε το title, το description και το URL της ιστοσελίδας στα SERPs της Google. 5) Ελέγχει για την παρουσία διπλότυπου περιεχομένου στο διαδίκτυο. -39-

44 3.1.2 SEO Report/Audit Tools Τα SEO report tools ελέγχουν μια ιστοσελίδα για κάποιους σημαντικούς παράγοντες που μπορούν να επηρεάσουν την κατάταξη της στα SERPs και εμφανίζουν ένα report για τον ενδιαφερόμενο. Κάποια από αυτά είναι: 1) Xenu s Link Sleuth. Είναι ένα πρόγραμμα που ελέγχει μια ιστοσελίδα για το αν αυτή περιέχει broken links. Ελέγχει όλα τα links που βρίσκονται μέσα στο a tag, τις εικόνες, scripts κ.α. 2) Ελέγχει την ταχύτητα μιας ιστοσελίδας. Επίσης δίνει πληροφορίες για τα αρχεία που περιέχει, redirects κ.α. 3) Google PageSpeed Insights. Ελέγχει την ταχύτητα μιας ιστοσελίδας και δίνει συμβουλές για καλύτερη ταχύτητα. Επίσης ελέγχει και την mobile έκδοση. ( ) 4) Google structured data testing tool. Κάνει επαλήθευση του κώδικα για τα structured data που θα εισάγετε. (Εικόνα 21) ( ) Εικόνα 21: Google structured data testing tool. 5) Screaming Frog. Είναι ένα πρόγραμμα που ελέγχει μια ιστοσελίδα για πολλούς SEO παράγοντες και στο τέλος προσφέρει ένα report που περιέχει πληροφορίες μεταξύ άλλων για Broken links και Server Errors, Redirects, External links, Protocol (HTTP ή HTTPS), Title και Description, Images. ( ) 6) Online SEO report, ελέγχει πολλούς παράγοντες. -40-

45 7) Online SEO report. 8) Open SEO Stats. Πρόσθετο για browsers. (Εικόνα 22) 9) SEOQuake toolbar. Πρόσθετο για browsers. 10) MozBar. Πρόσθετο για browsers. (Εικόνα 23) 11) Google Mobile Friendly test. Έλεγχος συμβατότητας μιας ιστοσελίδας με φορητές συσκευές. ( Εικόνα 22: Open SEO Stats. Εικόνα 23: MozBar. -41-

46 Google Webmaster Tools Το Google Webmaster Tools [17] (GWT) είναι μια δωρεάν υπηρεσία που προσφέρει η Google στους διαχειριστές ιστοσελίδων με σκοπό να την κάνουν πιο φιλική προς τις μηχανές αναζήτησης. Μερικές από τις λειτουργίες που προσφέρει είναι: 1) Υποβολή και έλεγχος του sitemap. 2) Έλεγχος και ρύθμιση του ρυθμού ανίχνευσης (crawl rate) της ιστοσελίδας. 3) Δημιουργία και έλεγχος του robots.txt. 4) Δείχνει τα backlinks αλλά και τις εσωτερικές υπερσυνδέσεις μιας σελίδας. 5) Δείχνει τα broken links, αν υπάρχουν, μιας ιστοσελίδας. 6) Ανάλυση των keywords που έψαξαν και οδήγησαν τους χρήστες στη σελίδα. 7) Προβολή στατιστικών σχετικών με την ευρετηρίαση της ιστοσελίδας από την Google. 8) Εντοπισμός malware στη σελίδα. 9) Έλεγχος των structured data. 10) Έλεγχος και βελτίωση HTML (διπλότυπα title, description tags στις σελίδες). 3.2 Off Page Optimization Tools Τα εργαλεία για Off Page SEO κάνουν ανάλυση των backlinks μιας ιστοσελίδας (π.χ. από ποια σελίδα προέρχονται, anchor text),τον τύπο του backlink (follow, no follow), δίνουν στατιστικά για την παρουσία της σελίδας στα social media. Κάποια από τα πιο γνωστά εργαλεία είναι τα ακόλουθα: 1) Moz Open Site Explorer. ( ) 2) Ahrefs. ( ) 3) Majestic SEO. ( ) 3.3 Web Analytics Τα εργαλεία Web Analytics μετρούν, συλλέγουν, αναλύουν και παρουσιάζουν δεδομένα σχετικά με τη χρήση του διαδικτύου. Τα Off-site web analytics μετρούν και αναλύουν δεδομένα σε σχέση με τη γενικότερη χρήση του διαδικτύου ενώ τα On-site web analytics σχετικά με τη χρήση και τη συμπεριφορά των επισκεπτών σε μια συγκεκριμένη ιστοσελίδα.[39] -42-

47 Τα κυριότερα On-site web analytics είναι: 1) Google Analytics. 2) Clicky. 3) Spring Metrics. 4) Mint. 5) Open Web Analytics. 6) KISSmetrics. Google Analytics Το Google Analytics είναι μια υπηρεσία on-site web analytics που προσφέρεται δωρεάν από την Google. Ξεκίνησε τη λειτουργία του το 2005 και είναι το πιο δημοφιλές web analytic του διαδικτύου.[16](εικόνα 24) Εικόνα 24: Google Analytics. Αναφορά επισκεπτών μιας ιστοσελίδας σε πραγματικό χρόνο. Κάποιες σημαντικές πληροφορίες που προσφέρει στο διαχειριστή μιας ιστοσελίδας είναι: 1) Ο αριθμός των επισκεπτών της ιστοσελίδας σε πραγματικό χρόνο και γενικά. 2) Πόσοι από τους επισκέπτες έρχονται για πρώτη φορά και πόσοι έχουν ξανάρθει. 3) Από που προέρχεται η επισκεψιμότητα της ιστοσελίδας (Search engines, παραπομπές, άμεση). 4) Το μέσο χρόνο που περνούν οι επισκέπτες μέσα στην ιστοσελίδα. 5) Τη χώρα προέλευσης των επισκεπτών. 6) Ποιες σελίδες της ιστοσελίδας έχουν την μεγαλύτερη επισκεψιμότητα. -43-

48 7) Την παρουσία της ιστοσελίδας και των σελίδων της στα social media (Facebook, Google+, Twitter). 8) Το Bounce Rate (ποσοστό αναπήδησης) που είναι το αριθμός των επισκεπτών που φεύγει χωρίς να δει το περιεχόμενο άλλων σελίδων. 9) Πιο browser χρησιμοποιούν οι επισκέπτες. 10) Προβολή των λέξεων ή φράσεων που χρησιμοποίησαν οι επισκέπτες στην αναζήτηση και βρέθηκαν στην ιστοσελίδα. 11) Μετρήσεις σχετικά με οικονομικά στοιχεία της σελίδας (συναλλαγές, έσοδα). 3.4 Social Media Tools Τα Social media tools είναι εργαλεία που συλλέγουν και παρουσιάζουν πληροφορίες σχετικά με την παρουσία μιας ιστοσελίδας και του περιεχομένου της στα social media. Το Social Crawlytics ( ) είναι ένα τέτοιο εργαλείο που σαρώνει και ελέγχει όλες τις σελίδες ενός ιστότοπου και εμφανίζει στατιστικά στοιχεία σχετικά με την δημοτικότητά τους στα social media. 3.5 Keyword Research Tools Τα Keyword research tools είναι εργαλεία που βοηθούν κάποιον να βρει τα κατάλληλα keywords για τη σελίδα του. Μπορούν να προσφέρουν στατιστικά χρήσης ενός keyword στις μηχανές αναζήτησης, συνώνυμα ή παραλλαγές της λέξης ή φράσης. Τα πιο γνωστά και χρήσιμα τέτοια εργαλεία είναι: 1) Google Adwords Keyword Planner. (Εικόνα 9) 2) Google Trends (Εικόνα 7)(Εικόνα 8) 3) Soovle ( Δίνει παραλλαγές ενός keyword όπως εμφανίζονται στις διάφορες μηχανές αναζήτησης. (Εικόνα 25) 4) Ubersuggest ( Δίνει διάφορες παραλλαγές κάποιου keyword. (Εικόνα 26) -44-

49 Εικόνα 25: Αναζήτηση στο Soovle για το keyword hotel santorini. Εικόνα 26: Αναζήτηση στο Ubersuggest για το keyword hotel santorini. -45-

50

51 4 Αντικείμενο Πτυχιακής Το αντικείμενο της πτυχιακής είναι η δημιουργία ενός εργαλείου που να ελέγχει μια ι- στοσελίδα για κάποιες παραμέτρους SEO και να παρουσιάζει μια αναφορά. 4.1 Περιγραφή εργαλείου Το εργαλείο είναι ουσιαστικά ένα SEO Report Tool το οποίο δοθείσης μιας ή περισσότερων διευθύνσεων URL ελέγχει τις σελίδες για κάποιες παραμέτρους SEO και παρουσιάζει μια αναφορά γι αυτές. Η δημιουργία του εργαλείου έγινε με τη χρήση της γλώσσας PHP. Έγινε έρευνα και συλλογή βιβλιοθηκών της PHP που βοηθούν στην υλοποίηση του εργαλείου καθώς και η συγγραφή μιας βιβλιοθήκης που συλλέγει δεδομένα μιας ιστοσελίδας σχετικά με παραμέτρους SEO. 4.2 Γλώσσα και Προγράμματα Σ αυτή την ενότητα θα γίνει αναφορά στη γλώσσα προγραμματισμού και στα προγράμματα που χρησιμοποιήθηκαν PHP Η PHP[30] είναι μια γλώσσα προγραμματισμού που σχεδιάστηκε για την ανάπτυξη ε- φαρμογών διαδικτύου αλλά είναι επίσης και γενικής χρήσης. Χρησιμοποιείται κυρίως για τη δημιουργία ιστοσελίδων με δυναμικό περιεχόμενο. Μια σελίδα PHP περνά από επεξεργασία από ένα συμβατό διακομιστή του Παγκόσμιου Ιστού (π.χ. Apache), ώστε να παραχθεί σε πραγματικό χρόνο το τελικό περιεχόμενο, που θα σταλεί στο πρόγραμμα περιήγησης των επισκεπτών σε μορφή κώδικα Html. Ένα αρχείο με κώδικα PHP θα πρέπει να έχει την κατάλληλη επέκταση (π.χ. *.php, *.php4, *.phtml κ.ά.). Η ενσωμάτωση κώδικα σε ένα αρχείο επέκτασης.html δεν θα λειτουργήσει και θα εμφανίσει στον browser τον κώδικα χωρίς καμία επεξεργασία, εκτός αν έχει γίνει η κατάλληλη ρύθμιση στα MIME types του server. Επίσης ακόμη κι όταν ένα αρχείο έχει την επέκταση.php, -47-

52 θα πρέπει ο server να είναι ρυθμισμένος για να επεξεργάζεται και να μεταγλωτίζει τον κώδικα PHP σε HTML που καταλαβαίνει το πρόγραμμα πελάτη. Η ιστορία της PHP [30] ξεκινά από το 1994, όταν ένας φοιτητής, ο Rasmus Reldorf δημιούργησε χρησιμοποιώντας τη γλώσσα προγραμματισμού Perl ένα απλό script με ό- νομα php.cgi, για προσωπική χρήση. Το script αυτό είχε σαν σκοπό να διατηρεί μια λίστα στατιστικών για τα άτομα που έβλεπαν το online βιογραφικό του σημείωμα. Αργότερα αυτό το script το διέθεσε και σε φίλους του, οι οποίοι άρχισαν να του ζητούν να προσθέσει περισσότερες δυνατότητες. Η γλώσσα τότε ονομαζόταν PHP/FI από τα αρχικά Personal Home Page/Form Interpreter. Το 1997 η PHP/FI έφθασε στην έκδοση 2.0, βασιζόμενη αυτή τη φορά στη γλώσσα C και αριθμώντας περισσότερους από ιστότοπους που τη χρησιμοποιούσαν, ενώ αργότερα την ίδια χρονιά οι Andi Gutmans και Zeev Suraski ξαναέγραψαν τη γλώσσα από την αρχή, βασιζόμενοι όμως αρκετά στην PHP/FI 2.0. Έτσι η PHP έφθασε στην έκδοση 3.0 η οποία θύμιζε περισσότερο τη σημερινή μορφή της. Στη συνέχεια, οι Zeev και Andi δημιούργησαν την εταιρεία Zend (από τα αρχικά των ονομάτων τους), η οποία συνεχίζει μέχρι και σήμερα την ανάπτυξη και εξέλιξη της γλώσσας PHP. Ακολούθησε το 1998 η έκδοση 4 της PHP, τον Ιούλιο του 2004 διατέθηκε η έκδοση 5, ενώ αυτή τη στιγμή έχουν ήδη διατεθεί και οι πρώτες δοκιμαστικές εκδόσεις της επερχόμενης PHP 6, για οποιονδήποτε προγραμματιστή θέλει να τη χρησιμοποιήσει. Οι περισσότεροι ιστότοποι επί του παρόντος χρησιμοποιούν κυρίως τις εκδόσεις 4 και 5 της PHP HTML Η HTML (ακρωνύμιο του αγγλικού Hyper Text Markup Language, ελλ. Γλώσσα Σήμανσης Υπερκειμένου) είναι η κύρια γλώσσα σήμανσης για τις ιστοσελίδες, και τα στοιχεία της είναι τα βασικά δομικά στοιχεία των ιστοσελίδων. Η HTML γράφεται υπό μορφή στοιχείων HTML τα οποία αποτελούνται από ετικέτες (tags ), οι οποίες περικλείονται μέσα σε σύμβολα «μεγαλύτερο από» και «μικρότερο από» (για παράδειγμα <html>), μέσα στο περιεχόμενο της ιστοσελίδας. Οι ετικέτες HTML συνήθως λειτουργούν ανά ζεύγη (για παράδειγμα <h1> και </h1>), με την πρώτη να ονομάζεται ετικέτα έναρξης και τη δεύτερη ετικέτα λήξης (ή σε άλλες περιπτώσεις ε- τικέτα ανοίγματος και ετικέτα κλεισίματος αντίστοιχα). Ανάμεσα στις ετικέτες, οι σχεδιαστές ιστοσελίδων μπορούν να τοποθετήσουν κείμενο, πίνακες, εικόνες κλπ. -48-

53 Ο σκοπός ενός web browser είναι να διαβάζει τα έγγραφα HTML και τα συνθέτει σε σελίδες που μπορεί κανείς να διαβάσει ή να ακούσει. Ο browser δεν εμφανίζει τις ετικέτες HTML, αλλά τις χρησιμοποιεί για να ερμηνεύσει το περιεχόμενο της σελίδας. Τα στοιχεία της HTML χρησιμοποιούνται για να κτίσουν όλους του ιστότοπους. Η HTML επιτρέπει την ενσωμάτωση εικόνων και άλλων αντικειμένων μέσα στη σελίδα, και μπορεί να χρησιμοποιηθεί για να εμφανίσει διαδραστικές φόρμες. Παρέχει τις μεθόδους δημιουργίας δομημένων εγγράφων (δηλαδή εγγράφων που αποτελούνται από το περιεχόμενο που μεταφέρουν και από τον κώδικα μορφοποίησης του περιεχομένου) καθορίζοντας δομικά σημαντικά στοιχεία για το κείμενο, όπως κεφαλίδες, παραγράφους, λίστες, συνδέσμους, παραθέσεις και άλλα. Μπορούν επίσης να ενσωματώνονται σενάρια εντολών σε γλώσσες όπως η Javascript, τα οποία επηρεάζουν τη συμπεριφορά των ιστοσελίδων HTML. Οι Web browsers μπορούν επίσης να αναφέρονται σε στυλ μορφοποίησης CSS για να ορίζουν την εμφάνιση και τη διάταξη του κειμένου και του υπόλοιπου υλικού. Ο οργανισμός W3C, ο οποίος δημιουργεί και συντηρεί τα πρότυπα για την HTML και τα CSS, ενθαρρύνει τη χρήση των CSS αντί διαφόρων στοιχείων της HTML για σκοπούς παρουσίασης του περιεχομένου. [21] XAMPP Το XAMPP [40] είναι ένα πακέτο προγραμμάτων ελεύθερου λογισμικού, λογισμικού α- νοιχτού κώδικα και ανεξαρτήτου πλατφόρμας το οποίο περιέχει τον εξυπηρετητή ιστοσελίδων http Apache, την βάση δεδομένων MySQL και ένα διερμηνέα για κώδικα γραμμένο σε γλώσσες προγραμματισμού PHP και Perl. Το XAMPP είναι ακρωνύμιο και α- ναφέρεται στα παρακάτω αρχικά: X (αναφέρεται στο «cross-platform» που σημαίνει λογισμικό ανεξάρτητο πλατφόρμας), Apache http εξυπηρετητής, MySQL, PHP, PERL.Το XAMPP περιέχει ένα εξυπηρετητή ιστοσελίδων το οποίο μπορεί να εξυπηρετεί και δυναμικές ιστοσελίδες τεχνολογίας PHP/MySQL. Είναι ανεξάρτητο πλατφόρμας και τρέχει σε Microsoft Windows, Linux, Solaris, και Mac OS X και χρησιμοποιείται ως πλατφόρμα για την σχεδίαση και ανάπτυξη ιστοσελίδων με την τεχνολογίες όπως PHP, JSP και Servlets. Το XAMPP προϋποθέτει μόνο τα λογισμικά συμπίεσης αρχείων zip, tar, 7z ή exe κατά την διάρκεια της εγκατάστασης. Το XAMPP έχει δυνατότητα αναβάθμισης σε νέες εκδόσεις του εξυπηρετητή ιστοσελίδων http Apache, της βάσης δεδομένων MySQL, -49-

54 της γλώσσας PHP και Perl. Επίσης συμπεριλαμβάνει τα πακέτα OpenSSLκαι το phpmyadmin. Επίσημα οι σχεδιαστές του XAMPP προόριζαν το λογισμικό ως εργαλείο ανάπτυξης και δοκιμής ιστοσελίδων τοπικά στον υπολογιστή χωρίς να είναι απαραίτητη η σύνδεση στο διαδίκτυο. Για να είναι δυνατή η χρήση του, πολλές σημαντικές λειτουργίες ασφάλειας έχουν απενεργοποιηθεί. Ορισμένες φορές χρησιμοποιείται και για την φιλοξενία ιστοσελίδων NetBeans Το NetBeans είναι μια ανοιχτού κώδικα πλατφόρμα ανάπτυξης λογισμικού γραμμένη σε Java, προορίζεται κυρίως για την ανάπτυξη σε Java αλλά υποστηρίζει και άλλες γλώσσες όπως π.χ. PHP, C/C++, HTML5.[26] (Εικόνα 27) Εικόνα 27: NetBeans IDE. -50-

55 5 Εργαλείο 5.1 Βιβλιοθήκες και Κλάσεις Για την υλοποίηση του εργαλείου χρησιμοποιήθηκαν οι παρακάτω βιβλιοθήκες ή κλάσεις MD_Extract Microdata extractor για php5. Δεν υλοποιήθηκε και δεν τροποποιήθηκε από εμένα κατά κανέναν τρόπο. ( ) SEOstats PHP βιβλιοθήκη που επιστρέφει κάποιες μετρήσεις σχετικές με SEO. Δεν υλοποιήθηκε και δεν τροποποιήθηκε από εμένα κατά κανέναν τρόπο. ( ) Services_W3C_HTMLValidator Συνδέεται με τον Html Validator W3C και επιστρέφει τα αποτελέσματα της επικύρωσης. Δεν υλοποιήθηκε και δεν τροποποιήθηκε από εμένα κατά κανέναν τρόπο. ( ) Phpgraphlib PHP βιβλιοθήκη για τη δημιουργία γραφημάτων. Δεν υλοποιήθηκε και δεν τροποποιήθηκε από εμένα κατά κανέναν τρόπο. ( ) MultiKeywordDensityChecker Κλάση που επέστρεφε αρχικά πίνακα με τα keywords ενός κειμένου και το πόσες φορές εμφανίστηκαν μέσα σ αυτό. ( -51-

56 Τροποποιήθηκε κατάλληλα από εμένα για να βρίσκει τα keywords από μια ιστοσελίδα και όχι από κείμενο, να ελέγχει αν υπάρχουν στα διάφορα tags της σελίδας (title, description, headings) και να επιστρέφει τα αποτελέσματα σε πίνακα. Χρησιμοποιεί επίσης τα εξής αρχεία που πρόσθεσα: Strip_html_tags.php Προστέθηκε από εμένα. Αφαιρεί τα html tags μιας ιστοσελίδας. Δεν υλοποιήθηκε και δεν τροποποιήθηκε από εμένα κατά κανέναν τρόπο. ( ) Strip_punctuation.php Προστέθηκε από εμένα. Αφαιρεί τα σημεία στίξης μιας ιστοσελίδας. Δεν υλοποιήθηκε και δεν τροποποιήθηκε από εμένα κατά κανέναν τρόπο. ( web_page ) Strip_symbols.php Προστέθηκε από εμένα. Αφαιρεί σύμβολα μιας ιστοσελίδας. Δεν υλοποιήθηκε και δεν τροποποιήθηκε από εμένα κατά κανέναν τρόπο. ( b_page ) PHPWhois Βιβλιοθήκη PHP για ερωτήματα Whois. Δεν υλοποιήθηκε και δεν τροποποιήθηκε από εμένα κατά κανέναν τρόπο. ( ) OnPageSeo Βιβλιοθήκη PHP που επιστρέφει πληροφορίες σχετικές με το On-Page SEO μιας σελίδας. Υλοποιήθηκε από εμένα. 5.2 Υλοποίηση Φάκελοι και αρχεία Το εργαλείο αποτελείτε από τους εξής φακέλους και αρχεία (Εικόνα 28): -52-

57 1) MD_Extract-master. Περιέχει τη βιβλιοθήκη MD_Extract. 2) ΜultiKeywordDensityChecker. Περιέχει τη βιβλιοθήκη MultiKeywordDensityChecker. 3) OnPageSeo. Περιέχει τη βιβλιοθήκη OnPageSeo. 4) SEOstats. Περιέχει τη βιβλιοθήκη SEOstats. 5) services. Περιέχει τη βιβλιοθήκη Services_W3C_HTMLValidator. 6) images. Περιέχει εικόνες που χρησιμοποιεί το εργαλείο. 7) phpgraphlib-master. Περιέχει τη βιβλιοθήκη Phpgraphlib. 8) phpwhois Περιέχει τη βιβλιοθήκη PHPWhois. 9) chart.php. Γράφημα για links. 10) chart2.php. Γράφημα για Headings. 11) index.php. Αρχική σελίδα. 12) report.php. Η σελίδα του report του εργαλείου. Εικόνα 28: Φάκελοι και αρχεία MultiKeywordDensityChecker Η κλάση έβρισκε τα keywords από ένα κείμενο καθώς και πόσες φορές εμφανίστηκαν μέσα σ αυτό και περιελάμβανε μόνο το αρχείο MultiKeywordDensityChecker.php. -53-

58 Την τροποποίησα κατάλληλα έτσι ώστε να βρίσκει τα keywords μιας ιστοσελίδας, το πόσες φορές εμφανίστηκαν και το αν χρησιμοποιούνται στο title tag, description tag και headings της σελίδας. Προστέθηκαν τα αρχεία: 1. strip_html_tags.php 2. strip_punctuation.php 3. strip_symbols.php. Τροποποίηση του κώδικα έγινε μόνο στο αρχείο MultiKeywordDensityChecker.php (Εικόνα 29). Η εκκίνηση της κλάσης γίνεται από το παρακάτω κομμάτι κώδικα: include 'MultiKeywordDensityChecker/MultiKeywordDensityChecker.php'; $obj = new KD(); $obj->setstring($lasteffectiveurl); //όπου $LastEffectiveUrl είναι το URL της σελίδας που θέλουμε τα keywords. Ο πίνακας των keywords εκτυπώνεται από την κλάση κατευθείαν με τον παρακάτω κώδικα: $keyworddensity = $obj->keywordssortedarray(); Εικόνα 29: Αρχεία της MultiKeywordDensityChecker. Κώδικας MultiKeywordDensityChecker.php (με τις αλλαγές). <?php class KD{ protected static $domain, $parsedurl, $tld, $wordstring, $keywordsarray, $wordcount, $filterwordsarray, $wordstringfiltered, $dom; private function curl(){ $ch = curl_init(); curl_setopt($ch,curlopt_url,self::$domain); -54-

59 curl_setopt($ch,curlopt_returntransfer,1); curl_setopt($ch,curlopt_connecttimeout,5); $str = curl_exec($ch); return $str; function setstring($url){ require_once('ext/strip_html_tags.php'); require_once('ext/strip_punctuation.php'); require_once('ext/strip_symbols.php'); ); self::$domain=$url; $html=self::curl(self::$domain); $doc = new self::$dom=$doc; self::$wordstring = strip_html_tags( $html); self::$wordstring = html_entity_decode( self::$wordstring, ENT_QUOTES, "utf-8" self::$wordstring = strip_punctuation( self::$wordstring ); self::$wordstring = strip_symbols( self::$wordstring ); self::$wordstring = mb_strtolower( self::$wordstring, "utf-8" ); $parse=str_ireplace(' '', parse_url($url, PHP_URL_HOST)); self::$parsedurl=strstr($parse,'.',true); self::$tld=substr($parse,strpos($parse,'.')+1); self::$filterwordsarray = array( " a ", " about ", " above "," i "," he "," she "," it "," and "," me "," my "," you "," the "," view "," more "," this "," that "," etc "," slide "," width "," height "," with ","http", "www"," of "," to "," in "," on "," at "," an ","forumserver"," two "," one ", "php", "forum","aspx"," now "," - ","amp", " id "," are "," ip ","html"," to ","index","tag","blogspot"," is ","profile"," com "," net "," for ","nbsp","rsaquo","raquo","-","laquo","diams"," s ", from, per, our, και ); self::$wordstringfiltered = str_replace(self::$filterwordsarray, ' ', self::$wordstring, $replacecount); self::$keywordsarray = str_word_count(self::$wordstringfiltered, 1,'αβγδεζηθικλμνξοπρστυφχψωςάέήίόύώ'); self::$wordcount = str_word_count(self::$wordstringfiltered, 0,'αβγδεζηθικλμνξοπρστυφχψωςάέήίόύώ'); function keywordsorting($keywordsarray,$wordcount){ $keywordssorted0 = ''; $keywordssorted1 = ''; $keywordssorted2 = ''; $keywordssorted3 = ''; for ($i = 0; $i < count(self::$keywordsarray); $i++){ if ($i+0 < self::$wordcount){ $keywordssorted0.= self::$keywordsarray[$i].','; -55-

60 if ($i+1 < self::$wordcount){ $keywordssorted1.= self::$keywordsarray[$i].' '.self::$keywordsarray[$i+1].','; if ($i+2 < self::$wordcount){ $keywordssorted2.= self::$keywordsarray[$i].' '.self::$keywordsarray[$i+1].' '.self::$keywordsarray[$i+2].','; if ($i+3 < self::$wordcount){ $keywordssorted3.= self::$keywordsarray[$i].' '.self::$keywordsarray[$i+1].' '.self::$keywordsarray[$i+2].' '.self::$keywordsarray[$i+3].','; for ($i = 0; $i <= 3; $i++){ ${'keywordssorted'.$i = array_filter(explode(',',(${'keywordssorted'.$i))); ${'keywordssorted'.$i = array_count_values(${'keywordssorted'.$i); asort(${'keywordssorted'.$i); arsort(${'keywordssorted'.$i); foreach (${'keywordssorted'.$i as $key => $value){ ${'keywordssorted'.$i[$key] = array($value, number_format((100 / self::$wordcount * $value),2)); return array($keywordssorted0, $keywordssorted1, $keywordssorted2, $keywordssorted3); function keywordssortedarray(){ $keywordssortedarray = self::keywordsorting(self::$keywordsarray,self::$wordcount); $headerarray=self::headers(); $title=self::title(); $description=self::description(); echo '<table border="1" width="50%"> <colgroup> <col class="col1" /> <col class="col2" /> </colgroup> <thead> <tr> <th width="15%">keyword</th><th width="10%">occurrences</th><th width="10%">title</th><th width="10%">description</th><th width="10%">headings</th> </tr> </thead> <tbody>'; $keys0=array_keys($keywordssortedarray[0]); $values0=array_values($keywordssortedarray[0]); for ($i=0;$i<5;$i++){ $key0intitle="<img src=\"images/x.png\">"; $key0indesc="<img src=\"images/x.png\">"; $key0inhflag="<img src=\"images/x.png\">"; for ($j=0;$j<count($headerarray);$j++){ -56-

61 if (stripos($title,$keys0[$i])!== false) $key0intitle="<img src=\"images/tick.png\">"; if (stripos($description,$keys0[$i])!== false) $key0indesc="<img src=\"images/tick.png\">"; if (stripos($headerarray[$j],$keys0[$i])!== false) $key0inhflag="<img src=\"images/tick.png\">"; echo '<tr> <td align="center">'.$keys0[$i].'</td> <td align="center">'.$values0[$i][0].'</td> <td align="center">'.$key0intitle.'</td> <td align="center">'.$key0indesc.'</td> <td align="center">'.$key0inhflag.'</td> </tr>'; echo '</table>'; echo '<table border="1" width="50%"> <colgroup> <col class="col1" /> <col class="col2" /> </colgroup> <thead> <tr> <th width="15%">keyword(2 words)</th><th width="10%">occurrences</th><th width="10%">title</th><th width="10%">description</th><th width="10%">headings</th> </tr> </thead> <tbody>'; $keys1=array_keys($keywordssortedarray[1]); $values1=array_values($keywordssortedarray[1]); for ($i=0;$i<5;$i++){ $key1intitle="<img src=\"images/x.png\">"; $key1indesc="<img src=\"images/x.png\">"; $key1inhflag="<img src=\"images/x.png\">"; for ($j=0;$j<count($headerarray);$j++){ if (stripos($title,$keys1[$i])!== false) $key1intitle="<img src=\"images/tick.png\">"; if (stripos($description,$keys1[$i])!== false) $key1indesc="<img src=\"images/tick.png\">"; if (stripos($headerarray[$j],$keys1[$i])!== false) $key1inhflag="<img src=\"images/tick.png\">"; echo '<tr> <td align="center">'.$keys1[$i].'</td> <td align="center">'.$values1[$i][0].'</td> <td align="center">'.$key1intitle.'</td> <td align="center">'.$key1indesc.'</td> <td align="center">'.$key1inhflag.'</td> </tr>'; echo '</table>'; echo '<table border="1" width="50%"> <colgroup> <col class="col1" /> <col class="col2" /> -57-

62 </colgroup> <thead> <tr> <th width="15%">keyword(3 words)</th><th width="10%">occurrences</th><th width="10%">title</th><th width="10%">description</th><th width="10%">headings</th> </tr> </thead> <tbody>'; $keys2=array_keys($keywordssortedarray[2]); $values2=array_values($keywordssortedarray[2]); for ($i=0;$i<3;$i++){ $key2intitle="<img src=\"images/x.png\">"; $key2indesc="<img src=\"images/x.png\">"; $key2inhflag="<img src=\"images/x.png\">"; for ($j=0;$j<count($headerarray);$j++){ if (stripos($title,$keys2[$i])!== false) $key2intitle="<img src=\"images/tick.png\">"; if (stripos($description,$keys2[$i])!== false) $key2indesc="<img src=\"images/tick.png\">"; if (stripos($headerarray[$j],$keys2[$i])!== false) $key2inhflag="<img src=\"images/tick.png\">"; echo '<tr> <td align="center">'.$keys2[$i].'</td> <td align="center">'.$values2[$i][0].'</td> <td align="center">'.$key2intitle.'</td> <td align="center">'.$key2indesc.'</td> <td align="center">'.$key2inhflag.'</td> </tr>'; echo '</table>'; function headers(){ $h1array=array(); $h2array=array(); $h3array=array(); foreach ($h1 =self::$dom->getelementsbytagname("h1") as $h1s){ if ($h1->length > 0) { $header1 foreach ($h2 =self::$dom->getelementsbytagname("h2") as $h2s){ if ($h2->length > 0) { $header2 foreach ($h3 =self::$dom->getelementsbytagname("h3") as $h3s){ if ($h3->length > 0) { $header3 -58-

63 return function title(){ $list = self::$dom->getelementsbytagname("title"); $title=''; if ($list->length > 0) { $title = $list->item(0)->nodevalue; return $title; function description(){ $metas =self::$dom->getelementsbytagname('meta'); $description=''; for ($i = 0; $i < $metas->length; $i++) { $meta = $metas->item($i); if($meta->getattribute('name') == 'description') $description = $meta->getattribute('content'); return $description; OnPageSeo Η εκκίνηση της βιβλιοθήκης γίνεται από το παρακάτω κομμάτι κώδικα: require_once DIR. DIRECTORY_SEPARATOR. 'OnPageSeo'. DIRECTORY_SEPARATOR. 'boostrap.php'; $onpageseo = new \OnPageSeo\OnPageSeo; $onpageseo->seturl($lasteffectiveurl); //όπου $LastEffectiveUrl είναι το URL της σελίδας. Παραδείγματα χρήσης: echo \OnPageSeo\Methods\Title::getTitle(); //εμφανίζει τον τίτλο της σελίδας. echo \OnPageSeo\Methods\Metas::getDescription(); //εμφανίζει την περιγραφή της σελίδας. echo \OnPageSeo\Methods\Misc::GetServerSignature(); //εμφανίζει το server signature. echo \OnPageSeo\Methods\Mobile::FlashFiles(); //εμφανίζει τον αριθμό flash αρχείων της σελίδας. print_r (\OnPageSeo\Methods\Images::getImagesWithoutAlt()); //εμφανίζει πίνακα με τις εικόνες που δεν έχουν alt attribute. print_r (\OnPageSeo\Methods\Links::GetLinks()); //εμφανίζει πίνακα με όλα τα links της σελίδας. print_r (\OnPageSeo\Methods\Links::GetExternalLinks()); //εμφανίζει πίνακα με τα εξωτερικά links της σελίδας. Φάκελοι και αρχεία Περιλαμβάνει τα αρχεία AutoLoader.php, Css.php, Headers.php, Images.php, Links.php, MapBot.php, Metas.php, Misc.php, Mobile.php, Title.php, URLs.php, OnPageSeo.php, bootstrap.php. (Εικόνα 30) -59-

64 Εικόνα 30: Φάκελοι και αρχεία της OnPageSeo. bootstrap.php <?php namespace OnPageSeo; require_once 'OnPageSeo/Loader/AutoLoader.php'; $autoloader = new \OnPageSeo\Loader\AutoLoader( NAMESPACE, dirname( DIR )); $autoloader->register(); AutoLoader.php Register των κλάσεων της βιβλιοθήκης. <?php namespace OnPageSeo\Loader; class AutoLoader { public function register() { include 'OnPageSeo/OnPageSeo.php'; include 'OnPageSeo/Methods/Css.php'; include 'OnPageSeo/Methods/Headers.php'; include 'OnPageSeo/Methods/Images.php'; include 'OnPageSeo/Methods/Links.php'; include 'OnPageSeo/Methods/MapBot.php'; include 'OnPageSeo/Methods/Metas.php'; include 'OnPageSeo/Methods/Misc.php'; include 'OnPageSeo/Methods/Mobile.php'; include 'OnPageSeo/Methods/Title.php'; include 'OnPageSeo/Methods/URLs.php'; -60-

65 OnPageSeo.php <?php namespace OnPageSeo; class OnPageSeo { protected static $_url, $_host, $doc, $homeurl, $htmlstring; public static function geturl($url = false) { $url = self::$_url; return $url; public static function getdomain($url) { $pieces = parse_url($url); $domain = isset($pieces['host'])? $pieces['host'] : ''; if (preg_match('/(?p<domain>[a-z0-9][a-z0-9\-]{1,63\.[a-z\.]{2,6)$/i', $domain, $regs)) { return $regs['domain']; return false; public function seturl($url) { self::$_url = $url; self::$_host = self::getdomain(self::$_url); self::$homeurl = self::homeurl(self::$_url); self::$htmlstring = self::getpage(self::$_url); self::$doc = self::getdomdocument(); public static function homeurl($url) { $parsedurl = parse_url($url); $scheme = isset($parsedurl['scheme'])? $parsedurl['scheme']. '://' : ''; $host = isset($parsedurl['host'])? $parsedurl['host'] : ''; return "$scheme$host"; public static function GetPage($url) { $curl = curl_init($url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); $content = curl_exec($curl); curl_close($curl); return $content; public static function getdomdocument() = self::geturl($url); $dom = new 'UTF-8')); return $dom; public static function NoDataMsg() { -61-

66 return ''; Css.php Περιλαμβάνει τις συναρτήσεις: 1) Css. Βρίσκει και επιστρέφει αριθμό των css και print-friendly css σε πίνακα. 2) InlineCss. Ελέγχει για inline styles και επιστρέφει τον αριθμό τους. <?php namespace OnPageSeo\Methods; use OnPageSeo\OnPageSeo as OnPageSeo; class Css extends OnPageSeo { -62- public static function Css() { $csscount = 0; $cssprint = 0; foreach ($css = parent::$doc->getelementsbytagname('link') as $css1) = = $css1->getattribute('media'); if (@$cssrel == = $csscount + 1; if (@$cssprintmedia == = $cssprint + 1; = $css1->getattribute('href'); $domain = parent::$homeurl; if (strpos($csshref, $domain) == False) ($csshrefnew = = parent::getpage($csshrefnew); if (strpos(@$css2, '@media print')!== False) $cssprint = $cssprint + 1; return array('csscount' => $csscount, 'PrintCss' => $cssprint); public static function InlineCss() { $inlinecss = 0; foreach ($element = parent::$doc->getelementsbytagname('*') as $elements) { if ($elements->hasattribute('style')) $inlinecss = $inlinecss + 1; return $inlinecss; Headers.php Περιλαμβάνει τις συναρτήσεις: 1) GetH1heads. Βρίσκει και επιστρέφει τα h1 tags σε πίνακα. 2) GetH2heads. Βρίσκει και επιστρέφει τα h2 tags σε πίνακα. 3) GetH3heads. Βρίσκει και επιστρέφει τα h3 tags σε πίνακα. 4) GetH4heads. Βρίσκει και επιστρέφει τα h4 tags σε πίνακα. 5) GetH5heads. Βρίσκει και επιστρέφει τα h5 tags σε πίνακα.

67 6) GetH6heads. Βρίσκει και επιστρέφει τα h6 tags σε πίνακα. <?php namespace OnPageSeo\Methods; use OnPageSeo\OnPageSeo as OnPageSeo; class Headers extends OnPageSeo { public static function GetH1heads() { $h1array = array(); foreach ($h1 = parent::$doc->getelementsbytagname("h1") as $h1s) { if ($h1->length > 0) { $header1 = = $header1; return $h1array; public static function GetH2heads() { $h2array = array(); foreach ($h2 = parent::$doc->getelementsbytagname("h2") as $h2s) { if ($h2->length > 0) { $header2 = = $header2; return $h2array; public static function GetH3heads() { $h3array = array(); foreach ($h3 = parent::$doc->getelementsbytagname("h3") as $h3s) { if ($h3->length > 1) { $header3 = = $header3; return $h3array; public static function GetH4heads() { $h4array = array(); foreach ($h4 = parent::$doc->getelementsbytagname("h4") as $h4s) { if ($h4->length > 1) { $header4 = = $header4; return $h4array; public static function GetH5heads() { $h5array = array(); foreach ($h5 = parent::$doc->getelementsbytagname("h5") as $h5s) { if ($h5->length > 1) { $header5 = = $header5; return $h5array; -63-

68 public static function GetH6heads() { $h6array = array(); foreach ($h6 = parent::$doc->getelementsbytagname("h6") as $h6s) { if ($h6->length > 1) { $header6 = = $header6; return $h6array; Images.php Περιλαμβάνει τις συναρτήσεις: 1) GetImages. Επιστρέφει πίνακα με τις εικόνες. 2) GetImagesWithoutAlt. Επιστρέφει πίνακα με τις εικόνες χωρίς alt attribute. 3) GetImagesWithoutDimensions. Επιστρέφει πίνακα με τις εικόνες χωρίς height και width. <?php namespace OnPageSeo\Methods; use OnPageSeo\OnPageSeo as OnPageSeo; class Images extends OnPageSeo { public static function GetImages() { $images = array(); $img = parent::$doc->getelementsbytagname('img'); foreach ($img as $image) { $imgsrc = $image->getattribute('src'); if (strlen($imgsrc) > 0) { $images[] = $imgsrc; return $images; public static function GetImagesWithoutAlt() { $imgwithoutalt = array(); $img = parent::$doc->getelementsbytagname('img'); foreach ($img as $image) { $imgsrc = $image->getattribute('src'); if (strlen($imgsrc) > 0) { $imgalt = $image->getattribute('alt'); if (\strlen($imgalt) < 1) $imgwithoutalt[] = $imgsrc; return $imgwithoutalt; public static function GetImagesWithoutDimensions() { $imgwithoutdimensions = array(); -64-

69 $img = parent::$doc->getelementsbytagname('img'); foreach ($img as $image) { $imgsrc = $image->getattribute('src'); if (strlen($imgsrc) > 0) { $imgheight = $image->getattribute('height'); $imgwidth = $image->getattribute('width'); if (\strlen($imgheight) < 1 && \strlen($imgwidth) < 1) $imgwithoutdimensions[] = $imgsrc; return $imgwithoutdimensions; Links.php Περιλαμβάνει τις συναρτήσεις: 1) GetLinks. Επιστρέφει πίνακα με τα links. 2) GetExternalLinks. Επιστρέφει πίνακα με τα εξωτερικά links. 3) GetInternalLinks. Επιστρέφει πίνακα με τα εσωτερικά links. 4) GetBrokenLinks. Επιστρέφει πίνακα με τα broken links. Έλεγχος ) GetBrokenLinksMass. Επιστρέφει πίνακα με τα broken links. Έλεγχος πολλών links ταυτόχρονα. 6) checkurl. Βρίσκει το http status code ενός URL. 7) isinternal. Βρίσκει αν το link είναι εσωτερικό. 8) checkurlmass. Βρίσκει το http status code για πολλά URLs ταυτόχρονα. <?php namespace OnPageSeo\Methods; use OnPageSeo\OnPageSeo as OnPageSeo; class Links extends OnPageSeo { public static function GetLinks() { $link = array(); foreach ($links = parent::$doc->getelementsbytagname('a')as $tag) { $href = $tag->getattribute('href'); if (strlen($href) >= 1) $link[] = array('url' => $href, 'Anchor text' => $tag->nodevalue); return $link; public static function GetExternalLinks() { $external = array(); foreach ($links = parent::$doc->getelementsbytagname('a')as $tag) { $href = $tag->getattribute('href'); if (strlen($href) >= 1) { if (self::isinternal($href) == false) { $rel = $tag->getattribute('rel'); if (empty($rel)) { $rel = 'follow'; $external[] = array('url' => $href, 'Anchor text' => $tag->node- Value, 'rel' => $rel); -65-

70 return $external; public static function GetInternalLinks() { $internal = array(); if (substr(parent::$_url, -1) == '/') $linksurltrim = substr(parent::$_url, 0, -1); $linksurltrim = parent::$_url; foreach ($links = parent::$doc->getelementsbytagname('a')as $tag) { $href = $tag->getattribute('href'); if (strlen($href) >= 1) { if (self::isinternal($href)) { $rel = $tag->getattribute('rel'); if (empty($rel)) { $rel = 'follow'; $hrefa = str_replace($linksurltrim, "", $href); $internal[] = array('url' => $hrefa, 'Anchor text' => $tag->node- Value, 'rel' => $rel); return $internal; public static function GetBrokenLinks() { $brokenlink = array(); foreach ($links = parent::$doc->getelementsbytagname('a')as $tag) { $href = $tag->getattribute('href'); if (strlen($href) >= 1) $httpstatuscode = self::checkurl($href); if ($httpstatuscode == 404) $brokenlink[] = array('url' => $href, 'http status' => $httpstatuscode); return $brokenlink; public static function GetBrokenLinksMass() { $link = array(); foreach ($links = parent::$doc->getelementsbytagname('a')as $tag) { $href = $tag->getattribute('href'); if (strlen($href) >= 1) { $host = parent::$_host; if (strpos($href, "/") == '0') { $href = "$host$href"; $link[] = $href; return self::checkurlmass($link); private static function checkurl($url) { $host = parent::$_host; if (strpos($url, "/") == '0') { $url = "$host$url"; -66-

71 $handle = curl_init($url); curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($handle, CURLOPT_HTTPHEADER, array("accept: application/rdf+xml")); curl_setopt($handle, CURLOPT_NOBODY, true); curl_exec($handle); $httpcode = curl_getinfo($handle, CURLINFO_HTTP_CODE); return $httpcode; private static function isinternal($url) { if (strstr($url, parent::$homeurl)!== false strpos($url, "/") == '0') return true; return false; private static function checkurlmass($links) { $agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"; $curl_arr = array(); $codes1 = array(); $codes2 = array(); $codes3 = array(); $codes4 = array(); $codes5 = array(); $codes6 = array(); $codes7 = array(); $codes8 = array(); $codes9 = $links1, $links2, $links3, $links4, $links5, $links6, $links7, $links8, $links9 ) = array_chunk($links, ceil(count($links) / 9)); //Links1 $mh = curl_multi_init(); for ($i = 0; $i < count($links1); $i++) { $url = $links1[$i]; $curl_arr[$i] = curl_init($url); curl_setopt($curl_arr[$i], CURLOPT_URL, $url); curl_setopt($curl_arr[$i], CURLOPT_USERAGENT, $agent); curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl_arr[$i], CURLOPT_NOBODY, true); curl_setopt($curl_arr[$i], CURLOPT_TIMEOUT, 60); curl_multi_add_handle($mh, $curl_arr[$i]); $running = null; do { curl_multi_exec($mh, $running); while ($running > 0); for ($i = 0; $i < count($links1); $i++) { $httpcode = curl_getinfo($curl_arr[$i], CURLINFO_HTTP_CODE); if ($httpcode == 404) $codes1[$i] = array('url' => $links1[$i], 'http status' => $httpcode); curl_multi_remove_handle($mh, $curl_arr[$i]); curl_multi_close($mh); //Links2 $mh = curl_multi_init(); for ($i = 0; $i < count($links2); $i++) { -67-

72 $url = $links2[$i]; $curl_arr[$i] = curl_init($url); curl_setopt($curl_arr[$i], CURLOPT_URL, $url); curl_setopt($curl_arr[$i], CURLOPT_USERAGENT, $agent); curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl_arr[$i], CURLOPT_NOBODY, true); curl_setopt($curl_arr[$i], CURLOPT_TIMEOUT, 60); curl_multi_add_handle($mh, $curl_arr[$i]); $running = null; do { curl_multi_exec($mh, $running); while ($running > 0); for ($i = 0; $i < count($links2); $i++) { $httpcode = curl_getinfo($curl_arr[$i], CURLINFO_HTTP_CODE); if ($httpcode == 404) $codes2[$i] = array('url' => $links2[$i], 'http status' => $httpcode); curl_multi_remove_handle($mh, $curl_arr[$i]); curl_multi_close($mh); //Links3 $mh = curl_multi_init(); for ($i = 0; $i < count($links3); $i++) { $url = $links3[$i]; $curl_arr[$i] = curl_init($url); curl_setopt($curl_arr[$i], CURLOPT_URL, $url); curl_setopt($curl_arr[$i], CURLOPT_USERAGENT, $agent); curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl_arr[$i], CURLOPT_NOBODY, true); curl_setopt($curl_arr[$i], CURLOPT_TIMEOUT, 60); curl_multi_add_handle($mh, $curl_arr[$i]); $running = null; do { curl_multi_exec($mh, $running); while ($running > 0); for ($i = 0; $i < count($links3); $i++) { $httpcode = curl_getinfo($curl_arr[$i], CURLINFO_HTTP_CODE); if ($httpcode == 404) $codes3[$i] = array('url' => $links3[$i], 'http status' => $httpcode); curl_multi_remove_handle($mh, $curl_arr[$i]); curl_multi_close($mh); //Links4 $mh = curl_multi_init(); for ($i = 0; $i < count($links4); $i++) { $url = $links4[$i]; $curl_arr[$i] = curl_init($url); curl_setopt($curl_arr[$i], CURLOPT_URL, $url); curl_setopt($curl_arr[$i], CURLOPT_USERAGENT, $agent); -68-

73 curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl_arr[$i], CURLOPT_NOBODY, true); curl_setopt($curl_arr[$i], CURLOPT_TIMEOUT, 60); curl_multi_add_handle($mh, $curl_arr[$i]); $running = null; do { curl_multi_exec($mh, $running); while ($running > 0); for ($i = 0; $i < count($links4); $i++) { $httpcode = curl_getinfo($curl_arr[$i], CURLINFO_HTTP_CODE); if ($httpcode == 404) $codes4[$i] = array('url' => $links4[$i], 'http status' => $httpcode); curl_multi_remove_handle($mh, $curl_arr[$i]); curl_multi_close($mh); //Links5 $mh = curl_multi_init(); for ($i = 0; $i < count($links5); $i++) { $url = $links5[$i]; $curl_arr[$i] = curl_init($url); curl_setopt($curl_arr[$i], CURLOPT_URL, $url); curl_setopt($curl_arr[$i], CURLOPT_USERAGENT, $agent); curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl_arr[$i], CURLOPT_NOBODY, true); curl_setopt($curl_arr[$i], CURLOPT_TIMEOUT, 60); curl_multi_add_handle($mh, $curl_arr[$i]); $running = null; do { curl_multi_exec($mh, $running); while ($running > 0); for ($i = 0; $i < count($links5); $i++) { $httpcode = curl_getinfo($curl_arr[$i], CURLINFO_HTTP_CODE); if ($httpcode == 404) $codes5[$i] = array('url' => $links5[$i], 'http status' => $httpcode); curl_multi_remove_handle($mh, $curl_arr[$i]); curl_multi_close($mh); //Links6 $mh = curl_multi_init(); for ($i = 0; $i < count($links6); $i++) { $url = $links6[$i]; $curl_arr[$i] = curl_init($url); curl_setopt($curl_arr[$i], CURLOPT_URL, $url); curl_setopt($curl_arr[$i], CURLOPT_USERAGENT, $agent); curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl_arr[$i], CURLOPT_NOBODY, true); curl_setopt($curl_arr[$i], CURLOPT_TIMEOUT, 60); curl_multi_add_handle($mh, $curl_arr[$i]); -69-

74 $running = null; do { curl_multi_exec($mh, $running); while ($running > 0); for ($i = 0; $i < count($links6); $i++) { $httpcode = curl_getinfo($curl_arr[$i], CURLINFO_HTTP_CODE); if ($httpcode == 404) $codes6[$i] = array('url' => $links6[$i], 'http status' => $httpcode); curl_multi_remove_handle($mh, $curl_arr[$i]); curl_multi_close($mh); //Links7 $mh = curl_multi_init(); for ($i = 0; $i < count($links7); $i++) { $url = $links7[$i]; $curl_arr[$i] = curl_init($url); curl_setopt($curl_arr[$i], CURLOPT_URL, $url); curl_setopt($curl_arr[$i], CURLOPT_USERAGENT, $agent); curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl_arr[$i], CURLOPT_NOBODY, true); curl_setopt($curl_arr[$i], CURLOPT_TIMEOUT, 60); curl_multi_add_handle($mh, $curl_arr[$i]); $running = null; do { curl_multi_exec($mh, $running); while ($running > 0); for ($i = 0; $i < count($links7); $i++) { $httpcode = curl_getinfo($curl_arr[$i], CURLINFO_HTTP_CODE); if ($httpcode == 404) $codes7[$i] = array('url' => $links7[$i], 'http status' => $httpcode); curl_multi_remove_handle($mh, $curl_arr[$i]); curl_multi_close($mh); //Links8 $mh = curl_multi_init(); for ($i = 0; $i < count($links8); $i++) { $url = $links8[$i]; $curl_arr[$i] = curl_init($url); curl_setopt($curl_arr[$i], CURLOPT_URL, $url); curl_setopt($curl_arr[$i], CURLOPT_USERAGENT, $agent); curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl_arr[$i], CURLOPT_NOBODY, true); curl_setopt($curl_arr[$i], CURLOPT_TIMEOUT, 60); curl_multi_add_handle($mh, $curl_arr[$i]); $running = null; do { curl_multi_exec($mh, $running); -70-

75 while ($running > 0); for ($i = 0; $i < count($links8); $i++) { $httpcode = curl_getinfo($curl_arr[$i], CURLINFO_HTTP_CODE); if ($httpcode == 404) $codes8[$i] = array('url' => $links8[$i], 'http status' => $httpcode); curl_multi_remove_handle($mh, $curl_arr[$i]); curl_multi_close($mh); //Links9 $mh = curl_multi_init(); for ($i = 0; $i < count($links9); $i++) { $url = $links9[$i]; $curl_arr[$i] = curl_init($url); curl_setopt($curl_arr[$i], CURLOPT_URL, $url); curl_setopt($curl_arr[$i], CURLOPT_USERAGENT, $agent); curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl_arr[$i], CURLOPT_NOBODY, true); curl_setopt($curl_arr[$i], CURLOPT_TIMEOUT, 60); curl_multi_add_handle($mh, $curl_arr[$i]); $running = null; do { curl_multi_exec($mh, $running); while ($running > 0); for ($i = 0; $i < count($links9); $i++) { $httpcode = curl_getinfo($curl_arr[$i], CURLINFO_HTTP_CODE); if ($httpcode == 404) $codes9[$i] = array('url' => $links9[$i], 'http status' => $httpcode); curl_multi_remove_handle($mh, $curl_arr[$i]); curl_multi_close($mh); return array_merge($codes1, $codes2, $codes3, $codes4, $codes5, $codes6, $codes7, $codes8, $codes9); MapBot.php Περιλαμβάνει τις συναρτήσεις: 1) Sitemap. Ελέγχει την ύπαρξη Sitemap και επιστρέφει string. 2) Robots. Ελέγχει την ύπαρξη Robots.txt και επιστρέφει string. <?php namespace OnPageSeo\Methods; use OnPageSeo\OnPageSeo as OnPageSeo; use OnPageSeo\Methods\Links as Links; class MapBot extends OnPageSeo { -71-

76 public static function Sitemap() { $url = parent::$homeurl; IF (SUBSTR(@$url, -1)!= '/') '/'; $sitemappos = (strlen($url)) + 1; $addsitemap = "sitemap.php"; $sitemapurl = substr($url, 0, $sitemappos). = Links::checkurl($sitemapurl); if ($exists == 200) { return 'Your Sitemap is fine.'; { $addsitemap = "sitemap.xml"; $sitemapurl = substr($url, 0, $sitemappos). = Links::checkurl($sitemapurl); if ($exists == 200) { return 'Your Sitemap is fine.'; { $robotpos = (strlen($url)) + 1; $addrobots = "robots.txt"; $roboturl = substr($url, 0, $robotpos). = Links::checkurl($roboturl); if ($existsrobot == = parent::getpage($roboturl); if (strpos(@$robotfile, 'Sitemap')!== false) return 'Your Sitemap is fine.'; return 'No Sitemap.'; public static function Robots() { $url = parent::$homeurl; IF (SUBSTR(@$url, -1)!= '/') '/'; $robotspos = (strlen($url)) + 1; $addrobots = "robots.txt"; $roboturl = substr($url, 0, $robotspos). = Links::checkurl($roboturl); if ($existsrobot == 200) { return "Your Robots.txt is fine."; return 'Your site does not have a Robots.txt file.'; Metas.php Περιλαμβάνει τις συναρτήσεις: 1) getdescription. Επιστρέφει τα περιεχόμενα του description meta tag σαν string. 2) getkeywords. Επιστρέφει τα περιεχόμενα του keywords meta tag σαν string. <?php namespace OnPageSeo\Methods; -72-

77 use OnPageSeo\OnPageSeo as OnPageSeo; class Metas extends OnPageSeo { public static function getdescription() { $metas = parent::$doc->getelementsbytagname('meta'); $description = ''; for ($i = 0; $i < $metas->length; $i++) { $meta = $metas->item($i); if ($meta->getattribute('name') == 'description') $description = $meta->getattribute('content'); return $description; public static function getkeywords() { $metas = parent::$doc->getelementsbytagname('meta'); for ($i = 0; $i < $metas->length; $i++) { $meta = $metas->item($i); if ($meta->getattribute('name') == 'keywords') $metakeywords = $meta->getattribute('content'); if (isset($metakeywords)) return $metakeywords; return parent::nodatamsg(); Misc.php Περιλαμβάνει τις συναρτήσεις: 1) getscripts. Επιστρέφει πίνακα με τα συνολικά scripts και inline scripts. 2) getframes. Επιστρέφει τον αριθμό των frames αν υπάρχουν. 3) getfavicon. Επιστρέφει το Favicon. 4) gethtmlpagesize. Επιστρέφει το μέγεθος της html της σελίδας. 5) getlanguage. Επιστρέφει τη γλώσσα της σελίδας αν έχει δηλωθεί. 6) GetEncoding. Επιστρέφει το encoding της σελίδας αν έχει δηλωθεί. 7) TextToHtmlRatio. Επιστρέφει το λόγο κειμένου προς html. 8) GetPublisher. Επιστρέφει τον Google+ Publisher αν έχει δηλωθεί. 9) DeprecatedHtml.Ελέγχει αν χρησιμοποιούνται Deprecated html tags στη σελίδα, επιστρέφει πίνακα. 10) GetServerSignature. Ελέγχει και επιστρέφει το server signature αν υπάρχει. 11) SSL. Ελέγχει αν υπάρχει SSL και επιστρέφει πίνακα με στοιχεία. 12) GoogleAnalytics. Ελέγχει αν χρησιμοποιούνται Google Analytics, επιστρέφει boolean. <?php namespace OnPageSeo\Methods; use OnPageSeo\OnPageSeo as OnPageSeo; class Misc extends OnPageSeo { public static function getscripts() { $scriptcounter = 0; -73-

78 { $extscripts = 0; $scriptarray = array(); foreach ($scriptlist = parent::$doc->getelementsbytagname("script") as $script) $scriptcounter = $scriptcounter + 1; if ($script->hasattribute('src')) $extscripts = $extscripts + 1; return $scriptarray = array('totalscripts' => $scriptcounter, 'InlineScripts' => $scriptcounter - $extscripts); { public static function getframes() { $framecounter = 0; $iframecounter = 0; foreach ($framelist = parent::$doc->getelementsbytagname("frame") as $frame) { $framecounter = $framecounter + 1; foreach ($iframelist = parent::$doc->getelementsbytagname("iframe") as $iframe) $iframecounter = $iframecounter + 1; return $framecounter + $iframecounter; public static function getfavicon() { $favhref = ''; foreach ($favlinks = parent::$doc->getelementsbytagname('link') as $favlink) { if ($favlink->hasattribute('rel') && $favlink->hasattribute('href')) { $favrel = strtolower($favlink->getattribute('rel')); if ($favrel == 'shortcut icon' $favrel == 'icon') { $favhref = $favlink->getattribute('href'); return $favhref; public static function gethtmlpagesize() { $pagesize = round((strlen(parent::$htmlstring)) / 1024, 1); return $pagesize; public static function getlanguage() { $metas = parent::$doc->getelementsbytagname('meta'); for ($i = 0; $i < $metas->length; $i++) { $meta = $metas->item($i); if ($meta->getattribute('http-equiv') == 'content-language') $language = $meta->getattribute('content'); if (isset($language)) return $language; = parent::$doc->getelementsbytagname("html"); $lang1 = $lang->item(0); $language1 = $lang1->getattribute('lang'); if (isset($language1)) return $language1; return parent::nodatamsg(); -74-

79 public static function GetEncoding() { $encode = parent::$doc->getelementsbytagname("meta"); $enc = = $enc->getattribute('charset'); if (strlen($encoding) > 2) return $encoding; preg_match('@<meta\s+http-equiv="content-type"\s+content="([\w/]+)(;\s+charset=([^\s"]+))?@i', parent::$htmlstring, $matches); if (isset($matches[3])) $charset = $matches[3]; public static function TextToHtmlRatio() { $htmlstringnospace = preg_replace('/\s+/', '', parent::$htmlstring); $textstring = round(strlen(strip_tags($htmlstringnospace)) / 1000, 2); $pagesize = self::gethtmlpagesize(); return $texttohtmlratio = round(($textstring * 100) / $pagesize, 2); public static function GetPublisher() { $publisher = ''; foreach ($pub = parent::$doc->getelementsbytagname('a')as $pubs) { if ($pubs->getattribute('rel') == 'publisher') $publisher = $pubs->getattribute('href'); if (strlen($publisher) > 1) return $publisher; { foreach ($publ = parent::$doc->getelementsbytagname('link')as $publs) { if ($publs->getattribute('rel') == 'publisher') $publisher = $publs->getattribute('href'); return $publisher; public static function DeprecatedHtml() { foreach ($dep = parent::$doc->getelementsbytagname('basefont')as = $depbasefont + 1; foreach ($dep = parent::$doc->getelementsbytagname('big')as = $depbig + 1; foreach ($dep = parent::$doc->getelementsbytagname('center')as = $depcenter + 1; foreach ($dep = parent::$doc->getelementsbytagname('font')as = $depfont + 1; foreach ($dep = parent::$doc->getelementsbytagname('strike')as = $depstrike + 1; foreach ($dep = parent::$doc->getelementsbytagname('tt')as = $deptt + 1; foreach ($dep = parent::$doc->getelementsbytagname('frame')as = $depframe + 1; foreach ($dep = parent::$doc->getelementsbytagname('frameset')as = $depframeset + 1; foreach ($dep = parent::$doc->getelementsbytagname('noframes')as = $depnoframes + 1; foreach ($dep = parent::$doc->getelementsbytagname('hgroup')as = $dephgroup + 1; -75-

80 foreach ($dep = parent::$doc->getelementsbytagname('acronym')as = $depacronym + 1; foreach ($dep = parent::$doc->getelementsbytagname('applet')as = $depapplet + 1; foreach ($dep = parent::$doc->getelementsbytagname('bgsound')as = $depbgsound + 1; foreach ($dep = parent::$doc->getelementsbytagname('isindex')as = $depisindex + 1; foreach ($dep = parent::$doc->getelementsbytagname('dir')as = $depdir + 1; foreach ($dep = parent::$doc->getelementsbytagname('layer')as = $deplayer + 1; foreach ($dep = parent::$doc->getelementsbytagname('blackface')as = $depblackface + 1; foreach ($dep = parent::$doc->getelementsbytagname('noembed')as = $depnoembed + 1; foreach ($dep = parent::$doc->getelementsbytagname('listing')as = $deplisting + 1; foreach ($dep = parent::$doc->getelementsbytagname('nextid')as = $depnextid + 1; foreach ($dep = parent::$doc->getelementsbytagname('plaintext')as = $depplaintext + 1; foreach ($dep = parent::$doc->getelementsbytagname('xmp')as = $depxmp + 1; foreach ($dep = parent::$doc->getelementsbytagname('blink')as = $depblink + 1; foreach ($dep = parent::$doc->getelementsbytagname('marquee')as = $depmarquee + 1; foreach ($dep = parent::$doc->getelementsbytagname('multicol')as = $depmulticol + 1; foreach ($dep = parent::$doc->getelementsbytagname('nobr')as = $depnobr + 1; foreach ($dep = parent::$doc->getelementsbytagname('spacer')as = $depspacer + 1; $deprecated = array('basefont' 'big' 'center' 'font' 'strike' 'tt' 'frame' 'frameset' 'noframes' 'hgroup' 'acronym' 'applet' 'bgsound' 'isindex' 'dir' 'layer' 'blackface' 'noembed' 'listing' 'nextid' 'plaintext' 'xmp' 'blink' 'marquee' 'multicol' 'nobr' 'spacer' $deparray = array(); foreach ($deprecated as $key => $value) { if (is_null($value) === false) { $deparray[$key] = $value; return $deparray; public static function GetServerSignature() { $server = get_headers(parent::$_url, ' if (preg_match("^[0-9]+^", $serversignature)) return $serversignature; return False; -76-

81 public static function SSL() { $ssl = array(); $domain = parent::$_host; $g = stream_context_create(array("ssl" => array("capture_peer_cert" => = stream_socket_client("ssl:// $errno, $errstr, 60, STREAM_CLIENT_CONNECT, = = openssl_x509_parse($cont["options"]["ssl"]["peer_certificate"]); $ssl['issuedcn'] = $sslinfo['subject']['cn']; $ssl['issuercn'] = $sslinfo['issuer']['cn']; $ssl['issuero'] = $sslinfo['issuer']['o']; public static function GoogleAnalytics() { $googleanalytics = 0; foreach ($script = parent::$doc->getelementsbytagname("script") as $scripts) { $scripttext = $scripts->nodevalue; if ($type = $scripts->getattribute('type') == = $scripts->getattribute('src'); if (strpos($scripttext, 'google-analytics') == TRUE (strpos(@$scriptsrc, 'google-analytics') == TRUE)) $googleanalytics = $googleanalytics + 1; if ($googleanalytics >= 1) return True; return False; Mobile.php Περιλαμβάνει τις συναρτήσεις: 1) getviewport. Ελέγχει αν υπάρχει το viewport tag, επιστρέφει boolean. 2) AppleIcon. Ελέγχει αν υπάρχει apple icon, επιστρέφει boolean. 3) MobileCss. Ελέγχει αν υπάρχει mobile css ή media queries, επιστρέφει boolean. 4) FlashFiles. Επιστρέφει τα Flash αρχεία αν υπάρχουν, επιστρέφει αριθμό. <?php namespace OnPageSeo\Methods; use OnPageSeo\OnPageSeo as OnPageSeo; class Mobile extends OnPageSeo { public static function getviewport() { $viewport = 0; $metas = parent::$doc->getelementsbytagname('meta'); for ($i = 0; $i < $metas->length; $i++) { $meta = $metas->item($i); if ($meta->getattribute('name') == 'viewport') $viewport = $viewport + 1; if ($viewport > 0) return true; -77-

82 return false; public static function AppleIcon() { $appleicon = 0; $css = parent::$doc->getelementsbytagname('link'); foreach ($css as $css1) = $css1->getattribute('rel'); if (strpos(@$cssrel, 'apple-touch-icon')!== False) $appleicon = $appleicon + 1; if ($appleicon > 0) return true; return false; public static function MobileCss() { $cssmobile = 0; $css = parent::$doc->getelementsbytagname('link'); foreach ($css as $css1) = = $css1->getattribute('media'); if (@$cssrel == 'stylesheet' && (strpos(@$cssmedia, 'screen and')!== False strpos(@$cssmedia, '(min')!== False strpos(@$cssmedia, '(max')!== False)) = $cssmobile + 1; = $css1->getattribute('href'); $domain = parent::$homeurl; if (strpos($csshref, $domain) == False) ($csshrefnew = = parent::getpage(@$csshrefnew); if (strpos(@$css2, '@media screen')!== False strpos(@$css2, '@media (m')!== False strpos(@$css2, '@media only screen')!== False) $cssmobile = $cssmobile + 1; if ($cssmobile > 0) return true; return false; public static function FlashFiles() { $scriptflashcounter = 0; $objectcounter = 0; $embedcounter = 0; foreach ($scriptlist = parent::$doc->getelementsbytagname("script") as $script) { if (strpos(@$scriptflash = $script->getattribute('src'), '.swf')) $scriptflashcounter = $scriptflashcounter + 1; foreach ($objectlist = parent::$doc->getelementsbytagname("object") as $object) { if ($objecttype = $object->getattribute('type') == 'application/x-shockwaveflash') $objectcounter = $objectcounter + 1; foreach ($embedlist = parent::$doc->getelementsbytagname("embed") as $embed) { -78-

83 if ($embedtype = $embed->getattribute('type') == 'application/x-shockwaveflash') $embedcounter = $embedcounter + 1; return $scriptflashcounter + $objectcounter + $embedcounter; Title.php Περιλαμβάνει τη συνάρτηση: gettitle. Επιστρέφει το περιεχόμενο του title tag σε string. <?php namespace OnPageSeo\Methods; use OnPageSeo\OnPageSeo as OnPageSeo; class Title extends OnPageSeo { public static function gettitle() { $list = parent::$doc->getelementsbytagname("title"); $title = ''; if ($list->length > 0) { $title = $list->item(0)->nodevalue; if (isset($title)) return $title; return parent::nodatamsg(); URLs.php Περιλαμβάνει τις συναρτήσεις: 1) Resolve. Ελέγχει αν τα URL με www και χωρίς επιλύουν στην ίδια σελίδα, επιστρέφει string. 2) CleanUrls. Ελέγχει αν τα εσωτερικά links έχουν καθαρά URL, επιστρέφει πίνακα. 3) Underscores. Ελέγχει αν τα εσωτερικά links έχουν underscore _ στα URLs, επιστρέφει πίνακα. <?php namespace OnPageSeo\Methods; use OnPageSeo\OnPageSeo as OnPageSeo; class URLs extends OnPageSeo { public static function Resolve() { if ($trimmedstart = strpos(parent::$_url, ' { $trimmedurl = str_replace(' '', parent::$_url); { $pos = '://'; $addstr = ' $trimmedurl = str_replace($pos, $pos. $addstr, parent::$_url); -79-

84 { $target = 'NoResolve'; $urls = array( parent::$_url, $trimmedurl ); $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); foreach ($urls as $url) { curl_setopt($ch, CURLOPT_URL, $url); $out = curl_exec($ch); $out = str_replace("\r", "", $out); $headers_end = strpos($out, "\n\n"); if ($headers_end!== false) { $out = substr($out, 0, $headers_end); $headers = explode("\n", $out); foreach ($headers as $header) { if (substr($header, 0, 10) == "Location: ") { $target = substr($header, 10); continue 2; $url = parent::$_url; $url1 = $url; IF (SUBSTR(@$url1, -1)!= '/') '/'; if == == $trimmedurl) return "Great, $url and $trimmedurl resolve to the same URL."; return "$url and $trimmedurl do not resolve to the same URL."; public static function CleanUrls() { $notclean = array(); $intlinks = Links::GetInternalLinks(); for ($i = 0; $i < count($intlinks); $i++) { if (preg_match("^[?&%~=$]+^", $intlinks[$i]['url'])) $notclean[] = array('url' => $intlinks[$i]['url']); return $notclean; public static function Underscores() { $underscores = array(); $intlinks = Links::GetInternalLinks(); for ($i = 0; $i < count($intlinks); $i++) { if (preg_match("^[_]+^", $intlinks[$i]['url'])) $underscores[] = array('url' => $intlinks[$i]['url']); return $underscores; -80-

85 5.2.4 Chart.php Περιέχει κώδικα για τη δημιουργία του γραφήματος των links και χρησιμοποιεί τη βιβλιοθήκη phpgraphlib. <?php include('phpgraphlib-master/phpgraphlib.php'); $graph = new PHPGraphLib(550, 300); $link = mysql_connect('localhost', 'root', '') or die('could not connect: '. mysql_error()); mysql_select_db('mydb') or die('could not select database'); $dataarray = array(); $sql = "SELECT External_Links, Internal_Links, Broken_Links FROM graph"; $result = mysql_query($sql) or die('query failed: '. mysql_error()); if ($result) { while ($row = mysql_fetch_assoc($result)) { $ext = $row["external_links"]; $int = $row["internal_links"]; $broken = $row["broken_links"]; $dataarray = array("internal" => $int, "External" => $ext, "Broken" => $broken); $graph->adddata($dataarray); $graph->settitle("link Analysis"); $graph->setxvalueshorizontal(true); $graph->setgradient('red', 'maroon'); $graph->creategraph(); Chart2.php Περιέχει κώδικα για τη δημιουργία του γραφήματος των επικεφαλίδων και χρησιμοποιεί τη βιβλιοθήκη phpgraphlib. <?php include('phpgraphlib-master/phpgraphlib.php'); $graph = new PHPGraphLib(550, 200); $link = mysql_connect('localhost', 'root', '') or die('could not connect: '. mysql_error()); mysql_select_db('mydb') or die('could not select database'); $dataarray = array(); $sql = "SELECT H1,H2,H3,H4,H5,H6 FROM graph2"; $result = mysql_query($sql) or die('query failed: '. mysql_error()); if ($result) { while ($row = mysql_fetch_assoc($result)) { $h1 = $row["h1"]; $h2 = $row["h2"]; $h3 = $row["h3"]; $h4 = $row["h4"]; $h5 = $row["h5"]; $h6 = $row["h6"]; -81-

86 $dataarray = array("h1" => $h1, "H2" => $h2, "H3" => $h3, "H4" => $h4, "H5" => $h5, "H6" => $h6); $graph->adddata($dataarray); $graph->setxvalueshorizontal(true); $graph->setgradient('red', 'maroon'); $graph->creategraph(); Index.php Είναι η αρχική σελίδα. Περιέχει μια φόρμα και μια εικόνα. (Εικόνα 33) Σ αυτή τη σελίδα ο χρήστης πληκτρολογεί μια διεύθυνση URL ή πολλές διευθύνσεις μαζί χωρισμένες μεταξύ τους από ένα κόμμα, κι έπειτα πατώντας το πλήκτρο Enter ή το κουμπί Analyse ξεκινάει η δημιουργία της αναφοράς του εργαλείου. Την ώρα που περιμένει ο χρήστης τη δημιουργία της αναφοράς του εμφανίζεται η παρακάτω gif εικόνα (Εικόνα 31) στη σελίδα index.php και η άλλη εικόνα gif (Εικόνα 32) όσο περιμένει τη φόρτωση της αναφοράς στη σελίδα report.php. Εικόνα 31: gif της σελίδας index.php. <!DOCTYPE html> <html> Εικόνα 32: gif της σελίδας report.php <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title></title> <script src=" <script type="text/javascript"> $(document).ready(function() { $('#ajax_bt').click(function() { $('#ajax_div').html('<img src="images/ajax-loader.gif" />'); ); ); -82-

87 </script> </head> <body style="background-color:#f5f5ff;"> <div id="container" style="width:100%;"> <div id="content" style="width:100%;"> <div id="form" align="center" style="margin-top:100px;"> <div id="image" align="center"><img src="images/seo.jpg" alt="seo" height="183" width="275"></div> <h1 style="font-size:30px;text-align:center;font-family:verdana,sans-serif">seo ANALYSIS</h1> <form method="post" action="report.php"> URL:<input type="text" name="url" value=" /> <input type="submit" id="ajax_bt" value="analyse" /> <div id="ajax_div" style="padding:10px;"></div> </form> </div> </div> </div> </body> </html> Εικόνα 33: Index.php. Η αρχική σελίδα. -83-

88 5.2.7 Report.php Είναι ουσιαστικά η αναφορά, τα αποτελέσματα του εργαλείου. Για την παρουσίαση τους χρησιμοποιήθηκαν πίνακες, τεχνική που δεν ενδείκνυται. <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>seo Analysis Tool</title> <style>.loader { position: fixed; left: 0px; top: 0px; width: 100%; height: 100%; z-index: 9999; background: url('images/page-loader.gif') 50% 50% no-repeat rgb(249,249,249); </style> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script type="text/javascript"> $(window).load(function() { $(".loader").fadeout("slow"); ) </script> <script type="text/javascript"> //<![CDATA[ window.onload = function() { img = document.getelementbyid('refreshimage'); img.src += "?"; settimeout(setinterval("img.src=img.src.replace(/\\?[0-9]*/ +Math.floor(Math.random()* ));", 20000), ); //]]> </script> </head> <body style="background-color:#fcfcff;"> <div class="loader"></div> <?php $start = microtime(true); ini_set('max_execution_time', 0); $url = = explode(",", $url); require '\SEOstats\SEOstats.php'; require_once ( DIR. '\..'). '\MyTool\SEOstats\bootstrap.php'; use \SEOstats\Services\Mozscape as Mozscape; use \SEOstats\Services\Alexa as Alexa; use \SEOstats\Services\SemRush; require_once DIR. DIRECTORY_SEPARATOR. 'OnPageSeo'. DIRECTORY_SEPARATOR. 'boostrap.php'; include 'MultiKeywordDensityChecker/MultiKeywordDensityChecker.php'; require_once 'Services/W3C/HTMLValidator.php'; require_once("/md_extract-master/md_extract/class.md_extract.php"); require_once("/md_extract-master/md_extract/lang.errors.php"); -84-

89 include('\phpwhois-4.2.2\whois.main.php'); use OnPageSeo\Methods\Title as Title; use OnPageSeo\Methods\Metas as Metas; use OnPageSeo\Methods\Headers as Headers; use OnPageSeo\Methods\Links as Links; use OnPageSeo\Methods\Images as Images; use OnPageSeo\Methods\URLs as URLs; use OnPageSeo\Methods\MapBot as MapBot; use OnPageSeo\Methods\Mobile as Mobile; use OnPageSeo\Methods\Css as Css; use OnPageSeo\Methods\Misc as Misc; use OnPageSeo\OnPageSeo as OnPageSeo; for ($i = 0; $i < count($url); $i++) = LastEffectiveUrl($url[$i]); $microdata = array(); $parsedurl = (parse_url($lasteffectiveurl)); $scheme = isset($parsedurl['scheme'])? $parsedurl['scheme']. '://' : ''; $host = isset($parsedurl['host'])? $parsedurl['host'] : = new Whois(); $domain = = $whois->lookup($domain, = file_get_contents($lasteffectiveurl); $seostats = new \SEOstats\SEOstats; $seostats->seturl($lasteffectiveurl); $google = $seostats->google(); $social = $seostats->social(); $obj = new KD(); $obj->setstring($lasteffectiveurl); $onpageseo = new \OnPageSeo\OnPageSeo; = new = $v->validate($lasteffectiveurl); echo ' <h1>url->'. $LastEffectiveUrl. '</h1>'; echo ' <div id="domaininfo"> <h1>site Info</h1> <table style="border-spacing:10px 0px;float:left"> <tr><td>domain:</td> <td>'; echo $domain; echo '</td></tr> <tr><td>domain Registration Date:</td> if (\strlen(@mysearchcreated($result)) < 1) echo ' No info found';echo '</td></tr> <tr><td>domain Expiration Date:</td> if (\strlen(@mysearchcreated($result)) < 1) echo ' No info found';echo '</td></tr> <tr><td>server IP:</td> <td>'; echo $ip = gethostbyname($host); echo '</td></tr> <tr><td>alexa Global Domain Rank:</td> <td>'; echo Alexa::getGlobalRank(); echo '</td></tr> <tr><td>alexa Country Rank:</td> <td>'; $countryrank = Alexa::getCountryRank(); if (is_array($countryrank)) { echo $countryrank['rank']. ' (in '. $countryrank['country']. ")\r\n"; -85-

90 { echo "{$countryrank\r\n"; echo '</td></tr> <tr><td>google PageRank:</td> <td>'; echo $google->getpagerank(); echo '</td></tr> <tr><td>backlinks:</td><td>'; echo Mozscape::getLinkCount(); echo ' '; echo '<a href=" rel="no-follow" target="_blank" width="111px" height="25px"><img src="images/small_powered(full).png" alt="powered by Mozscape"/></a>'; echo '</td></tr> <tr><td>google Analytics:</td><td>'; if ($analytics = Misc::GoogleAnalytics() == True) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">";echo'</td></tr> </table> <table style="border-spacing:10px 0px"> <tr><td>'; echo '<img src=" $LastEffectiveUrl. '" alt="screenshot of '. $LastEffectiveUrl. '" id="refreshimage" />'; echo '</td></tr> </table> </div>'; echo ' <div id="social"> <h1>social Visibility</h1> <table style="border-spacing:10px 0px"> <tr><td><img src="images/fblike.png" width="16px" height="16px" alt="facebook like"/> Facebook Likes:</td><td>'; $fb = $social->getfacebookshares(); echo $fb['like_count']; echo '</td><td><img src="images/fbshare.png" width="16px" height="16px" alt="facebook shares"/> Facebook Shares:</td><td>'; echo $fb['share_count']; echo '</td></tr> <tr><td><img src="images/fbcomment.png" width="16px" height="16px" alt="facebook comment"/> Facebook Comments:</td><td>'; echo $fb['comment_count']; echo '</td><td><img src="images/google+1.png" width="16px" height="16px" alt="google +1"/> Google +1:</td><td>'; echo $social->getgoogleplusshares(); echo '</td></tr> <tr><td><img src="images/twitter.png" width="16px" height="16px" alt="twitter"/> Twiter Backlinks:</td><td>'; echo $social->gettwittershares(); echo '</td><td><img src="images/pinterest.png" width="16px" height="16px" alt="pinterest"/> Pinterest:</td><td>'; echo $social->getpinterestshares(); echo '</td></tr> <tr><td><img src="images/stumbleupon.png" width="16px" height="16px" alt="stumbleupon"/> StumbleUpon:</td><td>'; echo $social->getstumbleuponshares(); echo '</td><td><img src="images/linkedin.png" width="16px" height="16px" alt="linkedin"/> LinkedIn:</td><td>'; echo $social->getlinkedinshares(); echo '</td></tr> </table> </div>'; -86-

91 echo ' <div id="security"> <h1>security</h1> <table style="border-spacing:10px 0px"> <tr><td><img src="images/siteadvisor.png"> McAfee Site Advisor:</td><td>'; $mcafeeurl = = file_get_contents($mcafeeurl); if (strpos($mcafee, 'This link is safe')!== false) echo "<img src=\"images/tick.png\"> This link is safe."; echo "<img src=\"images/x.png\"> This link is not safe.";echo '</td><td><a href="'; echo $mcafeeurl; echo '" target="_blank">more...</a></td></tr> <tr><td><img src="images/google-safe.png"> Google Safe Browsing:</td><td>'; $gurl = = file_get_contents($gurl); if (strpos($gsafe, 'This site is not currently listed as suspicious')!== false) echo "<img src=\"images/tick.png\"> This site is not currently listed as suspicious."; echo "<img src=\"images/x.png\"> This site is listed as suspicious.";echo '</td><td><a href="'; echo $gurl; echo '" target="_blank">more...</a></td></tr> <tr><td><img src="images/avg.png"> AVG ThreatLAbs:</td><td>'; $avgurl = = = new foreach (@$avgh2 as $avgh2s) = $avgh2s->nodevalue; if (strpos($avgheader2, 'Currently Safe')!== false strpos($avgheader2, 'Probably Safe')!== false) echo "<img src=\"images/tick.png\"> $avgheader2."; echo "<img src=\"images/x.png\"> $avgheader2.";echo '</td><td><a href="'; echo $avgurl; echo '" target="_blank">more...</a></td></tr> <tr><td><img src="images/spam-directory.png"> Spam Directory:</td><td>'; $spamurl = = file_get_contents($spamurl); if (strpos($spam, 'no')!== false) echo "<img src=\"images/tick.png\"> Your IP is not Blacklisted in the Spammer Directory."; echo "<img src=\"images/x.png\"> Your IP is Blacklisted in the Spammer Directory."; echo '</td><td><a href="'; echo " echo '"target="_blank">more...</a></td></tr> <tr><td>server Signature:</td><td>'; $serversignature = Misc::GetServerSignature(); if ($serversignature) echo "<img src=\"images/x.png\"> Your server signature is on. ($serversignature)"; -87-

92 echo "<img src=\"images/tick.png\"> Your server signature is off.";echo '</td></tr> </table>'; $ssl = Misc::SSL(); echo ' <h3>https (SSL): '; if (strpos($ssl['issuedcn'], $domain) === false) echo "<img src=\"images/x.png\">"; echo "<img src=\"images/tick.png\">";echo '</h3>'; if (count($ssl) >= 2) { echo ' <table style="border-spacing:10px 0px"> <thead><tr><th align="left">issued To:</th></tr></thead> <tr><td>common Name:</td><td>'. $ssl['issuedcn']. '</td></tr> </table> <table style="border-spacing:10px 0px"> <thead><tr><th align="left">issuer:</th></tr></thead> <tr><td>common Name:</td><td>'. $ssl['issuercn']. '</td></tr> <tr><td>organization:</td><td>'. $ssl['issuero']. '</td></tr> </table>'; echo ' </div>'; echo ' <div id="index"> <h1>index</h1> <table style="border-spacing:10px 0px"> <tr><td></td><td>indexed Pages in Google:</td><td>'; echo $google->getsiteindextotal(); echo '</td></tr> <tr><td>'; if (!empty($host)) { $path = " str_replace(" "", $host); $data = strip_tags(implode("", file($path))); if (strpos($data, "DMOZ Sites")) = "is Listed. "; = "Is Not Listed. "; if (strpos($data, 'Not')!== false) echo "<img src=\"images/x.png\">"; echo "<img src=\"images/tick.png\">"; echo '</td><td>dmoz:</td><td>'; echo " $host $data"; echo '</td></tr> <tr><td>'; if (!empty($host)) { $path = " $data = (file_get_contents($path)); if (strpos($data, "result") && strpos($data, "did not match any listings") == false) = "is Listed. "; = "Is Not Listed. "; if (strpos($adata, 'Not')!== false) echo "<img src=\"images/x.png\">"; echo "<img src=\"images/tick.png\">"; echo '</td><td>botw Directory:</td><td>'; echo " $host $adata"; -88-

93 echo '</td></tr> <tr><td>'; if (!empty($host)) { $path = " $data = (file_get_contents($path)); if (strpos($data, "No listings were found for your search") == false) = "is Listed. "; = "Is Not Listed. "; if (strpos($adata, 'Not')!== false) echo "<img src=\"images/x.png\">"; echo "<img src=\"images/tick.png\">"; echo '</td><td>starting Point Directory:</td><td>'; echo " $host $adata"; echo '</td></tr> </table> </div>'; echo ' <div id="onpageseo"> <h1>on Page SEO</h1> <table style="border-spacing:10px 0px"> <tr><td>'; $title = Title::getTitle(); $strlentitle = mb_strlen($title, "UTF-8"); if ($strlentitle > 9 && $strlentitle < 70) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>title:</td><td>'; echo $title; echo '</td><td>'; echo "Length:$strlentitle characters.\n"; if ($strlentitle > 9 && $strlentitle < 70) echo'your title is fine.'; echo 'Your title should contain between 10 and 70 characters.'; echo '</td></tr> <tr><td>'; $description = Metas::getDescription(); $strlendesc = mb_strlen($description, "UTF-8"); if ($strlendesc > 69 && $strlendesc < 157) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>description:</td><td>'; echo $description; echo '</td><td>'; echo "Length:$strlendesc characters.\n"; if ($strlendesc > 69 && $strlendesc < 157) echo 'Your description is fine.'; echo 'Your description should contain between 70 and 156 characters.';echo '</td></tr> <tr><td>'; $resolve = URLs::Resolve(); if (strpos($resolve, 'Great')!== false) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; -89-

94 echo '</td><td>www Resolve:</td><td>'; echo $resolve; echo '</td></tr> <tr><td>'; $cleanurl = URLs::CleanUrls(); if (count($cleanurl) < 1) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>clean URLs:</td><td>'; if (count($cleanurl) < 1) echo 'Great, you have clean URLs.'; echo 'We found '. count($cleanurl). ' not clean URLs on your page.';echo '</td></tr> <tr><td>'; $underscores = URLs::Underscores(); if (count($underscores) < 1) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>underscores in URLs:</td><td>'; if (count($underscores) < 1) echo 'Great, you do not use underscores in the URLs.'; echo 'We found '. count($underscores). ' URLs with underscores on your page.'; echo '</td></tr> <tr><td>'; $robots = MapBot::Robots(); if (strpos($robots, 'fine')!== false) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>robots.txt:</td><td>'; echo $robots; echo '</td></tr> <tr><td>'; $sitemap = MapBot::Sitemap(); if (strpos($sitemap, 'fine')!== false) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>sitemap:</td><td>'; echo $sitemap; echo '</td></tr> <tr><td>'; $frames = Misc::GetFrames(); if ($frames > 0) echo "<img src=\"images/x.png\">"; echo "<img src=\"images/tick.png\">"; echo '</td><td>frames:</td><td>'; echo $frames; echo '</td><td>'; if ($frames > 0) echo 'You should not use frames or iframes. Search engines will not crawl or index the content within them.'; echo "Great,you don't use frames. Search engines will not crawl or index the content within them."; -90-

95 echo '</td></tr> <tr><td>'; $images = Images::getImages(); $imageswithoutalt = Images::getImagesWithoutAlt(); $imageswithoutdimensions = Images::GetImagesWithoutDimensions(); if (count($imageswithoutalt) > 0) echo "<img src=\"images/x.png\">"; echo "<img src=\"images/tick.png\">"; echo '</td><td>images:</td><td>'; echo (count($images)); echo'. Without Alt attribute: '; echo (count($imageswithoutalt)); echo'. Without Width and Height attributes: '; echo (count($imageswithoutdimensions)); echo '</td><td>'; echo 'Alt attribute is used to describe images. Specifying width and height attributes can help your web page load faster.'; echo '</td></tr> <tr><td>'; $links = count(links::getlinks()); $external = Links::GetExternalLinks(); $internal = Links::GetInternalLinks(); if ($links < 100) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>links:</td><td>'; echo $links; echo '</td><td>'; if ($links < 100) echo'great, your link count on this page is less than 100.'; echo 'Your link count on this page is more than 100.';echo '</td></tr> <tr><td>'; $brokenlinks = Links::getBrokenLinksMass(); if (count($brokenlinks) < 1) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>broken Links:</td><td>'; echo count($brokenlinks); echo '</td></tr> <tr><td>'; $publisher = Misc::GetPublisher(); if (strlen($publisher) > 1) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>google+ Publisher:</td><td>'; echo $publisher; echo '</td><td>'; if (strlen($publisher) > 1) echo 'Great, Your website has a rel="publisher" link to your Google+ Page.'; echo 'Your website is missing a rel="publisher" link to your Google+ Page.'; echo '</td></tr>'; if ($r) { -91-

96 echo '<tr><td>'; if echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>w3c Validity:</td><td>'; if echo 'Valid!'; echo ' NOT Valid! ';echo '</td><td><a href=" echo $host; echo '" target="_blank">w3c Validation Service</a></td></tr>'; if (count($url) <= 1) { $mdx = MD_Extract::create_by_URL($LastEffectiveUrl); $microdata = $mdx->get_clean_results(); echo '<tr><td>'; if (count($microdata) > 0) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">";echo = (array_keys(@$microdata)); for ($i = 0; $i < count(@$micro); $i++) { echo '<br>'; echo '</td><td>'; if (count($microdata) > 0) echo 'Great,you use Microdata.'; echo 'No Microdata used.</td></tr>'; echo '<tr><td>'; $deprecated = Misc::DeprecatedHtml(); if (count($deprecated) > 0) echo "<img src=\"images/x.png\">"; echo "<img src=\"images/tick.png\">";echo '</td><td>deprecated HTML:</td><td>'; if (count($deprecated) > 0) { echo "<table><tr><th>tag</th><th>occurrences</th></tr>"; foreach ($deprecated as $key => $value) { echo "<tr><td align='center'>$key</td><td align='center'>$value</td></tr>"; echo "</table>"; echo 'Great, no deprecated HTML tags are used.';echo '</td><td>'; echo 'Deprecated HTML tags are HTML tags that are no longer used.'; echo '</td></tr> <tr><td></td><td>meta-keywords:</td><td>'; echo $metakey = Metas::getKeywords(); echo '</td></tr> </table> <h3>headings</h3> <table style="border-spacing:10px 0px"> <tr><td>'; $h1 = Headers::GetH1heads(); $h1count = count($h1); if ($h1count > 0 && $h1count < 2) echo "<img src=\"images/tick.png\">"; -92-

97 echo "<img src=\"images/x.png\">"; echo '</td><td>h1 Headings:</td><td>'; echo $h1count; echo '</td><td>'; if ($h1count > 1) echo "Don't use multiple H1 tags.";echo '</td></tr> <tr><td>'; $h2 = Headers::GetH2heads(); $h2count = count($h2); if ($h2count > 0) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>h2 Headings:</td><td>'; echo $h2count; echo '</td></tr> <tr><td>'; $h3 = Headers::GetH3heads(); $h3count = count($h3); if ($h3count > 0) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>h3 Headings:</td><td>'; echo $h3count; echo '</td></tr> <tr><td>'; $h4 = Headers::GetH4heads(); $h4count = count($h4); if ($h4count > 0) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>h4 Headings:</td><td>'; echo $h4count; echo '</td></tr> <tr><td>'; $h5 = Headers::GetH5heads(); $h5count = count($h5); if ($h5count > 0) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>h5 Headings:</td><td>'; echo $h5count; echo '</td></tr> <tr><td>'; $h6 = Headers::GetH6heads(); $h6count = count($h6); if ($h6count > 0) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>h6 Headings:</td><td>'; echo $h6count; echo '</td></tr> </table>'; if (count($url) <= 1) { $link = mysql_connect('localhost', 'root', ''); if (!$link) { -93-

98 die(); $db_selected = mysql_select_db('mydb', $link); if (!$db_selected) { $sql = 'CREATE DATABASE mydb'; $sql = "DROP TABLE IF EXISTS graph2"; $retval = mysql_query($sql, $link); $sql = "CREATE TABLE IF NOT EXISTS graph2( ". "H1 INT, ". "H2 INT, ". "H3 INT, ". "H4 INT, ". "H5 INT, ". "H6 INT); "; $retval = mysql_query($sql, $link); $sql = "INSERT INTO graph2 (H1, H2, H3, H4, H5, H6) VALUES ('$h1count', '$h2count', '$h3count','$h4count','$h5count','$h6count')"; $retval = mysql_query($sql, $link); mysql_close($link); echo '<img src="chart2.php" width="550px" height="200px" alt="headings Analysis Chart"/>'; echo '</div>'; echo ' <div id="keywords"> <h1>keyword = $obj->keywordssortedarray(); echo ' = $parsedurl['path']; $hosts = str_replace(' '', $host); if (strlen($domain) == strlen($hosts) && strlen(@$path) <= 1) { $graphflag = true; $comp = SemRush::getCompetitors($LastEffectiveUrl); $key = SemRush::getOrganicKeywords($LastEffectiveUrl); $comps = GetComps($comp); $keyspo = GetKeyspos($key); $keysearch = GetKeysearch($key); $compkey = GetCompKey($comp); $keys = GetKeys($key); echo ' <div id="domain Keywords"> <table cellpadding="20px"> <tr><td> <h3 align="center">organic Keywords</h3> <table border="1"> <thead> <tr> <th>keyword</th><th>position</th><th>search Volume</th> </tr> </thead> <tr><td align="center">'; foreach ($keys as $value) { echo "<pre>"; echo $value; echo "</pre>"; echo '</td><td align="center">'; foreach ($keyspo as $value) { echo "<pre>"; echo $value; echo "</pre>"; echo '</td><td align="center">'; -94-

99 foreach ($keysearch as $value) { echo "<pre>"; echo $value; echo "</pre>"; echo '</td></tr> </table> </td> <td> <h3 align="center">organic Search Competitors</h3> <table border="1"> <thead> <tr> <th>domain</th><th>common Keywords</th> </tr> </thead> <tr><td align="center">'; foreach ($comps as $value) { echo "<pre>"; echo $value; echo "</pre>"; echo '</td><td align="center">'; foreach ($compkey as $value) { echo "<pre>"; echo $value; echo "</pre>"; echo '</td></tr> </table> </td></tr> </table> </div>'; echo ' <div id="usability"> <h1>usability</h1> <table style="border-spacing:10px 0px"> <tr><td>'; $favicon = Misc::GetFavicon(); if (strlen($favicon) > 1) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>favicon:</td><td>'; if (strlen($favicon) > 1) echo 'Yes'; echo 'No';echo '</td><td>'; echo $favicon; echo '</td></tr> <tr><td>'; $css = Css::Css(); if ($css['printcss'] > 0) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>printability:</td><td>'; if ($css['printcss'] > 0) echo 'Yes'; echo 'No';echo '</td></tr> <tr><td>'; $Ratio = Misc::TextToHtmlRatio(); if ($Ratio > 20 && $Ratio < 70) -95-

100 -96- echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>text/html Ratio:</td><td>'; echo "$Ratio%"; echo '</td><td>'; echo 'A ratio between 20% and 70% is ideal.'; echo '</td></tr> <tr><td>'; $lang = Misc::GetLanguage(); if (strlen($lang) > 1) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>language:</td><td>'; if (strlen($lang) > 1) echo $lang; echo'no Language declared'; echo '</td></tr> <tr><td>'; $encoding = Misc::getEncoding(); if (strlen($encoding) > 2) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>encoding:</td><td>'; echo $encoding; echo '</td></tr> </table> </div>'; echo ' <div id="mobile"> <h1>mobile Optimization</h1> <table style="border-spacing:10px 0px"> <tr><td>'; $mobcss = Mobile::MobileCss(); if ($mobcss == true) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>mobile Css:</td><td>'; if ($mobcss == true) echo 'Great, you have a css for mobile devices.'; echo "You don't have a css for mobile devices.";echo '</td></tr> <tr><td>'; $viewport = Mobile::getViewport(); if ($viewport == true) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>meta Viewport Tag:</td><td>'; if ($viewport == true) echo 'Great, you use Meta Viewport Tag.'; echo "You don't use Meta Viewport Tag."; echo '</td></tr> <tr><td>'; $apple = Mobile::AppleIcon(); if ($apple == true) echo "<img src=\"images/tick.png\">";

101 1024, 2)); 1024, 2)); echo "<img src=\"images/x.png\">"; echo '</td><td>apple Icon:</td><td>'; if ($apple == true) echo 'Yes'; echo 'No';echo '</td></tr> <tr><td>'; $flash = Mobile::FlashFiles(); if ($flash > 0) echo "<img src=\"images/x.png\">"; echo "<img src=\"images/tick.png\">"; echo '</td><td>flash content:</td><td>'; echo $flash; echo '</td></tr> </table> </div>'; echo ' <div id="speed Optimization"> <h1>speed Optimization</h1>'; $pagespeed = $google->getpagespeedanalysis(); echo ' <table style="border-spacing:0px 0px" border="1"> <thead><tr> <th>requests</th> <th>hosts</th> <th>html</th> <th>css</th> <th>images</th> <th>javascript</th> <th>other</th> </tr></thead> <tbody align="center"><tr> <td>'; print_r($pagespeed->pagestats->numberresources); echo '</td> <td>'; print_r($pagespeed->pagestats->numberhosts); echo '</td> <td>'; print_r(round(@$htmlsize = $pagespeed->pagestats->htmlresponsebytes / echo ' KB'; echo '</td> <td>'; print_r(round(@$csssize = $pagespeed->pagestats->cssresponsebytes / echo ' KB'; echo '</td> <td>'; print_r(round(@$imagesize = $pagespeed->pagestats->imageresponsebytes / 1024, 2)); echo ' KB'; echo '</td> <td>'; print_r(round(@$javascriptsize = $pagespeed->pagestats->javascriptresponsebytes / 1024, 2)); echo ' KB'; echo '</td> <td>'; print_r(round(@$othersize = $pagespeed->pagestats->otherresponsebytes / 1024, 2)); -97-

102 echo ' KB'; echo '</td> </tr></tbody> </table> <br> <table style="border-spacing:10px 0px"> <tr><td><img src="images/google-safe.png"></td><td>google PageSpeed Score:</td><td>'; echo '/100</td><td><a href=" $LastEffectiveUrl. '&hl=en&tab=desktop" target="_blank">google PageSpeed Insights</a></td></tr> <tr><td>'; $pagesize = round($htmlsize + $csssize + $imagesize + $javascriptsize + $othersize, 2); if ($pagesize < 2000) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>page Size:</td><td>'; echo "$pagesize Kbytes"; echo '</td><td>world Wide Web average page size is ~2000 Kbytes.</td></tr> <tr><td>'; $scriptcount = Misc::GetScripts(); if ($scriptcount['totalscripts'] < 8) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>scripts:</td><td>'; echo $scriptcount['totalscripts']; echo '</td><td>'; if ($scriptcount['totalscripts'] < 8) echo 'Great, you use less than 8 scripts.'; echo'you should not use more than 7 scripts'; echo '</td></tr> <tr><td>'; if ($scriptcount['inlinescripts'] < 1) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>inline Scripts:</td><td>'; echo $scriptcount['inlinescripts']; echo '</td><td>'; if ($scriptcount['inlinescripts'] < 1) echo 'Great, you do not use Inline scripts.'; echo'you should not use Inline scripts. They increase page load time.'; echo '</td></tr> <tr><td>'; $csscount = $css['csscount']; if ($csscount < 4) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">"; echo '</td><td>css:</td><td>'; echo $csscount; echo '</td><td>'; if ($csscount < 4) -98-

103 echo 'Great, you use less than 4 CSS files.'; echo 'You should use less than 4 CSS files.'; echo '</td></tr> <tr><td>'; $inlinecss = Css::InlineCss(); if ($inlinecss == 0) echo "<img src=\"images/tick.png\">"; echo "<img src=\"images/x.png\">";echo '</td><td>inline Styles:</td><td>'; echo $inlinecss; echo '</td><td>'; if ($inlinecss == 0) echo 'Great, you do not use Inline CSS.'; echo 'You should not use Inline CSS.'; echo '</td></tr> </table> </div>'; echo ' <div id="speed Tips" style="margin-left:10px"> <h2>speed Tips</h2>'; $speedtips = array(); $speedtips[$pagespeed->formattedresults->ruleresults- >AvoidLandingPageRedirects->localizedRuleName] = $pagespeed->formattedresults->ruleresults->avoidlandingpageredirects->ruleimpact; $speedtips[$pagespeed->formattedresults->ruleresults->enablegzipcompression->localizedrulename] = $pagespeed->formattedresults->ruleresults->enablegzipcompression->ruleimpact; $speedtips[$pagespeed->formattedresults->ruleresults->leveragebrowsercaching->localizedrulename] = $pagespeed->formattedresults->ruleresults->leverage- BrowserCaching->ruleImpact; $speedtips[$pagespeed->formattedresults->ruleresults->mainresource- ServerResponseTime->localizedRuleName] = $pagespeed->formattedresults->ruleresults- >MainResourceServerResponseTime->ruleImpact; $speedtips[$pagespeed->formattedresults->ruleresults->minifycss->localizedrulename] = $pagespeed->formattedresults->ruleresults->minifycss->ruleimpact; $speedtips[$pagespeed->formattedresults->ruleresults->minifyhtml->localizedrulename] = $pagespeed->formattedresults->ruleresults->minifyhtml->ruleimpact; $speedtips[$pagespeed->formattedresults->ruleresults->minifyjavascript- >localizedrulename] = $pagespeed->formattedresults->ruleresults->minifyjavascript- >ruleimpact; $speedtips[$pagespeed->formattedresults->ruleresults->minimizerenderblockingresources->localizedrulename] = $pagespeed->formattedresults->ruleresults- >MinimizeRenderBlockingResources->ruleImpact; $speedtips[$pagespeed->formattedresults->ruleresults->optimizeimages- >localizedrulename] = $pagespeed->formattedresults->ruleresults->optimizeimages- >ruleimpact; $speedtips[$pagespeed->formattedresults->ruleresults->prioritizevisible- Content->localizedRuleName] = $pagespeed->formattedresults->ruleresults->prioritize- VisibleContent->ruleImpact; arsort($speedtips); foreach ($speedtips as $key => $value) { if ($value > 0) { echo "<img src=\"images/warning.png\"> "; echo $key; echo "<br>"; echo ' = $parsedurl['path']; -99-

104 $hosts = str_replace(' '', $host); if (strlen($domain) == strlen($hosts) && strlen(@$path) <= 1) { echo ' <div id="domain Search Traffic"> <h1>google Search Traffic</h1> <table style="border-spacing:20px 0px"> <tr><td align="center"><h3>united States of America</h3>'; echo SemRush::getDomainGraph(1, false, 'us', 320, 240); echo '</td> <td><h3 align="center">united Kingdom</h3>'; echo SemRush::getDomainGraph(1, false, 'uk', 320, 240); echo '</td> <td><h3 align="center">germany</h3>'; echo SemRush::getDomainGraph(1, false, 'de', 320, 240); echo '</td></tr> <tr><td><h3 align="center">france</h3>'; echo SemRush::getDomainGraph(1, false, 'fr', 320, 240); echo '</td> <td><h3 align="center">spain</h3>'; echo SemRush::getDomainGraph(1, false, 'es', 320, 240); echo '</td> <td><h3 align="center">italy</h3>'; echo SemRush::getDomainGraph(1, false, 'it', 320, 240); echo '</td></tr> <tr><td><h3 align="center">canada</h3>'; echo SemRush::getDomainGraph(1, false, 'ca', 320, 240); echo '</td> <td><h3 align="center">australia</h3>'; echo SemRush::getDomainGraph(1, false, 'au', 320, 240); echo '</td> <td><h3 align="center">russia</h3>'; echo SemRush::getDomainGraph(1, false, 'ru', 320, 240); echo '</td></tr> <tr><td><h3 align="center">brasil</h3>'; echo SemRush::getDomainGraph(1, false, 'br', 320, 240); echo '</td></tr> </table> </div>'; echo ' <div id="spider View"> <h2>spider View</h2> <table style="border-spacing:20px 0px" width="65%"> <tr><td>'; echo strip_html_tags($content); echo '</td></tr> </table> </div>'; echo ' <div id="link Analysis"> <h1>link Analysis</h1> <table style="width:45%;float:left"> <tr><td>'; $externalcount = count($external); $internalcount = count($internal); $brokencount = count($brokenlinks); echo '<font size=2><table style="border-spacing:20px 0px"> <thead><tr><th align="left">internal LINKS: '. $internalcount. '</th></tr>'; if ($internalcount > 0) { echo '<tr><th align="left">url</th><th align="left">anchor Text</th><th align="left">rel</th></tr></thead>'; for ($j = 0; $j < $internalcount; $j++) { $k = $j + 1; -100-

105 echo '<tr> <td align="left">'. $k. ') '. $internal[$j]['url']. '</td> <td align="left">'. $internal[$j]['anchor text']. '</td> <td align="left">'. $internal[$j]['rel']. '</td> </tr>'; echo '</table></font> </td></tr> </table>'; echo ' <table style="width:45%;"> <tr><td>'; echo '<font size=2><table style="border-spacing:20px 0px"> <thead><tr><th align="left">external LINKS: '. $externalcount. '</th></tr>'; if ($externalcount > 0) { echo '<tr><th align="left">url</th><th align="left">anchor Text</th><th align="left">rel</th></tr></thead>'; for ($j = 0; $j < $externalcount; $j++) { $k = $j + 1; echo '<tr> <td align="left">'. $k. ') '. $external[$j]['url']. '</td> <td align="left">'. $external[$j]['anchor text']. '</td> <td align="left">'. $external[$j]['rel']. '</td> </tr>'; echo '</table>'; echo '<table style="border-spacing:20px 0px"> <thead><tr><th align="left">broken LINKS: '. $brokencount. '</th></tr>'; if ($brokencount > 0) { echo '<tr><th align="left">url</th><th align="left">http status code</th></tr></thead>'; for ($j = 0; $j < $brokencount; $j++) { $k = $j + 1; echo '<tr> <td align="left">'. $k. ') '. $brokenlinks[$j]['url']. '</td> <td align="left">'. $brokenlinks[$j]['http status']. '</td> </tr>'; echo ' </table></font> </td></tr> </table>'; echo ' </div>'; if (count($url) <= 1) { echo '<div id="link Analysis Pie">'; $link = mysql_connect('localhost', 'root', ''); if (!$link) { die(); $db_selected = mysql_select_db('mydb', $link); if (!$db_selected) { $sql = 'CREATE DATABASE mydb'; $sql = "DROP TABLE IF EXISTS graph"; $retval = mysql_query($sql, $link); $sql = "CREATE TABLE IF NOT EXISTS graph( ". "External_Links INT, ". "Internal_Links INT, "

106 "Broken_Links INT); "; $retval = mysql_query($sql, $link); $sql = "INSERT INTO graph (External_Links, Internal_Links, Broken_Links) Analysis Chart"/> </div>';?> </body> </html> <?php echo ' </div>'; VALUES ('$externalcount', '$internalcount', '$brokencount')"; $retval = mysql_query($sql, $link); mysql_close($link); echo '<img src="chart.php" width="550px" height="300px" alt="link <div id="clearline" style="clear:both"> function mysearchcreated($array) { foreach ($array['regrinfo'] as $key => $values) { return $values['created']; function mysearchexpire($array) { foreach ($array['regrinfo'] as $key => $values) { return $values['expires']; function GetKeys($key) { for ($i = 0; $i < 5; $i++) = $key['data'][$i]['ph']; function GetKeyspos($key) { for ($i = 0; $i < 5; $i++) = $key['data'][$i]['po']; function GetKeysearch($key) { for ($i = 0; $i < 5; $i++) = $key['data'][$i]['nq']; function GetComps($comp) { for ($i = 0; $i < 5; $i++) = $comp['data'][$i]['dn']; function GetCompKey($comp) { for ($i = 0; $i < 5; $i++) { -102-

107 @$comps[] = $comp['data'][$i]['np']; function LastEffectiveUrl($url) { $curl = curl_init($url); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_NOBODY, true); curl_exec($curl); $LastEffectiveUrl = curl_getinfo($curl, CURLINFO_HTTP_CODE) == 200? curl_getinfo($curl, CURLINFO_EFFECTIVE_URL) : $url; curl_close($curl); return $LastEffectiveUrl; $end = microtime(true); echo '<br>'; echo "Page generated in ". round(($end - $start), 4). " seconds"; 5.3 Αναφορές του εργαλείου Αυτή η υποενότητα περιέχει screenshots με τις αναφορές του εργαλείου για 3 διαφορετικές ιστοσελίδες: 1) 2) 3) Η αναφορά περιέχει τις εξής ενότητες: 1) Site Info. Πληροφορίες για το domain, για τη χρήση Google Analytics από τη σελίδα, PageRank, backlinks, εικόνα με screenshot της σελίδας, Alexa Rank, η- μερομηνία καταχώρησης του domain name και ημερομηνία λήξης αυτής. 2) Social Visibility. Πληροφορίες για τη δημοφιλία της σελίδας στα Social Media π.χ. Facebook, Google+, Twitter. 3) Security. Περιλαμβάνει πληροφορίες σχετικά με το αν υπάρχουν malware στη σελίδα, server signature και SSL Certificate καθώς και αν η IP του server είναι καταχωρημένη στο spam directory. 4) Index. Πληροφορίες καταχώρησης του ιστότοπου στη Google καθώς και σε κάποια Directories. 5) On Page SEO. Περιλαμβάνει πληροφορίες σχετικά με το On Page SEO της σελίδας π.χ. headings, title, description, images, Microdata, links, deprecated html, έλεγχος URLs

108 6) Keyword Analysis. Πληροφορίες για τα keywords και τη χρήση τους στο περιεχόμενο της σελίδας, στο title και description tag και στα headings. 7) Usability. Δεδομένα που βοηθούν στην ευχρηστία της σελίδας. 8) Mobile Optimization. Περιλαμβάνει πληροφορίες σχετικά με τη βελτιστοποίηση της σελίδας για φορητές συσκευές. 9) Speed Optimization. Περιλαμβάνει πληροφορίες για την ταχύτητα της σελίδας π.χ. Google PageSpeed Score, μέγεθος της σελίδας και συμβουλές βελτιστοποίησης της. 10) Google Search Traffic. Γραφήματα με την επισκεψιμότητα της σελίδας από την μηχανή αναζήτησης της Google ανά χώρα. 11) Spider View. Εμφάνιση του κειμένου της σελίδας. 12) Link Analysis. Ανάλυση των links της σελίδας. Διαχωρισμός τους σε Internal, External και Broken links. Περιλαμβάνει και πληροφορίες για το Anchor text τους και αν το link είναι follow ή nofollow

109 -105-

110 -106-

111 -107-

112 -108-

113 -109-

114 -110-

115

116 -112-

117 -113-

118 -114-

119 -115-

120 -116-

121 -117-

122

123 -119-

124 -120-

125 -121-

126 -122-

127 -123-

128 -124-

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

ΠΑΡΟΥΣΙΑΣΗ ΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΙΣΤΟΣΕΛΙΔΩΝ ΓΙΑ ΤΙΣ ΜΗΧΑΝΕΣ ΑΝΑΖΗΤΗΣΗΣ, ΠΟΙΟΤΙΚΗ ΕΡΕΥΝΑ ΣΕ ΕΙΔΙΚΟΥΣ SEO Βαμβακάς Χρήστος Τασούλης Κωνσταντίνος ΠΑΡΟΥΣΙΑΣΗ ΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΙΣΤΟΣΕΛΙΔΩΝ ΓΙΑ ΤΙΣ ΜΗΧΑΝΕΣ ΑΝΑΖΗΤΗΣΗΣ, ΠΟΙΟΤΙΚΗ ΕΡΕΥΝΑ ΣΕ ΕΙΔΙΚΟΥΣ SEO INTERNET MARKETING Βασικότεροι τύποι: Social

Διαβάστε περισσότερα

2 Μάρκετινγκ µηχανών αναζήτησης (Search Engine Marketing).

2 Μάρκετινγκ µηχανών αναζήτησης (Search Engine Marketing). 1 Εισαγωγή στο Internet Marketing 1.1. Τι πρέπει να γνωρίζετε πριν ξεκινήσετε. 1.2. Εξοικείωση µε τα εργαλεία βελτιστοποίησης των µηχανών αναζήτησης. 2 Μάρκετινγκ µηχανών αναζήτησης (Search Engine Marketing).

Διαβάστε περισσότερα

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

Παγκόσμιος ιστός και Internet συχνά θεωρούνται το ίδιο πράγμα. Η αντίληψη αυτή είναι λανθασμένη καθώς ο ιστός αποτελεί μία μόνο εφαρμογή του Ο Παγκόσμιος Ιστός Ο Παγκόσμιος Ιστός (World Wide Web - WWW) είναι η πιο δημοφιλής υπηρεσία του Διαδικτύου, που μας επιτρέπει με ιδιαίτερα εύκολο τρόπο να έχουμε πρόσβαση σε μια τεράστια συλλογή ψηφιακών

Διαβάστε περισσότερα

Οικονομική Προσφορά Προώθηση ιστοσελίδας

Οικονομική Προσφορά Προώθηση ιστοσελίδας Οικονομική Προσφορά Προώθηση ιστοσελίδας 2015 Η εταιρία μας Η Moving up είναι μια εταιρία που δραστηριοποιείται στον τομέα των ολοκληρωμένων μορφών επικοινωνίας και διαφήμισης.όποιο και αν είναι το διαφημιστικό

Διαβάστε περισσότερα

E-commerce Networks & Applications. Η διαφήμιση στο Internet. Νίκος Κωνσταντίνου

E-commerce Networks & Applications. Η διαφήμιση στο Internet. Νίκος Κωνσταντίνου E-commerce Networks & Applications Η διαφήμιση στο Internet Νίκος Κωνσταντίνου Εισαγωγή Ηαπλήδημιουργίαενόςsite δεν είναι πλέον αρκετή Μια επένδυση σε ανάπτυξη και συντήρηση δεν αποδίδει χωρίς διαφήμιση

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΜΑΡΚΕΤΙΝΓΚ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΜΑΡΚΕΤΙΝΓΚ Ενότητα 8: Search Engine Marketing Βλαχοπούλου Μάρω Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως

Διαβάστε περισσότερα

φιλοξενία & διαχείριση ιστοσελίδων

φιλοξενία & διαχείριση ιστοσελίδων φιλοξενία & διαχείριση ιστοσελίδων για Ηλεκτρονικό Εμπόριο και Internet Marketing κατάλογος προϊόντων & υπηρεσιών 2015 Πακέτα φιλοξενίας - Περιγραφή Cloud Hosting - Κατοχύρωση ονόματος - Οικονομικό START

Διαβάστε περισσότερα

Πνευµατικά ικαιώµατα

Πνευµατικά ικαιώµατα Πνευµατικά ικαιώµατα Το παρόν είναι πνευµατική ιδιοκτησία της ACTA Α.Ε. και προστατεύεται από την Ελληνική και Ευρωπαϊκή νοµοθεσία που αφορά τα πνευµατικά δικαιώµατα. Απαγορεύεται ρητώς η δηµιουργία αντιγράφου,

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ Δρ. Κουζαπάς Δημήτριος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Μηχανές Αναζήτησης Στόχοι 1 Να εξηγήσουμε για ποιον λόγο μας είναι απαραίτητες

Διαβάστε περισσότερα

Liveschool Marketing Services

Liveschool Marketing Services Liveschool Marketing Services Περιεχόμενα Βελτιστοποίηση website SEO... 3 Social media design & creation... 4 Social media management... 4 Διαγωνισμοί Facebook... 5 Google Adwords... 5 Facebook Ads...

Διαβάστε περισσότερα

Τ.Ε.Ι. Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων Μεσολόγγι. 5 η Διάλεξη. Μάθημα: Τεχνολογίες Διαδικτύου

Τ.Ε.Ι. Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων Μεσολόγγι. 5 η Διάλεξη. Μάθημα: Τεχνολογίες Διαδικτύου Τ.Ε.Ι. Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων Μεσολόγγι 5 η Διάλεξη Μάθημα: Τεχνολογίες Διαδικτύου Περιεχόμενα 5 η διάλεξη Μηχανές αναζήτησης Αναζήτηση στο Web Ωραίο το Web και το Internet Μάθαμε

Διαβάστε περισσότερα

Τ.Ε.Ι. Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων Μεσολόγγι. 5 η Διάλεξη. Μάθημα: Τεχνολογίες Διαδικτύου

Τ.Ε.Ι. Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων Μεσολόγγι. 5 η Διάλεξη. Μάθημα: Τεχνολογίες Διαδικτύου Τ.Ε.Ι. Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων Μεσολόγγι 5 η Διάλεξη Μάθημα: Τεχνολογίες Διαδικτύου Περιεχόμενα 5 η διάλεξη Μηχανές αναζήτησης Αναζήτηση στο Web Ωραίο το Web και το Internet Μάθαμε

Διαβάστε περισσότερα

Η ΧΡΗΣΗ ΤΩΝ ΣΥΓΧΡΟΝΩΝ SOCIAL MEDIA

Η ΧΡΗΣΗ ΤΩΝ ΣΥΓΧΡΟΝΩΝ SOCIAL MEDIA Η ΧΡΗΣΗ ΤΩΝ ΣΥΓΧΡΟΝΩΝ SOCIAL MEDIA ΤΑΞΗ Α 2 ΛΥΚΕΙΟΥ ΕΡΓΑΣΙΑ ΜΑΘΗΤΡΙΩΝ: ΦΙΟΝΑ ΤΖΟΥΜΑΚΟΥ ΣΜΑΡΑΓΔΑ ΧΑΤΖΗΠΟΥΦΛΗ ΜΑΡΙΑΝΝΑ ΘΑΝΟΠΟΥΛΟΥ Η ΧΡΗΣΗ ΤΩΝ ΣΥΓΧΡΟΝΩΝ O όρος Κοινωνικά μέσα μαζικής ενημέρωσης αναφέρεται

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Μηχανές αναζήτησης

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Μηχανές αναζήτησης ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Μηχανές αναζήτησης Στόχοι 1 Να εξηγήσουμε για ποιον λόγο μας είναι απαραίτητες οι μηχανές αναζήτησης στον Παγκόσμιο Ιστό. Να περιγράψουμε κάποιους από τους

Διαβάστε περισσότερα

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

Παγκόσμιος ιστός και Internet συχνά θεωρούνται το ίδιο πράγμα. Η αντίληψη αυτή είναι λανθασμένη καθώς ο ιστός αποτελεί μία μόνο εφαρμογή του Ο Παγκόσμιος Ιστός Ο Παγκόσμιος Ιστός (World Wide Web - WWW) είναι η πιο δημοφιλής υπηρεσία του Διαδικτύου, που μας επιτρέπει με ιδιαίτερα εύκολο τρόπο να έχουμε πρόσβαση σε μια τεράστια συλλογή ψηφιακών

Διαβάστε περισσότερα

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Twitter Τμήμα Ψηφιακών Μέσων και Επικοινωνίας Δομή Εργαστηρίου Εισαγωγή Facebook (Χ2) Twitter Pinterest YouTube Instagram Wordpress Google + LinkedIn Hootsuite Επανάληψη

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Μηχανές αναζήτησης

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Μηχανές αναζήτησης ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Μηχανές αναζήτησης Στόχοι 1 Να εξηγήσουμε για ποιο λόγο μας είναι απαραίτητες οι μηχανές αναζήτησης στον Παγκόσμιο Ιστό. Να περιγράψουμε κάποιους

Διαβάστε περισσότερα

Τεχνικές SEO Επισκόπηση και Πρακτική Εφαρμογή

Τεχνικές SEO Επισκόπηση και Πρακτική Εφαρμογή ΑΤΕΙ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Τμήμα Μηχανικών Πληροφορικής ΤΕ Τεχνικές SEO Επισκόπηση και Πρακτική Εφαρμογή ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΚΑΡΑΚΟΥΣΗΣ ΑΝΔΡΕΑΣ Α.Μ Τ0-3163 Επιβλέπων: Φ.Κόκκορας, Καθ. Εφαρμογών

Διαβάστε περισσότερα

Εισαγωγή στις ΤΠΕ ΙΙ Γιάννης Βρέλλης ΠΤΔΕ-Πανεπιστήμιο Ιωαννίνων. World Wide Web. Παγκόσμιος Ιστός

Εισαγωγή στις ΤΠΕ ΙΙ Γιάννης Βρέλλης ΠΤΔΕ-Πανεπιστήμιο Ιωαννίνων. World Wide Web. Παγκόσμιος Ιστός Εισαγωγή στις ΤΠΕ ΙΙ Γιάννης Βρέλλης ΠΤΔΕ-Πανεπιστήμιο Ιωαννίνων World Wide Web Παγκόσμιος Ιστός Internet - WWW Internet: παγκόσμιο δίκτυο υπολογιστών που βασίζεται στο πρωτόκολο επικοινωνίας TCP/IP και

Διαβάστε περισσότερα

Πώς λειτουργεί το Google?

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

Διαβάστε περισσότερα

18α γενέθλια της Google

18α γενέθλια της Google 18α γενέθλια της Google Πότε είναι τα γενέθλια της Google? Η Google έχει γιορτάσει γενέθλια στις 8,7,26 Σεπτεμβρίου, από το 2006 ωστόσο οριστικοποιήθηκε ως γενέθλια ημέρα η 27 η Σεπτεμβρίου. Η ιστορία

Διαβάστε περισσότερα

ΕΠΛ 002: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Μηχανές αναζήτησης

ΕΠΛ 002: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Μηχανές αναζήτησης ΕΠΛ 002: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Μηχανές αναζήτησης Στόχοι 1 Να εξηγήσουμε για ποιον λόγο μας είναι απαραίτητες οι μηχανές αναζήτησης στον Παγκόσμιο Ιστό. Να περιγράψουμε κάποιους από τους

Διαβάστε περισσότερα

Δημιουργία μιας επιτυχημένης παρουσίας στο διαδίκτυο

Δημιουργία μιας επιτυχημένης παρουσίας στο διαδίκτυο Δημιουργία μιας επιτυχημένης παρουσίας στο διαδίκτυο 1 Πληροφορική: Τάσεις, Επιχειρηματικές Ευκαιρίες και Έρευνα ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ τμήματος Εφαρμοσμένης Πληροφορικής Πανεπιστημίου Μακεδονίας

Διαβάστε περισσότερα

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης YouTube Κουστουμπάρδη Ερατώ ΤΕΙ Ιονίων Νήσων Τμήμα Ψηφιακών Μέσων και Επικοινωνίας Τι είναι το YouTube Το YouTube είναι ένα Κοινωνικό Μέσο με βασικές λειτουργίες

Διαβάστε περισσότερα

checklist 1/2 ebook 12 Βήματα για να Αυξήσετε την Eπισκεψιμότητα του Website σας!

checklist 1/2 ebook 12 Βήματα για να Αυξήσετε την Eπισκεψιμότητα του Website σας! checklist 12 Βήματα για να Αυξήσετε την Eπισκεψιμότητα του Website σας! Το πρώτο μέρος του πιο ολοκληρωμένου οδηγού για websites με tips και σωστές πρακτικές για να αυξήσετε τις επιδόσεις της ιστοσελίδας

Διαβάστε περισσότερα

Eρευνητική εργασία Β Λυκείου με θέμα: Κοινωνικά δίκτυα στην εκπαίδευση, νέα εργαλεία, νέες προοπτικές, νέες προκλήσεις

Eρευνητική εργασία Β Λυκείου με θέμα: Κοινωνικά δίκτυα στην εκπαίδευση, νέα εργαλεία, νέες προοπτικές, νέες προκλήσεις Ομάδα Ο.Π.Α.Π.Σ. Eρευνητική εργασία Β Λυκείου με θέμα: Κοινωνικά δίκτυα στην εκπαίδευση, νέα εργαλεία, νέες προοπτικές, νέες προκλήσεις Βαρσάμης Παναγιώτης, Μπέρμπεης Γιάννης, Πλατής Σωτήρης, Τσαγγαίος

Διαβάστε περισσότερα

Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network).

Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network). ΙΔΡΥΜΑ ΝΕΟΛΑΙΑΣ ΚΑΙ ΔΙΑ ΒΙΟΥ ΜΑΘΗΣΗΣ ΥΠΗΡΕΣΙΕΣ ΔΙΑΔΙΚΤΥΟΥ Καλαμάτα, 2015 Το Διαδίκτυο Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network). Πρόκειται

Διαβάστε περισσότερα

Κοινωνικά Δίκτυα & Καλές Περιβαλλοντικές Πρακτικές

Κοινωνικά Δίκτυα & Καλές Περιβαλλοντικές Πρακτικές Κοινωνικά Δίκτυα & Καλές Περιβαλλοντικές Πρακτικές Αγγελική Καραματσούκη karamaag@gmail.com Πράσινες Ιδέες 22/10/2014 Γνωριμία 2 Αγγελική Καραματσούκη Πτυχίο Νοσηλευτικής, Πτυχίο Πληροφορικής Διδακτορικό

Διαβάστε περισσότερα

Internet Marketing. www.webkey.gr info@webkey.gr 694 8888 640

Internet Marketing. www.webkey.gr info@webkey.gr 694 8888 640 Internet Marketing www.webkey.gr info@webkey.gr 694 8888 640 Τι είναι το Internet Marketing? To Marketing είναι η διαδικασία η οποία συνδέει ένα προϊόν ή μια υπηρεσία με τον καταναλωτή. Το Internet Marketing

Διαβάστε περισσότερα

Βελτίωση της θέσης της ιστοσελίδας στις μηχανές αναζήτησης

Βελτίωση της θέσης της ιστοσελίδας στις μηχανές αναζήτησης Βελτίωση της θέσης της ιστοσελίδας στις μηχανές αναζήτησης Πέτρος Καρβέλης BSc, MSc Computer Science PhD Candidate Computer Science IT manager, Nextcom, Ioannina ΠΡΟΗΓΜΕΝΑ ΕΡΓΑΛΕΙΑ ΚΑΙ ΜΕΘΟΔΟΙ ΤΕΧΝΟΛΟΓΙΑΣ

Διαβάστε περισσότερα

ΤΑ ΚΟΙΝΩΝΙΚΑ ΔΙΚΤΥΑ ΣΤΗ ΖΩΗ ΤΩΝ ΕΦΗΒΩΝ

ΤΑ ΚΟΙΝΩΝΙΚΑ ΔΙΚΤΥΑ ΣΤΗ ΖΩΗ ΤΩΝ ΕΦΗΒΩΝ ΤΑ ΚΟΙΝΩΝΙΚΑ ΔΙΚΤΥΑ ΣΤΗ ΖΩΗ ΤΩΝ ΕΦΗΒΩΝ ΥΠΕΥΘΥΝΟΙ ΕΡΓΑΣΙΑΣ: ΚΑΪΣΗΣ ΑΛΕΞΑΝΔΡΟΣ, ΚΥΡΙΑΚΟΠΟΥΛΟΣ ΑΘΑΝΑΣΙΟΣ, ΚΟΥΤΡΟΥΛΗΣ ΒΑΣΙΛΕΙΟΣ, ΓΕΡΑΣΙΜΟΠΟΥΛΟΥ ΧΡΙΣΤΙΝΑ Υπεύθυνος καθηγητής: Λαμπροπούλου Γεωργία ΠΕΡΙΛΗΨΗ Η

Διαβάστε περισσότερα

Ideas that take you places

Ideas that take you places Ideas that take you places Ρόλος και δυνατότητες των Social Media στην σύγχρονη εκπαιδευτική διαδικασία Δημητρακοπούλου Κατερίνα Ms. Ιούνιος 2018 Τι άλλαξε με τα Social Media; Αλλαγές Ο τρόπος που ο κόσμος

Διαβάστε περισσότερα

ΔΙΑΔΙΚΤΥΑΚΗ ΠΡΟΒΟΛΗ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ

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

Διαβάστε περισσότερα

Εισαγωγη στα SOCIal MEDIA

Εισαγωγη στα SOCIal MEDIA Εισαγωγη στα SOCIal MEDIA ΕΙΔΙΚΑ ΘΕΜΑΤΙΚΑ ΠΡΟΓΡΑΜΜΑΤΑ ΔιοΙκηση, ΟργΑνωση και ΠληροφορικΗ για Μικρο-MεσαΙες ΕπιχειρΗσεις 14/5/2014 ΑΓΓΕΛΙΚΗ ΑΝΔΡΟΥΤΣΟΠΟΥΛΟΥ Εισαγωγή Κοινωνικά δίκτυα, αναπόσπαστο κομμάτι

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ì ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ "ʺΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΒΑΣΙΚΟΣ ΠΑΡΑΓΟΝΤΑΣ ΓΙΑ ΤΗΝ ΟΙΚΟΝΟΜΙΚΗ ΚΑΙ ΚΟΙΝΩΝΙΚΗ ΑΝΑΠΤΥΞΗ ΤΟΥ ΑΙΓΑΙΟΠΕΛΑΓΙΤΙΚΟΥ ΧΩΡΟΥ"ʺ «Στήήριξη και Ανάάδειξη Πολυνησιωτικώών ΑΕΙ» ΔΡΑΣΗ 4: Εκπαίίδευση

Διαβάστε περισσότερα

Παρακολούθηση και βελτιστοποίηση της επισκεψιμότητας ενός δικτυακού τόπου

Παρακολούθηση και βελτιστοποίηση της επισκεψιμότητας ενός δικτυακού τόπου Παρακολούθηση και βελτιστοποίηση της επισκεψιμότητας ενός δικτυακού τόπου Η περίπτωση του Σωμαράς Χρήστος Προγραμματιστής - Μηχανικός Μια φορά και έναν καιρό.. ήταν το Internet Marketing Digital Marketing,

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΜΑΡΚΕΤΙΝΓΚ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΜΑΡΚΕΤΙΝΓΚ Ενότητα 6: Internet Marketing Βλαχοπούλου Μάρω Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

Διαβάστε περισσότερα

Τα είδη των ιστοσελίδων. Web Sites E-commerce Sites CMS & Blog Sites CMS Flash Facebook Layouts Tumblr Themes

Τα είδη των ιστοσελίδων. Web Sites E-commerce Sites CMS & Blog Sites CMS Flash Facebook Layouts Tumblr Themes Ορισμός ιστοσελίδας Ιστοσελίδα (αγγλικά: web page) είναι ένα είδος εγγράφου του παγκόσμιου ιστού (WWW) που περιλαμβάνει πληροφορίες με την μορφή κειμένου, υπερκειμένου, εικόνας, βίντεο και ήχου. Τα είδη

Διαβάστε περισσότερα

Λίγα λόγια για εμένα και το ifeed.gr

Λίγα λόγια για εμένα και το ifeed.gr Περιεχόμενα Λίγα λόγια για εμένα και το ifeed.gr 2 Εισαγωγή 3 Σε ποιους απευθύνεται αυτό το Ebook 4 Τι είναι το SEO; 5 Γιατί είναι απαραίτητο το SEO; 5 Πως γίνεται να εμφανίσω την ιστοσελίδα μου υψηλότερα;

Διαβάστε περισσότερα

interactivecommunication Search Marketing White Paper Φεβρουάριος 2007 2007, Cybertechnics Ltd. All rights reserved.

interactivecommunication Search Marketing White Paper Φεβρουάριος 2007 2007, Cybertechnics Ltd. All rights reserved. interactivecommunication White Paper Φεβρουάριος 2007 2007, Cybertechnics Ltd. All rights reserved. ToSearchenginemarketing, ή SEM, αποτελείται απόμια σειρά marketing μεθόδων για την αύξηση τηςεμφάνισηςτου

Διαβάστε περισσότερα

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

ΕΓΧΕΙΡΙΔΙΟ ΟΡΘΩΝ ΠΡΑΚΤΙΚΩΝ ΠΑΡΟΥΣΙΑ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΜΕΣΟΛΟΓΓΙΟΥ ΕΓΧΕΙΡΙΔΙΟ ΟΡΘΩΝ ΠΡΑΚΤΙΚΩΝ ΠΑΡΟΥΣΙΑ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΜΕΣΟΛΟΓΓΙΟΥ σελ. 1 Από πού ξεκινάω; Σύνδεση στο Διαδίκτυο Για να ξεκινήσετε να ασχολείστε με το Διαδίκτυο (Internet)

Διαβάστε περισσότερα

Τεχνολογίες Πληροφορικής και Επικοινωνιών (ΤΠΕ) στις Μικρομεσαίες Επιχειρήσεις (ΜΜΕ)

Τεχνολογίες Πληροφορικής και Επικοινωνιών (ΤΠΕ) στις Μικρομεσαίες Επιχειρήσεις (ΜΜΕ) Τεχνολογίες Πληροφορικής και Επικοινωνιών (ΤΠΕ) στις Μικρομεσαίες Επιχειρήσεις (ΜΜΕ) Γιώργος Μανής Επίκουρος Καθηγητής Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων Τι είναι οι Τεχνολογίες

Διαβάστε περισσότερα

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Twitter Κουστουμπάρδη Ερατώ ΤΕΙ Ιονίων Νήσων Τμήμα Ψηφιακών Μέσων και Επικοινωνίας Twitter Το Twitter είναι μία micro-blogging υπηρεσία, η οποία επιτρέπει στους

Διαβάστε περισσότερα

Χαρακτηριστικά ιστοσελίδας

Χαρακτηριστικά ιστοσελίδας Χαρακτηριστικά ιστοσελίδας COSMOS4U Web Site Biz Χαρακτηριστικά Επιπλέον Δυνατότητες Προφίλ Εταιρίας Παρουσίαση της εταιρίας σας με φωτογραφικό υλικό και κείμενα. Τήρηση προδιαγραφών και χρήση λέξεων κλειδιά

Διαβάστε περισσότερα

Σεμινάριο Wordpress CMS (Δημιουργία Δυναμικών Ιστοσελίδων)

Σεμινάριο Wordpress CMS (Δημιουργία Δυναμικών Ιστοσελίδων) Σεμινάριο Wordpress CMS (Δημιουργία Δυναμικών Ιστοσελίδων) Τι είναι το Wordpress: To Wordpress είναι ένα δωρεάν ανοικτού κώδικα (open source) λογισμικό (εφαρμογή), με το οποίο μπορεί κάποιος να δημιουργεί

Διαβάστε περισσότερα

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης WEB 2.0 Ιστορία των Social Media Αγησίλαος Κονιδάρης Καθηγητής Εφαρμογών Τμήμα Ψηφιακών Μέσων και Επικοινωνίας Επικοινωνία konidari@teiion.gr ΩΡΕΣ ΓΡΑΦΕΙΟΥ Πέμπτη

Διαβάστε περισσότερα

Το διαδίκτυο στην υπηρεσία µιας επιχείρησης. Χρήση διαδικτύου & socialmedia ως εργαλεία διαφήµισης χαµηλού κόστους

Το διαδίκτυο στην υπηρεσία µιας επιχείρησης. Χρήση διαδικτύου & socialmedia ως εργαλεία διαφήµισης χαµηλού κόστους Σεµινάριο - εργαστήριο κατάρτισης γυναικών στo πλαίσιο του Έργου ΕΜΜΑ Το διαδίκτυο στην υπηρεσία µιας επιχείρησης Χρήση διαδικτύου & socialmedia ως εργαλεία διαφήµισης χαµηλού κόστους Εισηγητής: Αλέξανδρος

Διαβάστε περισσότερα

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Facebook (1 ο Μέρος) Ερατώ Κουστουμπάρδη Τμήμα Ψηφιακών Μέσων και Επικοινωνίας Σκοπός του Εργαστηρίου Να εισάγει τους φοιτητές στον κόσμο των μέσων κοινωνικής δικτύωσης

Διαβάστε περισσότερα

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Facebook (1 ο Μέρος) Ερατώ Κουστουμπάρδη ΤΕΙ Ιονίων Νήσων Τμήμα Ψηφιακών Μέσων και Επικοινωνίας Σκοπός του Εργαστηρίου Να εισάγει τους φοιτητές στον κόσμο των μέσων

Διαβάστε περισσότερα

Ηλεκτρονικό Επιχειρείν & Νέες Τεχνολογίες για Επιχειρηματικότητα ΔΕΟ45

Ηλεκτρονικό Επιχειρείν & Νέες Τεχνολογίες για Επιχειρηματικότητα ΔΕΟ45 Ηλεκτρονικό Επιχειρείν & Νέες Τεχνολογίες για Επιχειρηματικότητα ΔΕΟ45 ΤΟΜΟΣ Α «Ηλεκτρονικό Επιχειρείν» πηγή: ibm.com Ηλεκτρονικό Επιχειρείν Η εφαρμογή τεχνολογιών πληροφορίας και επικοινωνίας (ΤΠΕ) για

Διαβάστε περισσότερα

Στρατηγική ανάπτυξη δικτυακού κόμβου

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

Διαβάστε περισσότερα

Εθνικό Μετσόβιο Πολυτεχνείο

Εθνικό Μετσόβιο Πολυτεχνείο Εθνικό Μετσόβιο Πολυτεχνείο ΔΠΜΣ Τεχνο-Οικονομικά Συστήματα Ηλεκτρονικές Συναλλαγες ΘΕΜΑ : Επιχειρηματικό Μοντέλο του YouTube & Ηλεκτρονικές Συναλλαγές ΔΗΜΗΤΡΟΠΟΥΛΟΣ ΚΙΜΩΝ Διδάσκοντες : ΚΟΥΣΟΥΡΗΣ Σ., ΛΑΜΠΑΘΑΚΗ

Διαβάστε περισσότερα

ICOP - ΥΠΗΡΕΣΙΕΣ INTERNET-WEBSOLUTIONS ΠΡΟΤΑΣΗ-ΑΝΑΘΕΣΗ ΕΡΓΟΥ

ICOP - ΥΠΗΡΕΣΙΕΣ INTERNET-WEBSOLUTIONS ΠΡΟΤΑΣΗ-ΑΝΑΘΕΣΗ ΕΡΓΟΥ Θρασυμάχου 14, Αθήνα - 6ος όροφος Τηλέφωνο: 210 2139880 Fax: 210 2139916 E-mail: sales@icop.gr www.icop.gr ICOP - ΥΠΗΡΕΣΙΕΣ INTERNET-WEBSOLUTIONS ΠΡΟΤΑΣΗ-ΑΝΑΘΕΣΗ ΕΡΓΟΥ Ημερομηνία: E-mail:.. Εταιρεία:..

Διαβάστε περισσότερα

Social Media Marketing Presentation

Social Media Marketing Presentation ΚΑΠΑ ΣΙΓΜΑ ΔΕΛΤΑ Α.Ε Σητείας 8 & Μεσολογγίου, 14451 Μεταμόρφωση Αττικής Τηλέφωνο: 210 211 7676 E-mail: socialmedia@ksd.gr Social Media Marketing Presentation Σκοπός Το e-word-of-mouth είναι ο πιο αποδοτικός

Διαβάστε περισσότερα

Χαρακτηριστικά ιστοσελίδας

Χαρακτηριστικά ιστοσελίδας Χαρακτηριστικά ιστοσελίδας COSMOS4U Web Site Pro Χαρακτηριστικά Επιπλέον Δυνατότητες Προφίλ Εταιρίας Παρουσίαση της εταιρίας σας με φωτογραφικό υλικό και κείμενα. Τήρηση προδιαγραφών και χρήση λέξεων κλειδιά

Διαβάστε περισσότερα

Χαρακτηριστικά ιστοσελίδας

Χαρακτηριστικά ιστοσελίδας Χαρακτηριστικά ιστοσελίδας COSMOS4U Web Portal Χαρακτηριστικά Επιπλέον Δυνατότητες Έως 10 κατηγορίες αρθρογραφίας και 10 υποκατηγορίες Δημιουργούμε έως 10 κατηγορίες αρθρογραφίας που η κάθε μια μπορεί

Διαβάστε περισσότερα

5 ο ΚΕΦΑΛΑΙΟ: ΠΡΑΚΤΙΚΟ ΚΟΜΜΑΤΙ

5 ο ΚΕΦΑΛΑΙΟ: ΠΡΑΚΤΙΚΟ ΚΟΜΜΑΤΙ 5 ο ΚΕΦΑΛΑΙΟ: ΠΡΑΚΤΙΚΟ ΚΟΜΜΑΤΙ 5.1 Εισαγωγή Το πρακτικό κομμάτι της πτυχιακής μας εργασίας αφορά την δημιουργία μιας λειτουργικής ιστοσελίδας με την χρήση της πλατφόρμας του Weebly, που αποτελεί μια σύγχρονη

Διαβάστε περισσότερα

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

ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΥΠΗΡΕΣΙΑΣ [ΥΠΗΡΕΣΊΑ 4 - ΑΝΆΠΤΥΞΗ ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΥΠΗΡΕΣΙΑΣ [ΥΠΗΡΕΣΊΑ 4 - ΑΝΆΠΤΥΞΗ ΗΛΕΚΤΡΟΝΙΚΉΣ ΥΠΗΡΕΣΊΑΣ ΑΝΑΖΉΤΗΣΗΣ ΕΘΕΛΟΝΤΏΝ ΚΑΙ ΕΠΑΓΓΕΛΜΑΤΙΏΝ] ΓΙΑ ΤΟN ΧΡΗΣΤΗ [13/01/2014] έκδοση: 1.0 1 Περιεχόμενα 1. Έλεγχος εγγράφου...3 2. Εισαγωγή...4

Διαβάστε περισσότερα

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Instagram Τμήμα Ψηφιακών Μέσων και Επικοινωνίας Δομή Εργαστηρίου Εισαγωγή Facebook (Χ2) Twitter Pinterest YouTube Instagram Wikipedia Wordpress Google + LinkedIn

Διαβάστε περισσότερα

Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress

Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress ΚΟΤΣΟΓΙΑΝΝΙΔΗΣ ΛΑΖΑΡΟΣ Επιβλέπων καθηγητής Σφέτσος Παναγιώτης ΗΛΕΚΤΡΟΝΙΚΟ ΕΜΠΟΡΙΟ Ως Ηλεκτρονικό Εμπόριο ή

Διαβάστε περισσότερα

ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΙΣΤΟΤΟΠΩΝ

ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΙΣΤΟΤΟΠΩΝ ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΙΣΤΟΤΟΠΩΝ 1Τι είναι ο Παγκόσµιος Ιστός; Λόγω της µεγάλης απήχησης του Παγκόσµιου Ιστού πολλές φορές ταυτίζουµε τον Παγκόσµιο Ιστό µε το Διαδίκτυο. Στην πραγµατικότητα αυτή η αντίληψη

Διαβάστε περισσότερα

DIGITAL MARKETING. ΠΩΣ τα αξιοποιείτε και ΠΟΙΟΣ τα λειτουργεί;

DIGITAL MARKETING. ΠΩΣ τα αξιοποιείτε και ΠΟΙΟΣ τα λειτουργεί; DIGITAL MARKETING ΠΩΣ τα αξιοποιείτε και ΠΟΙΟΣ τα λειτουργεί; Η άποψή μας. Η ζωή εξελίσσεται. Αυτή η κοινότυπη φράση από την αρχαιότητα «Τα πάντα ρει» είναι και η ουσία που στηρίζεται η πρότασή μας. Εμείς

Διαβάστε περισσότερα

Χαρακτηριστικά ιστοσελίδας

Χαρακτηριστικά ιστοσελίδας Χαρακτηριστικά ιστοσελίδας COSMOS4U e-shop Χαρακτηριστικά Επιπλέον Δυνατότητες Κατάλογος προϊόντων για πώληση Δυνατότητα δημιουργίας καταλόγου απεριόριστου αριθμού προϊόντων και κατηγοριών. Εμφάνιση χαρακτηριστικών

Διαβάστε περισσότερα

Προώθηση Ιστοσελίδων Internet Marketing. 14/1/2014 Τραχαλάκης Παναγιώτης

Προώθηση Ιστοσελίδων Internet Marketing. 14/1/2014 Τραχαλάκης Παναγιώτης Προώθηση Ιστοσελίδων Internet Marketing Τραχαλάκης Παναγιώτης Προγραμματιστής Αναλυτής Ειδικός εφαρμογών Διαχείριση Επιχειρησιακής Γνώσης και υπηρεσίες Internet marketing 1996 Κατασκευή ιστοσελίδων. 2000

Διαβάστε περισσότερα

ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ 1: ΥΠΗΡΕΣΙΕΣ - ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ

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

Διαβάστε περισσότερα

Internet Business Hellas

Internet Business Hellas Internet Business Hellas Περιεχόμενα Εισαγωγή email marketing IBNEWSLETTER Χαρακτηριστικά Πλεονεκτήματα Επικοινωνία Εισαγωγή email marketing «Το μάρκετινγκ μέσω ηλεκτρονικού ταχυδρομείου συνίσταται στην

Διαβάστε περισσότερα

Ο αλγόριθμος PageRank της Google

Ο αλγόριθμος PageRank της Google Ο αλγόριθμος PageRank της Google 1 Η μηχανή αναζήτησης Google Το Google ξεκίνησε σαν μια κολεγιακή εργασία από τον Larry Page και τον Sergey Brin το 1996 με σκοπό την κατασκευή μιας μηχανής αναζήτησης

Διαβάστε περισσότερα

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Εισαγωγή Κουστουμπάρδη Ερατώ Τμήμα Ψηφιακών Μέσων και Επικοινωνίας Επικοινωνία eratokoustoubar@gmail.com Προπαρασκευαστικά του Εργαστηρίου 1. Εγγραφή στην υπηρεσία

Διαβάστε περισσότερα

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

ΕΓΧΕΙΡΙΔΙΟ ΟΡΘΩΝ ΠΡΑΚΤΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΕΣ ΚΑΜΠΑΝΙΕΣ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΜΕΣΟΛΟΓΓΙΟΥ ΕΓΧΕΙΡΙΔΙΟ ΟΡΘΩΝ ΠΡΑΚΤΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΕΣ ΚΑΜΠΑΝΙΕΣ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΜΕΣΟΛΟΓΓΙΟΥ Ηλεκτρονικές Καμπάνιες σελ. 1 Από πού ξεκινάω; Τι υπάρχει γύρω μου; Αφού έχετε αποκτήσει ενεργή παρουσία στο

Διαβάστε περισσότερα

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

Η επιλογή γλώσσας (π.χ. ελληνικά) διεπαφής του συστήματος, βρίσκεται στο υποσέλιδο του ιστότοπου Wordpress.com Περιεχόμενα Wordpress... 1 Ρύθμιση γλώσσας... 1 Δημιουργία λογαριασμού και σύνδεση... 2 Δημιουργία νέου ιστότοπου... 2 Πλατφόρμα διαχείρισης... 5 Αναγνώστης... 5 Πλατφόρμα ιστοτόπου... 5

Διαβάστε περισσότερα

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Εισαγωγή Κουστουμπάρδη Ερατώ ΤΕΙ Ιοίων Νήσων Τμήμα Ψηφιακών Μέσων και Επικοινωνίας Προπαρασκευαστικά του Εργαστηρίου 1. Εγγραφή στην υπηρεσία ενεργοποίησης ηλεκτρονικού

Διαβάστε περισσότερα

Κεφάλαιο 15 Κοινωνικά Δίκτυα

Κεφάλαιο 15 Κοινωνικά Δίκτυα Κεφάλαιο 15 Κοινωνικά Δίκτυα 1 15.1 Γενικά για τα Κοινωνικά Δίκτυα Κοινωνικό Δίκτυο: ηλεκτρονική πλατφόρμα που παρέχει στα μέλη της δυνατότητες διασύνδεσης και αλληλεπίδρασης. Πρόκειται για εικονικές κοινότητες,

Διαβάστε περισσότερα

Τα κοινωνικά δίκτυα του δικτύου, όπως Twitter, το Linkedln και το Facebook απλοποιούν τις προτιμήσεις του καταναλωτικού κοινού στις τάσεις της αγοράς

Τα κοινωνικά δίκτυα του δικτύου, όπως Twitter, το Linkedln και το Facebook απλοποιούν τις προτιμήσεις του καταναλωτικού κοινού στις τάσεις της αγοράς Κοινωνικά Δίκτυα ονομάζουμε τις διαδικτυακές τεχνολογικές πλατφόρμες οι οποίες επιτρέπουν τη δημοσίευση περιεχομένου και πληροφοριών, την ανάπτυξη κατ αρχήν επικοινωνιακών και στη συνέχεια κοινωνικών,

Διαβάστε περισσότερα

Περιεχόμενα. Εισαγωγή

Περιεχόμενα. Εισαγωγή 1 Περιεχόμενα Εισαγωγή Seo και βασική θεωρεία.. 4 Τι είναι το Seo 4 Γιατί είναι τόσο σημαντικό για μια ιστοσελίδα..7 Πόσο έχει αλλάξει τα τελευταία 2 χρόνια 13 Μηχανές αναζήτησης 15 Τι είναι και πως λειτουργούν

Διαβάστε περισσότερα

Website review lalemou.com

Website review lalemou.com Website review lalemou.com Generated on September 16 2017 11:58 AM The score is 52/100 SEO Content Title Κάνε Γνωριμίες στο chat μπαμ! Live & Ανώνυμα lalemou Length : 54 Perfect, your title contains between

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΙΚΟ ΕΠΙΜΟΡΦΩΤΙΚΟ ΣΕΜΙΝΑΡΙΟ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΙΚΟ ΕΠΙΜΟΡΦΩΤΙΚΟ ΣΕΜΙΝΑΡΙΟ ΠΛΗΡΟΦΟΡΙΚΗΣ Web 2.0 ΕΦΑΡΜΟΓΕΣ & ΕΚΠΑΙΔΕΥΤΙΚΑ ΕΡΓΑΛΕΙΑ Α' Μέρος Εισαγωγικό Σεμινάριο Πληροφορικής. Ιούνιος 2014. ΚΕ.ΠΛΗ.ΝΕ.Τ. Ξάνθης 1 Α) ΔΗΜΙΟΥΡΓΊΑ ΛΟΓΑΡΙΑΣΜΟΥ Google

Διαβάστε περισσότερα

Ποια cookies χρησιμοποιούμε στον ιστότοπό μας;

Ποια cookies χρησιμοποιούμε στον ιστότοπό μας; Πολιτική Cookies Χρησιμοποιούμε cookies στον ιστότοπο μας για τη διαχείριση των περιόδων σύνδεσης, για την παροχή εξατομικευμένων ιστοσελίδων και για την προσαρμογή διαφημιστικού και άλλου περιεχομένου

Διαβάστε περισσότερα

Μελέτη Περίπτωσης (case study) spitishop.gr

Μελέτη Περίπτωσης (case study) spitishop.gr Μελέτη Περίπτωσης (case study) spitishop.gr Μελέτη Περίπτωσης spitishop.gr Περιεχόμενα Μελέτης Γενικές πληροφορίες εταιρίας Ανάλυση ανταγωνιστών Στρατηγικές προώθησης της εταιρικής ταυτότητας στο Web H

Διαβάστε περισσότερα

Velvet Studio. Creative Agency

Velvet Studio. Creative Agency Velvet Studio Creative Agency www.velvetstudio.gr info@velvetstudio.gr Αμαζονων 46 Ηράκλειο Κρήτης Το VelvetStudio είναι ένα πρωτοποριακό Creative Agency που ειδικεύεται στις υπηρεσίες διαδικτύου. Καλύπτουμε

Διαβάστε περισσότερα

SITEBUILDER ΠΛΑΤΦΟΡΜΑ ΑΥΤΟΝΟΜΗΣ ΚΑΤΑΣΚΕΥΗΣ & ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΑΚΩΝ ΤΟΠΩΝ (WEBSITE) ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ. Version 2.0

SITEBUILDER ΠΛΑΤΦΟΡΜΑ ΑΥΤΟΝΟΜΗΣ ΚΑΤΑΣΚΕΥΗΣ & ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΑΚΩΝ ΤΟΠΩΝ (WEBSITE) ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ. Version 2.0 SITEBUILDER ΠΛΑΤΦΟΡΜΑ ΑΥΤΟΝΟΜΗΣ ΚΑΤΑΣΚΕΥΗΣ & ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΑΚΩΝ ΤΟΠΩΝ (WEBSITE) ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Version 2.0 Περιεχόμενα 1. Οδηγίες πρόσβασης... 3 2. Οδηγίες Σχεδιασμού Website... 4 2.1. Έναρξη...

Διαβάστε περισσότερα

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης

Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Εισαγωγή στα Μέσα Κοινωνικής Δικτύωσης Pinterest Τμήμα Ψηφιακών Μέσων και Επικοινωνίας Δομή Εργαστηρίου Εισαγωγή Facebook (Χ2) Twitter Pinterest Instagram YouTube Wordpress Google + LinkedIn Hootsuite

Διαβάστε περισσότερα

Εισαγωγή στον Παγκόσμιο ιστό και στη γλώσσα Html. Χρ. Ηλιούδης

Εισαγωγή στον Παγκόσμιο ιστό και στη γλώσσα Html. Χρ. Ηλιούδης Εισαγωγή στον Παγκόσμιο ιστό και στη γλώσσα Html Χρ. Ηλιούδης Παγκόσμιος Ιστός (WWW) Ο Παγκόσμιος Ιστός (World Wide Web WWW), ή απλώς Ιστός, βασίζεται στην ιδέα των κατανεμημένων πληροφοριών. Αντί όλες

Διαβάστε περισσότερα

Δημιουργία. Ιστολογίου (blog) 7/5/2015. Χρυσάνθη Γιομέλου ΚΔΒΜ ΝΙΚΑΙΑΣ

Δημιουργία. Ιστολογίου (blog)  7/5/2015. Χρυσάνθη Γιομέλου ΚΔΒΜ ΝΙΚΑΙΑΣ Δημιουργία 7/5/2015 Ιστολογίου (blog) www.blogger.com Χρυσάνθη Γιομέλου ΚΔΒΜ ΝΙΚΑΙΑΣ ΠΕΡΙΕΧΟΜΕΝΑ TI EINAI TO ΙΣΤΟΛΟΓΙΟ... 2 ΓΙΑΤΙ ΙΣΤΟΛΟΓΙΟ;... 2 ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΤΗΣ ΧΡΗΣΗΣ ΙΣΤΟΛΟΓΙΟΥ... 2 ΔΗΜΙΟΥΡΓΙΑ ΛΟΓΑΡΙΑΣΜΟΥ

Διαβάστε περισσότερα

Γαβαλάς Δαμιανός dgavalas@aegean.gr

Γαβαλάς Δαμιανός dgavalas@aegean.gr Δικτυακά Πολυμέσα ΙΙ Διάλεξη #1 η : Οργάνωση & στόχοι μαθήματος, καλές αρχές σχεδιασμού στο web, τα μεγαλύτερα λάθη στον web σχεδιασμό Γαβαλάς Δαμιανός dgavalas@aegean.gr 1 Στόχοι μαθήματος Κατανόηση της

Διαβάστε περισσότερα

Περιεχόμενα. Δημιουργία σύνδεσης... 27 5. ΤΙ ΕΙΝΑΙ ΙΣΤΟΣΕΛΙΔΕΣ ΚΑΙ ΤΙ ΤΟΠΟΘΕΣΙΕΣ ΙΣΤΟΥ... 37. Γνωριμία με μια ιστοσελίδα:... 38

Περιεχόμενα. Δημιουργία σύνδεσης... 27 5. ΤΙ ΕΙΝΑΙ ΙΣΤΟΣΕΛΙΔΕΣ ΚΑΙ ΤΙ ΤΟΠΟΘΕΣΙΕΣ ΙΣΤΟΥ... 37. Γνωριμία με μια ιστοσελίδα:... 38 Περιεχόμενα ΠΡΟΛΟΓΟΣ... 11 ΔΙΑΔΙΚΤΥΟ... 13 1. ΙΣΤΟΡΙΑ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ... 15 2. ΤΙ ΕΙΝΑΙ ΤΟ ΔΙΑΔΙΚΤΥΟ INTERNET;... 16 3. ΤΙ ΠΡΟΣΦΕΡΕΙ ΤΟ ΔΙΑΔΙΚΤΥΟ, ΤΙ ΜΠΟΡΕΙ ΝΑ ΒΡΕΙ ΚΑΝΕΙΣ... 19 4. ΤΙ ΑΠΑΙΤΕΙΤΑΙ ΓΙΑ ΝΑ

Διαβάστε περισσότερα

SEO ΓΙΑ ΜΙΑ ΘΕΣΗ ΣΤHΝ GOOGLE

SEO ΓΙΑ ΜΙΑ ΘΕΣΗ ΣΤHΝ GOOGLE (Μέθοδοι Βελτιστοποίησης Κατάταξης Ιστοσελίδων Στη Μηχανή Αναζήτησης της Google) (Για αρχάριους χρήστες) ebooks4greeks.gr e-έκδοση 2010 (Μέθοδοι Βελτιστοποίησης Κατάταξης Ιστοσελίδων Στη Μηχανή Αναζήτησης

Διαβάστε περισσότερα

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

Εταιρική Παρουσίαση. Παρέχουμε υψηλής ποιότητας υπηρεσίες διαδικτύου και εφαρμογές. Κοινωνική Δικτύωση Παρέχουμε υψηλής ποιότητας υπηρεσίες διαδικτύου και εφαρμογές Εταιρική Παρουσίαση Ιστοσελίδα: http://www.webgift.gr Τηλέφωνο Επικοινωνίας: 2810225611 Ε-mail: info@webgift.gr Κοινωνική Δικτύωση Facebook

Διαβάστε περισσότερα

Δικτυακοί τόποι. Η σχεδίαση ενός δικτυακού τόπου. Δρ. Ματθαίος Α. Πατρινόπουλος

Δικτυακοί τόποι. Η σχεδίαση ενός δικτυακού τόπου. Δρ. Ματθαίος Α. Πατρινόπουλος Δικτυακοί τόποι Η σχεδίαση ενός δικτυακού τόπου Δρ. Ματθαίος Α. Πατρινόπουλος Πώς χρησιμοποιούμε το διαδίκτυο; ΔΙΑΦΑΝΕΙΕΣ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΔΙΑΔΙΚΤΥΟΥ. 2 Από το www.smartinsights.

Διαβάστε περισσότερα

ΔΙΑΔΙΚΤΥΑΚΗ ΠΡΟΒΟΛΗ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ

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

Διαβάστε περισσότερα

Εισαγωγή στις αρχές του CMS. Joomla Training. Wordpress Training.

Εισαγωγή στις αρχές του CMS. Joomla Training. Wordpress Training. Εισαγωγή στις αρχές του CMS. Joomla Training. Wordpress Training. Τι είναι το CMS? Η ιστορία των CMSs Δυνατότητες των CMS Είναι τα CMSs οι σωστές λύσεις; Server-side λογισμικό που εξειδικεύεται στην απλοποιήσει,

Διαβάστε περισσότερα

οµάδα 57 Ζαφειριάδης Δηµήτρης Μπατσούκας Δηµήτρης Case Study Intel Εργασία για «Πληροφοριακά Συστήµατα Μάρκετινγκ»

οµάδα 57 Ζαφειριάδης Δηµήτρης Μπατσούκας Δηµήτρης Case Study Intel Εργασία για «Πληροφοριακά Συστήµατα Μάρκετινγκ» οµάδα 57 Ζαφειριάδης Δηµήτρης Μπατσούκας Δηµήτρης Case Study Intel Εργασία για «Πληροφοριακά Συστήµατα Μάρκετινγκ» Τι είναι Πολιτική Προβολής µέσα από το διαδίκτυο ; Ο όρος αναφέρεται στην διαφήµιση (προώθηση)

Διαβάστε περισσότερα

Content Marketing. Όροι προς ανάλυση:

Content Marketing. Όροι προς ανάλυση: Content Marketing Όροι προς ανάλυση: Digital Content Marketing Social Marketing Content Online & Offline Marketing Συσχετισμός δυνητικών πελατών με το brand 1 18 Εκπαιδευτικές Ενότητες 91 Συνολικά Κεφάλαια

Διαβάστε περισσότερα

ICOP - ΥΠΗΡΕΣΙΕΣ - INTERNET WEBMARKETING ΠΡΟΣΦΟΡΑ ΣΥΣΤΗΜΑΤΑ ΦΙΛΟΞΕΝΙΑΣ

ICOP - ΥΠΗΡΕΣΙΕΣ - INTERNET WEBMARKETING ΠΡΟΣΦΟΡΑ ΣΥΣΤΗΜΑΤΑ ΦΙΛΟΞΕΝΙΑΣ Θρασυμάχου 14, Αθήνα - 6ος όροφος Τηλέφωνο: 210 2139880 Fax: 210 2139916 E-mail: sales@icop.gr www.icop.gr ICOP - ΥΠΗΡΕΣΙΕΣ - INTERNET WEBMARKETING ΠΡΟΣΦΟΡΑ Ημερομηνία.. E-mail. Όνομα υπευθύνου Εταιρεία.

Διαβάστε περισσότερα

ΔΙΑΔΙΚΤΥΑΚΟ ΜΑΡΚΕΤΙΝΓΚ. Το Internet Marketing είναι το marketing προϊόντων και υπηρεσιών στο Διαδίκτυο.

ΔΙΑΔΙΚΤΥΑΚΟ ΜΑΡΚΕΤΙΝΓΚ. Το Internet Marketing είναι το marketing προϊόντων και υπηρεσιών στο Διαδίκτυο. ΔΙΑΔΙΚΤΥΑΚΟ ΜΑΡΚΕΤΙΝΓΚ Το Internet Marketing είναι το marketing προϊόντων και υπηρεσιών στο Διαδίκτυο. Το διαδικτυακό μάρκετινγκ (internet marketing) είναι ένας νέος χώρος επικοινωνίας, με ιδιαίτερα ευρηματικές

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Εξαγωγή γεωγραφικής πληροφορίας από δεδομένα παρεχόμενα από χρήστες του

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ «ΨΗΦΙΑΚΩΝ ΑΡΘΡΩΝ» ΜΕ ΧΡΗΣΗ ΚΑΙ ΜΕΘΟΔΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΔΙΑΔΙΚΤΥΟΥ HTML, JAVASCRIPT,

Διαβάστε περισσότερα

INBOUND MARKETING CRASH COURSE!

INBOUND MARKETING CRASH COURSE! 1 INBOUND MARKETING CRASH COURSE! ΓΕΙΑ ΣΑΣ... ΑΠΟ ΤΗ wedia. 2 ΓΕΙΑ ΣΑΣ ΑΠΌ ΤΗ WEDIA. Φανταζόμαστε ότι μέχρι τώρα θα έχετε διαβάσει στο blog της wedia τα άρθρα που αφορούν το Inbound Marketing και θα σας

Διαβάστε περισσότερα

Digital Marketing. Περακάκης Μάνος Καθηγητής Εφαρμογών Τομέας Ηλεκτρονικού Μάρκετινγκ

Digital Marketing. Περακάκης Μάνος Καθηγητής Εφαρμογών Τομέας Ηλεκτρονικού Μάρκετινγκ Digital Marketing Περακάκης Μάνος Καθηγητής Εφαρμογών Τομέας Ηλεκτρονικού Μάρκετινγκ Internet: Παρελθόν και Παρόν Παλιότερα το Internet ήταν στατικό και η αλληλεπίδραση με τον χρήστη ήταν περιορισμένη

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. Internet -

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. Internet - Πανεπιστήμιο Κύπρου Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη της Πληροφορικής και Πληροφοριακά Συστήματα Εργαστήριο - ΕΠΛ003 Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο Internet - Email Παναγιώτης

Διαβάστε περισσότερα