Spis treści 1. 2. 3. 4. 5. 6. 7. 8. 9. Streszczenie Summary In English Language Wstęp Zalety e-commerce Technologie i narzędzia projektowe 3.1. Język skryptowy PHP 3.2. Szablony Smarty 3.2.1. System szablonów Smarty 3.2.2. Przykład użycia 3.2.3. Inne rozwiązania 3.3. PEAR 3.3.1. Moduł PEAR DB 3.4. Baza danych MySQL 3.4.1. Niektóre z zalet MySQL Projektowanie aplikacji 4.1. Uwzględnienie możliwości rozbudowy witryny 4.2. Architektura trójwarstwowa Wykorzystanie i opis aplikacji 5.1. Katalog produktów 5.2. Wyszukiwanie produktów w katalogu 5.3. Zarządzanie katalogiem 5.4. Koszyk na zakupy 5.5. Obsługa zamówień 5.6. Rekomendowanie produktów 5.7. Dane klientów 5.8. Oceny i recenzje produktów Bezpieczeństwo technologii e-commerce 6.1. Rozwiązania zwiększające bezpieczeństwo zastosowane w aplikacji 6.2. Serwer internetowy Apache Zaistnienie w internecie 7.1. Wyszukiwarki 7.2. Pozycjonowanie Zakończenie Bibliografia 1 3. Technologie i narzędzia projektowe 3.1 Język skryptowy PHP Język PHP jest językiem wysokiego poziomu, czyli jego polecenia nie przekładają się bezpośrednio na rozkazy procesora taj jak dzieje się to w przypadku różnych odmian asemblera. Jest interpreterem zgodnym z ideą open source. Jest przeznaczony do tworzenie dynamicznych, interaktywnych stron WWW. Na oficjalnej stronie projektu PHP (pod adresem http://www.php.net (1)), twórcy umieścili następującą definicje: „PHP jest często stosowanym językiem skryptowym ogólnego przeznaczenia, który został zaprojektowany specjalnie dla aplikacji WWW i którego kod może być osadzany w dokumentach HTML”. Nazwa języka stanowi skrót od słów Personal Home Page, lecz zgodnie z konwencją nazewnictwa obowiązującą dla produktów GNU (Gnu to skrót od słów Gnu’s Not Unix – Gnu to nie Unix – projekt bezpłatnego systemu operacyjnego , zgodnego funkcjonalnie z systemem Unix), skrót ten jest obecnie rozwijany jako PHP Hypertext Preprocessor. Język PHP został stworzony w 1994 roku, jego twórcą jest jeden człowiek, Rasmus Lerdorf. Od tego czasu PHP uległo czterem poważnym modyfikacjom, których wynikiem jest obecny, dojrzały produkt o szerokim zastosowaniu. W kwietniu 2007 roku PHP był wykorzystywany w około 20 milionach domen. Rysunek 1. Wykres przedstawiający użycie PHP w domenach od kwietnia 2000 do kwietnia 2007 roku. ( Wykres pobrany ze strony http://www.php.net (1), źródło danych: http://news.netcraft.com (2) 2 Wśród przyczyn sukcesu tak szerokiego stosowania jeżyka PHP wymienia się: Interpreter PHP jest dostępny za darmo (idea open surce) – przy użyciu razem z serwerami przeznaczonymi dla systemów Linux język PHP stanowi bardzo ekonomiczną platformę dla dynamicznych dokumentów WWW. Społeczność zgromadzona wokół projektu PHP działa bardzo efektywnie, co owocuje częstym dodawaniem nowych elementów języka oraz dostępnością wielu użytecznych bibliotek oraz częstym uaktualnianiem wcześniejszych bibliotek (np. Smarty i PEAR). Interpreter PHP charakteryzuje się uniwersalnością wykorzystywanych platform. Pracuje z różnymi serwerami WWW i w różnych systemach operacyjnych (na platformach unikowych, w systemie Windows i Mac OS). To jeden z młodszych języków skryptowych stworzony do zastosowań związanych z WWW. Jego interpreter może być skonfigurowany jako CGI (ang. Common Gateway Interface) i umożliwiać pisanie skryptów uruchamianych z linii poleceń lub być modułem serwera. Składnia języka PHP zawiera w sobie najlepsze cechy języka C (m.in. zwięzłą składnię) oraz Perla (wyrażenia regularne, możliwość stosowania zewnętrznych modułów, parsowanie kodu ze zmiennych tekstowych). Dodatkowo część funkcji ma takie same nazwy jak w języku C. Język PHP może być "przeplatany" w kodzie strony z czystym językiem HTML. Użytkowników C++ ucieszy to, że w PHP można stosować obiekty. PHP nie jest jednak jedynym językiem skryptowym działającym po stronie serwera. Innymi popularnymi rozwiązaniami tego typu są: JSP (Java Server Pages), Perl, ColdFusion czy ASP.NET. Istnieje wiele różnic pomiędzy wymienionymi powyżej rozwiązaniami, jednak można wymienić co najmniej jedną ich wspólną cechę. Dokumenty powstałe przy ich wykorzystaniu złożone są ze standardowego kodu HTML, tworzącego statyczną część strony oraz z kodu generującego część dynamiczną. 3.2 Szablony Smarty Rozdział ten został opary na materiałach pochodzących z ksiązki „Smarty – Szablony w aplikacjach PHP” (3), oraz artykułu z CHIP-a nr 05/2005 (4) Smarty jest on napisaną w języku PHP klasą, za pomocą której będziemy w stanie połączyć tworzone oddzielnie kod źródłowy sterujący witryną WWW oraz opracowane w HTML-u szablony stron. Nie jest konieczny, ale bardzo przydatny w profesjonalnych projektach. 3 Już od ponad dwunastu lat język PHP jest z dużym powodzeniem używany przez programistów aplikacji WWW o otwartym kodzie, jest jedną z najlepszych technologii tworzenia witryn w Internecie. Jednak wraz z wzrostem złożoności powstających aplikacji pojawił się nowy problem. Jak oddzielić warstwę logiczną (biznesową) od warstwy prezentacji (dokładniej warstwową strukturą aplikacji zajmę się w rozdziale 4), czyli jak oddzielić kod pisany przez programistów PHP od kodu tworzonego przez projektantów aplikacji, czyli od kodu HTML. Technologia Smarty – system szablonów dla języka PHP – opracowano aby rozwiązać ten problem. Oddzielenie obu tych warstw jest konieczne. W przypadku złożonych aplikacji pozwala to na zarządzanie kodem aplikacji, co byłoby bardzo kłopotliwe (lub nawet niemożliwe), gdyby kod PHP był wymieszany z kodem PHP. Smarty - podział pracy przy projekcie Projektanci są odpowiedzialni za stworzenie wizerunku witryny WWW. Tworzą szablony przedstawiające w jaki sposób będzie prezentowana treść na stronie. Wprowadzają ilustracje, style tekstu, tabelki itp. Jednym słowem są odpowiedzialni za wizualizacje treści która ma zostać przekazana odbiorcy. Zadaniem programistów jest zaś, tworzenie kodu odpowiedzialnego za przetwarzanie w ściśle określony sposób treści do przekazania. Nie interesuje ich jak strona ma wyglądać (kształty, kolory, czcionki, ilustracje) lub jaki jest układ treści na stronie. Ich główną rolą jest przekazanie treści przez wcześniej uzgodnione zmienne. Według autorów książki „Smarty – Szablony w aplikacjach PHP” (3) podział zadań pomiędzy programistą a projektantem witryny WWW jest następujący: Zadanie programisty: Odczytać dane z bazy danych za pomocą prostego zapytania. Sprawdzić poprawność danych i przetworzyć je, stosując reguły biznesowe. Jeśli jest taka potrzeba, zmodyfikować metody dostępu do danych oraz implementację reguł biznesowych bez ingerencji w pracę projektanta. Na przykład migracja z systemu bazy danych MySQL do PostgresSQL nie powinna wymagać od projektanta żadnych zmian. Zadania projektanta: 4 Utworzyć projekt HTML, który nie będzie miał wpływu na kod PHP tworzony przez programistę . Jedynym zadaniem projektanta jest rozmieszczenie elementów danych w miejscach uzgodnionych z programistą. Wprowadzać zmiany w projekcie bez konieczności konsultacji z programistą i niewymagające od niego wprowadzania zmian. Przestać się martwić o techniczne modyfikacje w witrynie, które burzą sposób w jaki jest ona prezentowana użytkownikom. Zadania przydzielone osobom biorącym udział w projekcie dotyczą części, nad która te osoby pracują – prezentacji, reguł biznesowych i dostępu do danych. 3.2.1. System szablonów Smarty Szablon interfejsu Smarty (plik .tpl zawierający elementy HTML oraz znaczniki i kod właściwy dla rozwiązań Smarty) i moduł dodatku Smarty (plik .php zawierający kod dla szablonu) składają się na komponentowy szablon Smarty (ang. Smarty Componentized Templates). Na rysunku 2. została przedstawiona zależność między plikiem szablonu interfejsu (Smarty Design Template) i plikiem modułu dodatku Smarty. 5 Rysunek 2. Komponentowy szablon Smarty (Rysunek oparty na rysunku 2.4 ksiązki „PHP i MySQL zastosowania e-commerce” (5) ) Jak piszą sami autorzy projektu Smarty w swoim serwisie (http://smarty.php.net (6)) Smarty nie jest zwykłym systemem szablonów, ponieważ oprócz standardowej interpretacji znaczników ma następujące możliwości: Kompilacja Szablony interfejsu Smarty (pliki .tpl) są plikami tekstowymi. Aby wyświetlić szablon na ekranie monitora wszystkie systemy szablonów używają wyrażeń regularnych. Część statyczna powstaje na podstawie określonych znaczników, podczas przetwarzania przez szablon całego dokumentu. Jest to proces bardzo czasochłonny, dlatego też podczas pierwszego przetwarzania Smarty kompiluje szablon do zwykłego kodu PHP (umieszcza go w katalogi templates_c). Następnym razem gdy Smarty otrzyma żądanie przetworzenia szablonów, wykonuje od razu skrypt z katalogu templates_c. Szablon może zostać powtórnie skompilowany, jest to zależne od ustawień konfiguracyjnych, jeśli otrzyma takie żądanie z poziomu skryptu PHP korzystającego ze Smarty lub gdy szablon oryginalny (plik .tpl) ulegnie zmianie. 6 Zastosowanie mechanizmu kompilacji pozwala oszczędzić czas niezbędny do przetworzenia znaczników szablonu wyrażeniami regularnymi. Cache – pamięć podręczna (ang. Caching) Smarty dostarcza szczegółowych funkcji pamięci podręcznej (cache) dla cacheowania całej lub części wyświetlanej strony, lub pozostawienia jej części nie zapisanej w części podręcznej. Programista może zarejestrować funkcje szablonu jako do zapisania w cache-u albo jako niezapisywalne w cache-u. Może grupować zapisane szablony w logiczne części dla łatwiejszego zarządzania. Pliki konfiguracyjne (ang. Configuration Files) Smarty może przypisywać zmienne zapisywane w plikach konfiguracyjnych. Projektant szablonów może zarządzać wartościami wspólnymi dla kilku szablonów w jednym miejscu, bez interwencji programisty, oraz zmienne konfiguracyjne mogą być łatwo współdzielone między częścią programistyczną a częścią prezentacji aplikacji. Bezpieczeństwo (ang. Security) Szblony nie zawierają kodu PHP. Dlatego, projektant szablonu nie posiada pełnych możliwości kodu PHP, ale tylko podzbiór funkcjonalności udostępnionych przez programiste (aplikacje) dla niego. Łatwe do użycia i zarządzania (ang. Easy to Use and Maintain) Projektanci stron nie używają składni PHP, lecz łatwej do użycia składni niewiele różniącej się od prostego HTML-a. Szablony są bardzo bliskie reprezentowania finałowego wyglądu strony, radykalnie skracając cykl pracy programisty. Modyfikatory zmiennych (ang. Variable Modifiers) Zawartość przypisana do zmiennych może być łatwo dopasowana w czasie wyświetlania przez modyfikatory, takie jak wyświetlanie wszystkich dużych liter, formatowanie dat, skracanie bloków tekstu, dodawanie odstępów między znakami, etc. Ponownie, jest to możliwe bez interwencji ze strony programisty Lista modyfikatorów jest Smarty jest dość długa, a dodatkowo możemy utworzyć własne. Funkcje szablonów (ang. Template Functions) Jest dostępnych wiele funkcji dla projektantów szablonów, dzięki którym szybko możemy generować dynamiczna część kodu HTML (np. listy rozwijane, tabele, okna pop-up, etc.). Możliwe jest wyświetlanie wewnątrz tworzonych szablonów innych wcześniej przygotowanych szablonów, wykonywanie zadań pętli na zawartości tablic, 7 formatowanie tekstu do postaci e-mail, etc. Możemy również sami tworzyć własne funkcje szablonów. Filtry (ang. Filters) Programista posiada kompletną kontrole nad wyjściową postacią szablonu i skompilowana zawartością szablonu przez przed-filtry (ang. pre-filters) po-filtry (ang. post-filters) i filtry wyjściowe (ang. output-filters). Moduły rozszerzające (ang. Plugins) Niemal każda funkcjonalność systemu szablonów Smarty jest realizowana przez zbiór modułów rozszerzających. Są one proste w użyciu, wystarczy umieścić je w katalogu rozszerzeń a następnie wzmiankując o nich w szablonie używać je jako kod aplikacji. Jest możliwe pobranie wielu gotowych rozszerzeń ze strony projektu Smarty (http://smarty.php.net) W omawianej pracy wszystkie moduły rozszerzające stworzone na potrzeby aplikacji umieściliśmy w katalogu smarty_plugins. Testowanie (ang. Debugging) Smarty posiada wbudowany system testowania, dzięki któremu możemy kontrolować wartość zmiennych w przetwarzanych szablonach oraz szybkość wyświetlania poszczególnych szablonów 3.2.2. Przykład użycia Samo działanie systemu Smarty zilustruje prostym przykładem przedstawionym poniżej. W dowolnym edytorze tworzymy plik o nazwie index.tpl i zapisujemy go w katalogu templates/. Plik ten jest w zasadzie zwykłym szkieletem strony XHTML-owej, z tą jednak różnicą, że w miejscach, w których w statycznym kodzie znajdują się konkretne dane, tutaj występują zmienne (linia 5 oraz 9). Zadaniem Smarty jest przypisanie tym zmiennym właściwych wartości na podstawie działania aplikacji. Dlatego potrzebny jest program, który tego dokona. Tworzymy zatem plik index.php. W linii nr 2 wykonujemy polecenie require, którym zaimplementujemy kod klasy Smarty.class.php. Należy pamiętać o właściwym podaniu ścieżki do tego pliku (w naszym wypadku jest to katalog Smarty/). W kolejnym wierszu tworzymy nowy obiekt klasy Smarty. Będziemy się do niego odwoływali za pomocą zmiennej $smarty. W liniach od 6 do 9 polom nowo utworzonego obiektu (konkretnie zmiennym 8 wskazującym na cztery katalogi1 wykorzystywane przez Smarty) przypisujemy właściwe ścieżki dostępu. Kolejny krok jest istotą działania Smarty. Zmiennym, które zdefiniowaliśmy i umieściliśmy w szablonie index.tpl, przypisujemy konkretne wartości. Do tego celu używamy wbudowanej w Smarty funkcji assign. Ostatnie polecenie (funkcja display) wyświetla zaś wypełniony w ten sposób szablon jako plik HTML-owy w przeglądarce. index.tpl 1. <?xml version="1.0" encoding="iso-8859-2"?> 2. <!DOCTYPE html PUBLIC "-//W3C// DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/ DTD/xhtml1-transitional.dtd"> 3. <html xmlns="http://www.w3.org/ 1999/xhtml"> 4. <head> 5. <title>{$nazwaStrony|capitalize} </title> 6. </head> 7. <body style="padding:100px;"> 8. <hr /> 9. <h1 align="center">{$trescStrony |cat:"Smarty nie jest trudny!"} </h1> 10. <hr /> 11. </body> 12. </html> index.php 1 <?php 2 require(‘Smarty/Smarty.class. php'); 3 $smarty = new Smarty(); 4 $smarty->template_dir = ‘templates'; 7 $smarty->compile_dir = ‘templates_c'; 8 $smarty->cache_dir = ‘cache'; 9 $smarty->config_dir = ‘configs'; 10 $smarty->assign(‘nazwaStrony', ‘::: Moje linkowisko :::'); 12 $smarty->assign(‘trescStrony', ‘Witaj Swiecie! Jestem stworzona za pomoca systemu szablonow Smarty!'); 14 $smarty->display(‘index.tpl'); 15 ?> strona Przykład przedstawiony powyżej jest bardzo prostym przykładem i przedstawia główną zasadę działania szablonów Smarty. O wiele bardziej złożone przypadki użycia omówimy w części analizującej główną aplikacje pracy magisterskiej. 3.2.3. Inne rozwiązania Spośród wielu innych mechanizmów obsługi szablonów dla języka PHP warto wymienić następujące: 1 templates/ : szablony w postaci plików TPL, templates_c/ : skompilowane wersje szablonów (szablony kompilują się tylko raz), cache/ : rezultat wyświetlenia skompilowanych szablonów (oszczędza czas na ich uruchomienie), configs/ : pliki konfiguracyjne 9 PHP Savant (http://phpsavant.com/yawiki/) PHPlib (http://phplib.sourceforge.net/) Yats (http://yats.sourceforge.net/) FastTemplate (http://www.thewebmasters.net/php/FastTemplate.phtml) SimpleTemplate (http://simplet.sourceforge.net/) Yapter (http://yapter.sourceforge.net/) patTemplate (http://trac.php-tools.net/patTemplate) Easytemplate (www.onlinetools.org/tools/easytemplate) TemplatePower (templatepower.codocad.com) Większość z wymienionych powyżej systemów obsługi szablonów dla PHP, posiada zasadniczą przewagę nad szablonami Smarty związaną z szybkością działania oraz łatwością obsługi. Przyczyną tej przewagi jest to, iż technologia Smarty jest o wiele bardziej złożona. Dzięki temu ma o wiele więcej do zaoferowania, a przy właściwej konfiguracji oferuje również przyzwoitą szybkość działania. Zdaniem autorów ksiązki „Smarty – szablony w aplikacjach PHP” (3) prawdziwą konkurencję dla Smarty jest jedynie PHP Savant. Jest on łatwiejszy w użyciu niż Smarty, a jednocześnie oferuje wiele funkcjonalności technologii Smarty. Autorzy wymienionej wyżej pozycji argumentują słuszność postawionej tezy tym, iż szablony PHP Savant są napisane w PHP a nie w innym języku jak w przypadku Smarty. Co może być jednocześnie uznane zarówno za zaletę jak i wadę. Jako zaletę można uznać to, iż programiści nie muszą uczyć się nowego języka, gdyż PHP Savant jest napisane w języku PHP, co może skrócić początkowy czas wdrożenia szablonów w pracy przy tworzeniu aplikacji internetowych. Jednak wielką zaletą dla Smarty a przez to i wadą dla systemu Savant jest kwestia bezpieczeństwa. Szablony Smarty są kompilowane do kodu PHP, a szablony Savant od razu są pisane w plikach PHP. Tak więc używając szablonów Savant, dajemy pełny dostęp projektantowi do możliwości PHP. Savant jest łatwiejszy w obsłudze, lecz jest niemal pozbawiony mechanizmów bezpieczeństwa, zaś inne technologie obsługo szablonów maja tylko niewielką liczbę funkcjonalności oferowanych przez Smarty. Tak więc można się zgodzić z tezą autorów wyżej wymienionej pozycji, iż szablony Smarty są obecnie najlepszą technologią do obsługi szablonów w języku PHP. Co 10 potwierdza trafność wyboru wybranej technologii do zarządzania systemem szablonów w tworzonej aplikacji. 3.3. PEAR W rozdziale tym zostały wykorzystane materiały z ksiązki „Tworzenie sklepów internetowych PHP i MySQL” (11) Początki projektu PEAR sięgają 1999 roku, wtedy to Stig S. Bakken wraz z grupą programistów rozpoczęli prace nad Repozytorium Rozszerzeń i Aplikacji PHP (ang. PHP Extension and Application Repository). Jest on hierarchiczną biblioteką zgodną z ideą open source udostępnioną użytkownikom języka PHP. PEAR został podzielony na pakiety (ang. packages) które stanowią oddzielne projekty, opracowywane i rozwijane przez oddzielne grupy programistów. Każdy pakiet jest rozpowszechniany w postaci skompresowanego pliku w którym oprócz kodu źródłowego znajduje się jego krótki opis. Twórcom projektu PEAR przyświecały następujące cele: Udostępnienie programistom PHP biblioteki ze skryptami napisanymi w PHP o prostej i zorganizowanej strukturze. Dostarczenie systemu ułatwiającego zarządzanie pakietami ze skryptami PHP i rozpowszechnianie ich. Stworzenie standardu stylu pisania skryptów w PHP. Wyodrębnienie PFC (PHP Foundation Classes) które miałoby zajmować się dobrze napisanym, przetestowanym oraz udokumentowanym kodem wewnątrz PEAR-a. Wspomaganie całej społeczności pracującej nad projektem PEAR poprzez utworzenie strony WWW i listy mailingowej oraz uruchomienie zespołu serwerów tegoż że projektu. 3.3.1. Moduł PEAR DB Moduł PEAR DB jest jednym z pakietów PEAR. Odpowiada on abstrakcyjnej warstwie bazodanowej, wchodzącej w skład pakietu PEAR. Zawiera użyteczne i niezwykle elastyczne mechanizmy komunikacji z serwerami baz danych. 11 Najważniejszą częścią tego pakietu jest klasa DB, która zawiera zestaw funkcji, który umożliwia między innymi połączenie się z bazą danych, przesłanie do niej zapytania SQL oraz pobranie wyników zapytania. Największą zaletą tej klasy jest to, że programista określa tylko parametry połączenia z bazą danych, a klasa decyduje sama w jaki sposób połączyć się z bazą danych, przesłać zapytanie a następnie odebrać wyniki tegoż zapytania. Ilość serwerów baz danych z którymi pakiet PEAR DB może się komunikować jest duża. Zaliczają się do niej między innymi MySQL, PostgreSQL oraz Oracle. Pełną listę serwerów baz danych obsługiwanych przez PEAR DB przedstawia Tabela 1. Tabela 1. Serwery baz danych obsługiwane przez pakiet DB Typ bazy danych (zgodny z parametrem phptype ciągu DSN) dbase Nazwa bazy danych fbsql FrontBase ibase InterBase ifx Informix msql Mini SQL mssql Microsoft SQL Server mysql MySQL <=4.0 mysqli MySQL >=4.1 (wymaga PHP 5, od wersji DB 1.6.3) oci8 Oracle 7/8/9 odbc ODBC (Open Database Connectivity) pgsql PostgreSQL sqlite SQLite sybase Sybase dBase Programista po zapoznaniu się z interfejsem dostępu do bazy danych PEAR DB, może stosować takie same techniki programowania w różnych projektach, bazując na różnych serwerach SQL. 12 Poniższe fragmenty kodu PHP przedstawiają różnice pomiędzy komunikacją z bazą danych za pomocą standardowych funkcji PHP i funkcji PEAR DB. Dostęp do bazy danych MySQL przy wykorzystaniu standardowych funkcji PHP: /* Zestawienie połączenia z serwerem MySQL */ $link = mysql_connect("mysql_host", "mysql_uzytkownik", "mysql_haslo") or die("Nie można zestawić połączenia: ". mysql_error()); /* Wybór bazy danych */ mysql_select_db("moja_baza_danych") or die("Nie można wybrać bazy danych"); /* Wykonanie zapytania SQL */ $query = "SELECT * FROM produkt"; $result = mysql_query($query) or die("Zapytanie zakończone niepowodzeniem: ". mysql_error()); /* Zakończenie połączenia */ mysql_close($link); Ta sama operacja wykonana za pomocą kodu PEAR DB: /* Dołączenie biblioteki PEAR DB */ require_once 'DB.php'; /* Nazwa źródła danych (DSN – Data Source Name) */ $dsn = "mysql://użytkownik:haslo@host/nazwa_bazy_danych"; /* Połączenie z bazą danych */ $db = DB::connect($dsn); /* Sprawdzenie poprawności połączenia */ if (DB::isError($db)) die ($db->getMessage()); /* Wykonanie zapytania SQL */ $sql = "SELECT * FROM produkt"; $result = $db->query($sql); /* Sprawdzenie czy zapytanie SQL zostało wykonane poprawnie */ If (DB::isError($result)) die ($result->getMessage()); /* Zakończenie połączenia */ $db->disconnect(); Używając modułu PEAR DB nie trzeba zmieniać kodu skryptu odpowiedzialnego za dostęp do bazy danych w przypadku zmiany serwera (np. z MySQL na PostgreSQL). Pierwszy z przedstawionych skryptów wymagałby całkowitej modyfikacji, między innymi należałoby zamiast instrukcji mysql_connect i mysql_query użyć instrukcji pq_connect i pq_query itp.) Dodatkowo niektóre funkcje charakterystyczne dla PostgreSQL-a wymagają zdefiniowania innych parametrów niż w odpowiadających im funkcją MySQL. 13 Dzięki wykorzystaniu interfejsów dostępu do bazy danych ( takich jak PEAR DB), przy zmianie systemu bazy danych, najczęściej trzeba modyfikować jedynie kod odpowiedzialny za ustalanie połączenia. W praktyce często trzeba zmieniać składnie zapytań samego SQL-a jeśli baza danych obsługuje inną wersję języka SQL. 3.4 Baza danych MySQL Rozdział ten został oparty na materiałach pochodzących z książek „PHP i MySQL Tworze stron WWW Vademecum profesjonalisty” (7), „Php5 Apache MySQL - Od podstaw” (8) oraz ?????????? (9) MySQL jest jest bardzo szybkim , solidnym systemem zarządzania relacyjnymi bazami danych (RDBMS – relational database management system). Jest aplikacją typu open source umożliwiają PHP dostęp do danych. Można ją pobrać ze strony projektu http://www.mysql.com/. MySQL został oficjalnie opublikowany w 1996 roku, lecz jego historia sięga 1979 roku. Bazy danych pozwalają na efektywne przechowywanie, wyszukiwanie, sortowanie oraz pozyskiwanie danych. Serwer MySQL steruje dostępem do danych , udostępniając je jednocześnie dla wielu użytkowników oraz zapewniając możliwość jak najszybszego z nich korzystania. Operować na danych mogą jedynie osoby do tego uprawnione, weryfikacja uprawnień następuje poprzez wbudowany system uwierzytelniania użytkowników. Wszystkie wyżej wymienione cechy baz danych MySQL pozwalają nam określić omawiany serwer MySQL wieloużytkownikowym oraz wielowątkowy. Dostęp do bazy danych jest realizowany poprzez (będącym światowym standardem) język SQL (Structured Query Language). Nie wszystkie elementy tego języka zostały zaimplementowane w MySQL-u. Spowodowane jest to tym, iż twórcy języka MySQL postawili sobie za cel stworzenie bardzo szybkiego serwera bazy danych. Każda kolejna wersja serwera MySQL obsługuje coraz więcej elementów standardowego języka MySQL. Jednak dostępne funkcjonalności już teraz w większości przypadków zupełnie wystarczają. MySQL nie jest jedynym systemem RDBMS z jakimi współdziała język PHP. Przykładami współpracujących z MySQL-em systemami baz danych są: PostgreSQL, Oracle, Microsoft SQL Server i inne. Jednak ankieta przeprowadzona na stronach serwisu Zend (http://www.zend.com/zend/php_survey_results.php (10)) jednoznacznie określa jako najbardziej popularny system baz danych współpracujący z językiem PHP, system bazy danych MySQL (Rysunek 4.). 14 System zarządzania relacyjną bazą danych jest skomplikowanym oprogramowaniem, przeznaczonym do przechowywania danych, zarządzania danymi i możliwie szybkiego ich udostępniania. W opisywanej aplikacji będzie on przechowywał informacje na temat produktów, działów sklepu, użytkowników, zawartości koszyków zakupów itp. Rysunek 3. Wynik ankiety z której wynika, że MySQL jest najpopularniejszą bazą danych wśród programistów PHP. Tabela pochodzi z: http://www.zend.com/zend/php_survey_results.php (7.III.2007) (10) 3.4.1. Niektóre z zalet MySQL Za wieloma publikacjami na temat MySQL-a można wymienić wiele jego zalet. Należą do nich miedzy innymi: Wydajność MySQL jest bardzo szybki. Dowodem na to stwierdzenie są testy wydajności przedstawione pod adresem http://web.mysql.com/benchmark. W wielu testach MySQL wypada lepiej niż jego konkurenci. Niski koszt MySQL jest do pobrania za darmo , jego wykorzystywanie w użyciach niekomercyjnych nie jest również obarczone opłatami. Po niskich kosztach można również zakupić licencję komercyjną. Łatwość użycia Większość z nowoczesnych baz danych korzysta z języka SQL. Użytkownik który korzystał z innych systemów RDBMS, nie powinien mieć problemów z pracą z MySQL15 em. Ponadto MySQL jest łatwiejszy w konfiguracji, niż wiele innych konkurencyjnych produktów. Przenośność MySQL może pracować na wielu systemach, zarówno pod systemami Unixowymi jak i pod Microsoft Windows. Kod źródłowy Podobnie jak w przypadku PHP, użytkownik może pobrać jak i modyfikować kod źródłowy w zależności od swoich potrzeb. 7. Zaistnienie w Internecie Stworzenie odpowiedniej witryny e-commerce nie jest jeszcze gwarantem sukcesu jej działania. Należy jeszcze podjąć odpowiednie kroki, które doprowadzą do zaistnienia witryny w Internecie. Celem jest sytuacja w której na dane słowo bądź słowa kluczowe nasza witryna umiejscowiona była w wynikach wyszukiwania jak najwyżej. Żeby zobaczyć jakiekolwiek wyniki potrzebne są wyszukiwarki, a żeby zobaczyć swoją stronę w wynikach należy ją dodać np. do katalogów stron. Na tym nie koniec. Swojej strony nie zobaczymy wysoko w wynikach dopóki nie zadbamy o jej optymalizację i pozycjonowanie. Tą właśnie tematyką zajmę się w tym rozdziale. Bardzo pomocną pozycją literaturową przy opracowaniu tego rozdziału była książka „Czas na e-biznes” [12] autorstwa Piotra Majewskiego a w szczególności jej rozdział 12 oraz książka „osCommerce Tworzenie sklepów internetowych” (12) 7.1 Wyszukiwarki Wyszukiwarki są istotnym elementem sukcesu witryn e-commerce. Nowo powstałe serwisy nie mają szans na zyskanie popularności za pomocą crosslinkingu2. Przez ograniczone fundusze często poza zasięgiem pozostają marketing bezpośredni czy masowe kampanie w internecie, wówczas najlepszym i najtańszym rozwiązaniem pozostają wyszukiwarki. Jedyną wadą tego rozwiązania może być długi czas oczekiwania na rezultaty. 2 Crosslinking – techniki polegające na wzajemnym promowaniu się stron internetowych. Może on przybrać formę wymiany banerów lub zwykłych linków tekstowych. 16 Nie jest prawdą, że promocja poprzez wyszukiwarki polega na dodaniu do ich zbiorów jak największej ilości naszych stron, które mogą przyciągnąć internautę do naszej witryny ecommerce. Na promocję w ten sposób należy poświęcić dużo czasu. Stronę należy odpowiednio przygotować przed dodaniem ją do zbiorów wyszukiwarek. Jak niektórzy określają, stronę należy napisać „pod wyszukiwarkę”. Polega to na umieszczeniu w niej jak największej liczby słów kluczowych. Według autora książki „Czas na e-biznes”: „Słowa kluczowe (ang. keywords) – słowa lub frazy, jakie potencjalni klienci wpisują w wyszukiwarkach, aby znaleźć produkt (usługę) identyczny z tym, co oferujesz” Należy zwrócić uwagę na formułowanie tych słów, gdyż najczęściej to biznes próbuje opisać swój produkt, jednak tak naprawdę to potencjalni klienci decydują jak określić dany produkt. Listę najczęściej wprowadzanych w Polsce słów kluczowych można znaleźć pod adresem: boksy.onet.pl/ranking.html. Stosowany od dawna sposób umieszczania wielu słów kluczowych w znacznikach META nie jest już skuteczny. Obecnie Google.com nie czyta już tych znaczników. Pozostaje jeszcze wiele innych mniej lub bardziej znanych technik. Sytuacja w Polsce Na podstawie danych zebranych przez firmę Gemius SA i jej serwis www.ranking.pl można dowiedzieć się które wyszukiwarki w Polsce (również i zagranicą) cieszą się największą popularnością wśród polskich internautów. Wiarygodność przeprowadzonych badań potwierdzają dane zebrane z dużej ilości polskich serwisów. lp Wyszukiwarki-domeny 22.V.2007 - 28.V.2007 1 google.com 85,5% 2 onet.pl 6,5% 3 wp.pl 4,8% 4 interia.pl 1,1% 5 msn.com 0,8% 6 szukacz.pl 0,5% 17 7 yahoo.com 0,4% Tabela 2. Wyszukiwarki - domeny, z których trafiają na polskie witryny internauci łączący się z obszaru Polski, Źródło: Gemius SA, gemiusTraffic (13), 4 czerwca 2007 r. Z badań wynika jednoznacznie, iż w Polsce liderem jest serwis google.com z udziałem 85,5%, daleko za nim znajdują się onet.pl, wp.pl oraz inne serwisy. Przewaga google.com jest ogromna, wypracowana przez ostatnie lata co ukazują wyniki badan na przestrzeni ostatnich lat (Rysunek 5.). Tak więc na podstawie badań, jednoznacznie mogę powiedzieć iż aby zaistnieć ze swoja witryną e-commerce wśród polskich internautów – potencjalnych klientów, należy się skupić na wypracowaniu pozycji w wyszukiwarce Google.com. Rysunek 4. Wyszukiwarki – domeny (trzy z największym udziałem), z których trafiają na polskie witryny internauci łączący się z obszaru Polski na przestrzeni kilku ostatnich lat, Źródło: Gemius SA, gemiusTraffic (13), 4 czerwca 2007 r. Wyszukiwarki - działanie Liczące się wyszukiwarki nie różnią się między sobą zasadą działania. Ponadto większość z nich wykorzystuje zbliżone algorytmy dla ustalenia pozycji strony www w rankingu wyszukiwania. Praktycznie żadna licząca się wyszukiwarka nie korzysta wyłącznie ze swojej bazy stron www. Wiele, jak np. wp.pl, nie posiada nawet własnej bazy i wykorzystuje zasoby wykupione wraz z licencją od firmy zewnętrznej. Onet.pl ma własną bazę danych, ale silnik (oprogramowanie wyszukiwarki, z ang. engine ) kupiony od firmy Inktomi, która przejęła Infoseek. Każdy silnik działa mniej więcej na tej samej zasadzie, ale każdy ma swoje, w pełni konfigurowalne algorytmy wpływające na strukturę rankingu. Mimo faktu, że administrator wyszukiwarki ma pewien zakres swobody w przypisywaniu wagi poszczególnym elementom strony www - czyniąc każdą kopię silnika unikalną - to jednak pewne cechy pozostają wspólne. Ten fakt bardzo pomaga wpływać właścicielom stron www na ranking. 18 Administratorzy odpowiedzialni za polskie wyszukiwarki starają się, aby informacje dotyczące konstrukcji ich algorytmów wyszukujących nie przedostawały się na zewnątrz. Stąd większość specjalistycznej wiedzy to wynik testów i doświadczenia w pozycjonowaniu. Fakt, że polskie wyszukiwarki wykorzystują oprogramowanie zachodnich producentów bardzo pomaga w zdobywaniu informacji na ich temat, gdyż wiedzę z polskiego rynku można uzupełniać o doświadczenia internautów spoza granic Polski. Działanie większości wyszukiwarek oparte jest na podobnych zasadach, jednocześnie wykorzystują zbliżone algorytmy pozycjonowania stron w rankingach wyszukiwania. Składają się z 4 podstawowych elementów: 1. 2. 3. 4. Pajączka (inne angielskie określenia: Spider, Crawler) Bazy danych, Indeksu, Programu wyszukującego. Bardzo często dokonuje się uproszczenia polegającego na rozciągnięciu nazwy "index" również na bazę danych. Pajączek czyta i interpretuje kod zleconych mu stron, podobnie jak czyni to przeglądarka. Jednak w przeciwieństwie do przeglądarek, czyści interpretowany kod z niepotrzebnych znaczników HTML i zapamiętuje tylko interesujący go tekst. O tym gdzie można go było znaleźć w kodzie strony (np. czy był tytułem, nagłówkiem typu H1 czy też zwykłym tekstem) dany tekst informuje każdorazowo program wyszukujący za pomocą własnych znaczników. Po przeczytaniu strony pajączek podąża po linkach (odnośnikach) do podstron w tej samej domenie, aby i je przeczytać. Tak operacja otrzymała w języku angielskim określenie „deep crawling”. Głębokość na jaką dociera pajączek zależy od wyszukiwarki. Przyjęto że najważniejsze strony nie powinny być dalej niż dwa „kliknięcia od strony głównej”. Po „przejściu” danego serwisu poprzez linki kierujące na zewnątrz, pajączek trafia do innych, nieznanych mu wcześniej stron. Aby ich pajączek miał dojście do jak największej liczby serwisów administratorzy nowo uruchamianych wyszukiwarek (celem większości tych ostatnich jest dostarczenie prawidłowego rankingu, co wymaga dotarcia do maksymalnej liczby stron) gromadzą "ręcznie" pewien zasób stron WWW (głównie portali i katalogów). Jest to tzw. baza wyjściowa. Po linkach znajdujących się na stronach wchodzących w skład bazy i za pośrednictwem stron przez nią znalezionych pajączek może dotrzeć do prawie wszystkich stron, gdyż do prawie wszystkich ktoś się kiedyś odwoływał. Warto w tym miejscu dodać, że promocja strony w wyszukiwarkach nie ogranicza się jedynie do konieczności zbudowania witryny zgodnego ze standardami umożliwiającymi pajączkowi jej zindeksowanie, a następnie do biernego oczekiwania na jego wizytę. Nie czekając na takie odwiedziny należy samemu "zaprosić" pajączka wypełniając formularz wyszukiwarki. Potocznie 19 czynność ta nazywana jest "dodawaniem stron do wyszukiwarki" jednak nie jest to równoznaczne ze zindeksowaniem strony przez wyszukiwarkę. Dlatego wysyłanie formularza należy ponawiać aż do pojawienia się wyszukiwanej strony w wynikach. Po pewnym czasie pajączek wraca na zindeksowane uprzednio strony. Dzieję się tak także po ponownym zaproponowaniu strony do indeksacji. Sprawdza wówczas czy strony nie uległy zmianie. Gdy tak się stało pajączek pobiera nasze dane. W Bazie danych dzięki pajączkom przekazującym zebrane informacje znajduje się pełny zapamiętany tekst. Dla optymalizacji procesu wyszukiwania program stosuje tzw. "stop words" - słowa pozbawione konkretnego znaczenia (np. spójniki, rodzajniki), których nie uwzględnia się w wyszukiwaniu. Przykład: Gdy wyszukiwarce Google, zadamy pytanie "the war" to program wyszukujący przejrzy indeks tylko według słowa "war", "the" dla szybszego rezultatu zostanie pominięte. Jednakże w opisach stron "the" pozostanie. Index to spis wszystkich unikalnych słów wraz z odnośnikami do miejsc ich występowania w bazie danych, pełniących rolę zbliżoną do tej, wypełnionej przez indeksy spotykane w książkach. Powstaje poprzez indeksowanie bazy danych, aktualizowane po dodaniu nowego wpisu. Właśnie od tego, czy strona została uwzględniona w indeksie, zależy czy pojawi się ona przy wyszukiwaniu. Program wyszukujący Po wpisaniu w formularzu wyszukiwarki danego hasła przeszukuję indeks w jego poszukiwaniu. Jeśli zostanie znalezione, program wyszukujący czyta z bazy danych wszystkie strony, oznaczone w indeksie jako zawierające dane zapytanie. Następnie posługując się własnymi algorytmami ocenia wartość danej strony. Za ocenę stron może też odpowiadać dodatkowy program (w Google jest nim PageRank oceniający wartość strony na podstawie stron zawierających link do danej strony) i np. fakt pojawienia się strony w katalogu. Na podstawie ocen jest tworzony ranking. PageRank narzędziem serwisu google.com które odpowiada, za ocenianie poszczególnych stron. Dokonuje tego głównie na podstawie ilości stron z których istnieje bezpośredni link do ocenianej strony (ang. link popularity). Wzór według którego działa PageRank jest dość skomplikowany. Jednak w pewnym uproszczeniu można przedstawić go tak: „ … każda strona zawierająca link do naszej strony oddaje na nią jeden głos. Ten głos ma jednak pewną wagę, która zależy od tego, jaka jest wartość PageRank strony głosującej i ile zawiera ona linków do innych stron. Z kolei link z naszej strony na zewnątrz odejmuje nam jeden głos. Jeszcze uproszczając: link z głównej strony portalu będzie wielokrotnie bardziej cenny niż link z kategorii w katalogu WWW. Do strony głównej katalogu kieruje bardzo dużo linków, a ona sama zawiera mało wychodzących. Celem katalogu jest bowiem kierowanie nas do innych, mało kto natomiast linkuje do konkretnej kategorii w katalogu.” (14) 20 Podsumowując, wartość PageRank zależy od liczby stron z których przez link, można dotrzeć bezpośrednio do naszej strony oraz od wartości tych głosów. Wartości głosów zależą zaś od: pozycji w PageRank strony głosującej na naszą witrynę, liczby linków wychodzących na tej stronie, treści linku zawartej pomiędzy znacznikami, prawdopodobnie wartość PageRank jest uzależniona również od miejsca umieszczenia łącza w kodzie, im wyżej tym lepiej. Na co zwracają uwagę pajączki. Każda wyszukiwarka zbiera różne informacje poprzez „wędrującego” po witrynach internetowych pajączka. Zapisują one jedynie te dane które we własnym algorytmie są wykorzystywane do pozycjonowania stron. Niektóre wyszukiwarki oprócz minimum informacji potrzebnych do generowania rankingu tworzą oddzielne bazy danych w których umieszczają kopie zaindeksowanych stron. Tak postępują między innymi serwisy google.com oraz wp.pl (Wirtualna Polska). Informacji które czytają prawie wszystkie pajączki obejmują: Cały tekst strony – czyli zawartość strony pomiędzy znacznikami BODY, niektóre pajączki oszczędzają miejsce i zapamiętują nie więcej niż 64kB tekstu. TITLE – Wszystkie pajączki czytają tytuły stron, czyli tekst umieszczany pomiędzy znacznikami TITLE. <TITLE> Tytuł strony </TITLE> Znaczniki META – Większość współczesnych wyszukiwarek nie zwraca już uwagi na znaczniki META (Description i Keywords – znaczniki w sekcji <HEAD> strony). Jednak nie należy ich zupełnie ignorować, gdyż w przypadku mało konkurencyjnych słów mogą mieć znaczenie dla wyszukiwarek. Dodatkowo niektóre przeglądarki wykorzystują META Description do opisania strony w wynikach wyszukiwania. <META NAME=”description” CONTENT=”Tutaj znajduje się opis strony”> <META NAME=”keywords” CONTENT=”Tutaj znajdują się słowa kluczowe, oddzielone przecinkami”> Ramki - Polskie wyszukiwarki wspierają obsługe ramek (ang. frames), jednak obsługę tą można określić za niepełną, gdyż wyszukiwarka prześledzi treść ramki, lecz zaindeksuje ją jako oddzielną stronę. Tak więc internauta klikając na link wyświetlony przez wyszukiwarkę, może nigdy nie dotrzeć do głównej strony, a np. do ramki menu lub któreś ze stron wewnętrznych. 21 Link popularity – Określa liczbę stron które posiadają link do promowanej przez nas strony. Oczywiście strony te nie mogą być częścią naszej witryny. Określenie to zostało wprowadzone przy założeniu, że do ciekawych i wartościowych stron będzie istniało wiele łączy w sieci. Metodę tą wykorzystuje wcześniej opisany mechanizm PageRank stosowany przez Google. Linki (łącza) – Jeśli chodzi o linki, to przeglądarki najlepiej czytają linki tekstowe, również z linkami graficznymi większość nie ma problemów. Zaś tylko niektóre poradzą sobie z mapami linków (ang. client-side image maps). Ważną rzeczą jest umieszczanie słów kluczowych w anchor text – czyli w treści linku zewnętrznego. Anchor text to treść zawarta pomiędzy znacznikami <A>. Tak więc większą wagę będzie miło umieszczenie słów kluczowych w linku niż np. adresu WWW. W przypadku linków graficznych jako anchor text będzie potraktowana zawartość parametru ALT. Żadne pajączki nie zapamiętują: Komentarzy w kodzie Treści plików graficznych oraz plików zewnętrznych, np. JavaScript. Dla tego typu plików stworzono znaczniki TITLE oraz ALT, które wyszukiwarki już czytają. 7.2 Pozycjonowanie Powstawanie rankingu Przy tworzeniu witryny należy pamiętać o tym, iż wyszukiwarki są stworzone do tego aby dostarczać swoim użytkownikom adresy stron które będą zawierały jak najwięcej danych na szukany temat. Właśnie w tych celach powstał ranking. Na uszeregowanie stron w rankingu według ich wartości wpływają trzy elementy: odpowiedzi strony na zadane pytanie, wartość strony, boost Odpowiedzi strony na zadane pytanie, polega najczęściej na występowaniu szukanego słowa czy frazy w treści strony zapamiętanej przez pajączka. Fakt ten decyduje czy strona pojawi się w rezultatach wyszukiwania przedstawianych przez wyszukiwarkę. 22 Wartość Strony zawsze jest określana w stosunku do zadanego pytania. W sytuacji gdy wyszukiwarka używa takich narzędzi jak Link Popularity, dodatkowo sumowana jest wartość określana na podstawie zawartości strony z wartością bezwzględną wynikającą z liczby zewnętrznych łączy. Ważnym aspektem jest również przynależność witryny do kategorii odpowiadającej na pytanie. Przykładem może być tutaj sytuacja pytania zawierającego słowo kluczowe „książki”. Wyżej będzie notowana strona e-commerce księgarni internetowej niż strona konkretnego pisarza, na której będzie wymienionych tylko kilka/kilkanaście pozycji. Będzie się dziać tak a nie inaczej gdyż a stronie księgarni będzie więcej odwołań do szukanego słowa kluczowego. Tytuł Bardzo ważną rolę w pozycjonowaniu pełni tytuł (TITLE) strony. Jeśli w tytule umieścimy słowo(a) kluczowe zwiększamy wielokrotnie szanse na znalezienie się na szczycie naszej witryny. Nie należy jednak przesadzać ilością słów kluczowych w tytule, gdyż wyszukiwarki zapamiętują tylko kilkadziesiąt pierwszych znaków umieszczonych w tych znacznikach. Np. serwis Onet.pl zapamiętuje jedynie pierwszych 95 znaków. Adres WWW Następnym bardzo ważnym elementem w pozycjonowaniu jest adres WWW strony. Najczęściej adresy stron które w domenie zawierają słowa kluczowe znajdują się na szczycie wyników wyszukiwania. Wyszukiwarka Google jest szczególnie wyczulona na ten aspekt. Słowa kluczowe w nazwie katalogu również zwiększają wartość strony, lecz nie tak bardzo jak w domenie. Znaczniki META Jeśli chodzi o znaczniki META odgrywają one już coraz mniejszą rolę. W światowym internecie dąży się do ich całkowitego porzucenia w systemach pozycjonowania. Przy pomocy znaczników META twórca strony może opisać ją w dowolny sposób, nawet nie związany z treścią witryny. Częstotliwość Częstotliwość jest stosunkiem ilości powtórzeń szukanego słowa do ilości wszystkich słów na stronie. Jest to kolejny ważny element uzyskania wysokiej pozycji w wynikach wyszukiwarek. Słowa te mogą być umieszczone w tekście, tytule, opisach i słowach kluczowych. 23 Jednak nie jest prawdą, że wystarczy umieścić wiele razy słowa kluczowe (np. sto razy), gdyż wyszukiwarki posiadają detektory SPAMU3. Tak więc możemy osiągnąć wynik wręcz odwrotny do naszego celu – w rankingu stron zawierających dane słowa kluczowe możemy znaleźć się na końcu. Zalecana częstotliwość wynosi 3-9%. Jeśli wyszukiwarka posiada funkcję Stemming Words określana przez nią częstotliwość może znacznie wzrosnąć. Funkcja ta pozwala na liczenie danych słów kluczowych nawet jeśli występują w różnych przypadkach czy liczbach. Gdy już obliczona zostanie Wartość Strony pozostaje doliczenie punktów za Boost. Boost daje dodatkowe punkty do Wartości za spełnianie pewnych kryteriów. Oto najważniejsze: Lokalizacja słów kluczowych Słowa kluczowe znajdujące się blisko góry KODU strony – nieistotne jest, jak ona będzie wyglądała w przeglądarce, ale gdzie w kodzie strony znajduje się szukane słowo. Nagłówki H1 Od dawna wiadomo, ze pojawienie się szukanego słowa w Nagłówku H1-H6 jest bardzo korzystne dla pozycji strony. Najlepiej jeśli jest to Nagłówek H1 i jest to pierwsza informacja na stronie. Występowanie w katalogu Często strony, które znajdują się w katalogu załączonym do wyszukiwarki (recenzowane przez ludzi) dostają dużo lepsze wyniki. Najważniejsze w Polsce wyszukiwarki preferują odpowiednio: Google - Open Directory Project (www.dmoz.org) Onet.pl - Ogólnopolski Katalog Onetu (katalog.onet.pl) Wirtualna Polska - Katalog WP (katalog.wp.pl) Link Popularity Dobry link popularity strony, czyli wiele łączy z dobrych stron do naszej strony z anchor text zawierającym nasze słowa kluczowe (linki do naszej strony zawierające w polu anchor text adres naszej strony dają gorszy efekt), może bardzo pomóc naszej witrynie w znalezieniu się na wysokiej pozycji w rankingu. 3 Spam w wyszukiwarkach - efekty technik wpływania na wyniki wyszukiwania w wyszukiwarkach internetowych z naruszeniem regulaminu systemów wyszukujących. Określa ogół technik stosowanych do podwyższenia pozycji danej strony w wyszukiwarkach (pozycjonowania), dotyczących wybranych słów kluczowych, które nie są związane bezpośrednio z treścią strony lub nie stanowią celu komercyjnej działalności strony. 24 Należy zwrócić uwagę aby promować tylko jedną wersję domeny, np. pawlos.pl lub www.pawlos.pl. Są one różnie traktowane przez wyszukiwarki, „www” przed domeną ma znaczenie. Wyżej wymienione metody należą do bezpiecznych, czyli nie są uznawane za SPAM, przeglądarki nie ukażą nas za ich stosowanie. Do metod niebezpiecznych, za które możemy zostać ukarani należą: Duplikowanie słów kluczowych w znacznikach META i TITLE – bezpieczne jest 2-, 3krotne powtorzenia słowa kluczowego w znacznikach META i TITLE, powinny one jednak być oddzielone innymi słowami. Używanie słów kluczowych w znacznikach META i TITLE niewystępujących w tekście strony. Niewidzialny tekst – niewidzialny tekst (ang. invisible text) to zwykle tekst w kolorze tła. Inną techniką tego typu jest również stosowanie malutkich tekstów (ang. tiny text). Najczęściej malutkie teksty są realizowane przez stosowanie wielkości czcionki rzędu 1 piksela. Użytkownik w takiej sytuacji, nie ma praktycznie szans, aby zobaczyć w ten sposób wyświetlany tekst. Jump pages, doorway pages, portal pages itd. Techniki te polegają na tworzeniu stron maksymalnie nastawionych wymagania wyszukiwarek. Nie są one atrakcyjne dla użytkownika. Dlatego, często takie strony są automatycznie przekierowywane na główną stronę serwisu. Cloaking – technika ta jest najbardziej kontrowersyjną w technikach pozycjonowania. Polega ona na przygotowywaniu i przedstawianiu stron pod konkretne wyszukiwarki. Przy czym pajączki również traktujemy jako przeglądarkę. Technika ta może być stosowana uczciwie lub mniej uczciwie. o uczciwe – przygotowywanie odpowiedniej strony pod konkretnego użytkownika (np. język, przeglądarka) o mniej uczciwe – techniki te polegają na przygotowywaniu stron pod konkretne pajączki. Pajączki są reprezentowane przez Agentów i związanych z nimi adresami ip. Skrypty mogą po zidentyfikowaniu konkretnego Agenta i (lub) jego ip przedstawić mu specjalnie przygotowaną stronę specjalnie pod konkretną wyszukiwarkę. Farmy linków – to zorganizowane setki stron, które nawzajem linkują się nawzajem. Rozwiązanie to jednak tak jak wcześniej wymienione jest już znane wyszukiwarką i nie działa. Zostało jednak wymyślone lepsze rozwiązanie. W Polsce powstały 2 ważne serwisy: www.linkor.pl oraz www.linkujpro.pl – są to systemy wymiany linków (odpowiednio dynamicznie generowanych i statycznych). Pozwoliły one wielu serwisom znacznie zwiększyć oglądalność. 25 Spamowanie w najlepszym wypadku nie pomoże osiągnąć lepszej pozycji, w najgorszym można być trwale usuniętym z bazy danych wyszukiwarki. W wykrywaniu spamu oraz usuwaniu z rankingów przoduje Google, jednakże również Onet.pl czasami usuwa strony z rankingu. Każda "specjalna" technika, która jest skuteczna dzisiaj, jutro może być uznana za spam. Każda spamerska technika była kiedyś techniką "specjalną". Należy o tym pamiętać w czasie promowania stron używając najnowszych pomysłów na uzyskanie wysokiej pozycji w wyszukiwarkach. Najlepsza strategia dotycząca wyszukiwarek Należy tworzyć strony zawierające wiele treści. Nawet jeśli treści SA płatne, należy udostępniać fragmenty wszystkich artykułów. Każda strona powinna mieć własne pole TITLE oraz znaczniki META. Wszystkie strony powinny być polinkowane, tak aby z każdej z nich po 1-2 kliknięciach można było dotrzeć do dowolnej strony witryny. Należy zadbać o istnienie linków z innych stron powiązanych z naszą do naszej witryny (można wykorzystać www.linkor.pl oraz www.linkujpro.pl). Ważne jest opisywanie linków graficznych parametrem ALT. 26 Narzędzia do pozycjonowania www.digitalpoint.com/tools/suggestion/ - Dzięki niemu możemy poznać słowa kluczowe podobne do tego co podaliśmy (w formularzu), najczęściej wykorzystywane przez użytkowników. https://adwords.google.com/select/KeywordSandbox - Narzędzie do zarządzania słowami kluczowymi. Podobne do powyższego. Oparte na wynikach z Google. www.googlerankings.com/index.php - Doskonałe narzędzie, dzięki któremu możemy poznać pozycję naszej (i nie tylko) strony w rankingu wyszukiwawczym Google pod względem danego słowa kluczowego (które sami wpisujemy). www.kwmap.com/ - Narzędzie obrazujące i badające bliskoznaczne słowa i frazy kluczowe. Podobne do przedstawionych powyżej dwóch pierwszych narzędzi. Tego typu programy najlepiej używać razem. www.rustybrick.com/pagerank-prediction.php - Rzekomo potrafi przewidywać jaki będzie PageRank strony po kolejnej aktualizacji bazy danych w Google www.gritechnologies.com/tools/spider.go - To narzędzie pokazuje, jakie prowadzą z danej WWW - adres wpisujemy w okienku. Narzędzia do określania częstotliwości słów kluczowych Keyword density analyzer: www.webjectives.com/keyword.htm KeywordCount: www.KeywordCount.com Narzędzia do określania Link Popularity LinkPopularity: www.linkpopularity.com Zapytanie w Onet.pl/ Altavista: link:cneb.pl -url:cneb.pl -url:cneb.pl Zapytanie w Wirtualna Polska: link: cneb.pl -url: cneb.pl Zapytanie w Google.com: 27 link:cneb.pl -site: cneb.pl 28 Bibliografia 1. Witryna projektu PHP. [Online] http://www.php.net/. 2. [Online] http://news.netcraft.com. 3. Hayder, H., Maia, J. P. i Gheorghe, L. Smarty – Szablony w aplikacjach PHP. Gliwice : Helion, 2007. ISBN: 987-83-246-0647-4. 4. Nowojczyk, Dariusz. (Nie)szablonowa prezentacja. CHIP. 05/2005. 5. Balanescu, Emilian, Bucica, Mihai i Darie, Cristian. PHP i MySQL zastosowania e-commerce. Gliwice : Helion, 2005. ISBN: 83-7361-830-9. 6. Witryna projektu Smarty. [Online] http://smarty.php.net. 7. Thomson, Laura i Welling, Luke. PHP i MySQL Tworze stron WWW Vademecum profesjonalisty. Wydanie drugie. Gliwice : Helion, 2003. ISBN: 83-73-61-140-1. 8. Naramore, Elizabeth, i inni. Php5 Apache MySQL - Od podstaw. Gliwice : Helion, 2005. ISBN: 837361-997-6. 9. ???????? uzupelnic . 10. [Online] http://www.zend.com/zend/php_survey_results.php. 11. Bargieł, Daniel i Marek, Sebastian. Tworzenie sklepów internetowych PHP i MySQL. Wydanie drugie. Gliwice : Helion, 2006. ISBN: 83-7361-939-9. 12. Mercer, David. osCommerce Tworzenie sklepów internetowych. Gliwice : Helion, 2007. ISBN: 97883-246-0649-8. 13. Gemius SA. gemiusTraffic. [Online] www.ranking.pl. 14. Majewski, Piotr. Czas na e-biznes. Wydanie drugie. Gliwice : Helion, 2007. ISBN: 83-7361-939-9. 29