Comertul Electronic Si Cumparaturile Online

Cuprins

Introducere

Tehnologii utilizate

II.1 HTML

II.2 CSS

II.3 jQuery UI

II.4 PHP

II.5 MySQL

II.6 XAMPP

Proiectarea și implementarea aplicației web Hotelinio

III.1 Analiza și prezentarea website-ului

III.1.1 Structura website-ului Hotelinio

III.1.2 Baza de date

III.2 Prezentarea aplicației web Hotelinio

III.2.1 Hotelinio pentru utilizatori

III.2.2 Hotelinio pentru administrație

III.2.3 Manual de utilizare

Concluzii

Bibliografie

I. Introducere

Comerțul electronic și cumpărăturile online

Comerțul electronic mai este cunoscut și sub denumirea de Electronic Commerce sau E-Commerce este demersul de cumpărare sau vânzare prin intermediul transmiterii de date la distanță, demers specific politicii expansive a marketingului companiilor comerciale, dezvoltându-se o relație de servicii și schimb de mărfuri între ofertant și viitorul cumparător. Acest tip de comerț cuprinde întreg procesul online de dezvoltare, marketing, livrare, vânzare, servicii și plăți ale serviciilor și produselor.

În tranzacțiile comerciale clasice se disting următoarele etape: informarea comercială referitoare la tranzacție și anume cercetarea de marketing, încheierea contractului comercial general, comandarea/vânzarea produsului sau a serviciului, respectiv plata. În cadrul comerțului electronic pot fi tranzacționate bunuri și servicii digitale (sunt excluse fazele logistice), iar locul în care sunt tranzacționate aceste bunuri digitale poartă denumirea de piață electronică, sau e-marketspace, acesta fiind contextul virtual în care cumpărătorii și vânzătorii se găsesc unii pe alții și tranzacționează afaceri electronice.

Cumpărăturile online reprezintă procesul prin care consumatorul cumpără bunuri sau servicii de la un vânzător în timp real, fără a utiliza un serviciu intermediar, prin intermediul Internetului. Există mai multe categorii de comerț online, iar dintre acestea amintesc: B2B (business-to-business, în acest caz toți participanții sunt companii sua organizații), B2C (business-to-consumer, în acest caz companiile vând la cumpărători individuali), C2B (consumer-to-business, în cazul în care o persoană fizică utilizează Internetul pentru a-și vinde produsul către firme), C2C (consumer-to-consumer, tranzacții online între persoane fizice), precum și B2G (business-to-government), G2B (government-to-business), sau G2C (government-to-consumer).

Pentru a se realiza cumpărăturile online, fie că e vorba de persoane fizice, firme, organizații, sau guverne, aceștia trebuie să aibe acces la un calculator, la un cont bancar și la un card de debit.

Procesul prin care se efectuează cumpărăturile online este următorul: odată ce a găsit produsul dorit, consumatorul utilizează un “cărucior online” (sau shopping cart), sau își rezervă drepturile asupra acelui bun. Odată ce a selectat produsele dorite, consumatorul este îndreptat spre a completa un formular cu datele sale personale (nume, prenume, adresă, data nașterii) și datele sale privind cardul de credit (numărul cardului, numele și prenumele de pe card, data expirării cardului, precum și seria CCV), acest lucru fiind necesar pentru a efectua plata online. Toate aceste date sunt criptate și nu ajung în baza de date ale vânzătorului, ci acestea sunt stocate (în cazul în care consumatorul este client înregistrat al magazinului respectiv) de către o firmă specializată în protecția acestor tipuri de date.

Avantajele și dezavantajele cumpărăturilor online

Având ca suport rețeaua Internet și eventual și utilizarea unor pachete de programe software specifice, comerțul electronic a avut și are avantaje și beneficii pentru firme, consumatori individuali și societate.

Pentru firme, acestea ar fi:

Extinderea pe piețele internaționale prin asigurarea de servicii și performanță;

Asigurarea unei deschideri totale în privința relațiilor cu clienții: aceștia pot căpăta o imagine aproape completă asupra tuturor angajaților, ofertanților și partenerilor lor.

Scăderea costului de creare, procesare, distribuire, păstrare și regăsire a informației, până acum bazată pe hârtie, prin crearea unui sit web atractiv cu funcția unui magazin virtual. Siturile web personalizate, sugestiile pentru cumpărare și ofertele speciale personalizate pot într-o oarecare măsură substitui interacțiunile de tip față în față, de tip tradițional;

Creează posibilitatea modelării produselor și serviciilor după nevoile cumpărătorilor și simplificarea procedurilor;

Costuri de comunicație mai mici.

Seriozitate și siguranță. Serverele paralele, redundanța hardware-ului, tehnologia fail-safe, încriptarea informației și firewall-urile pot îndeplini această cerință;

Creșterea competitivității și raționalizarea proceselor de afaceri, prin restructurări interne și prin tehnologii ale informației.

Construirea unui lanț valoric electronic, în care se pune accentul pe un număr limitat de competențe-cheie – opusul unui magazin "cu o singură oprire". (Magazinele electronice pot fi atât speciale cât și generale, dacă sunt programate corect.)

Pentru consumatori, avantajele comerțului online sunt:

Posibilitatea consumatorilor să cumpere sau să facă tranzacții la orice oră din zi, în tot timpul anului, din aproape orice locație;

Acordă consumatorilor mai multe posibilități de alegere a produselor și prețurilor;

Consumatorilor li se dă siguranță asupra valorii. Vânzătorii pot realiza acest lucru oferind un produs sau o linie de produse care atrage potențialii clienți prin prețuri competitive, la fel ca și în comerțul ne-electronic;

Permite o livrare rapidă a produselor și/sau serviciilor (în anumite cazuri);

Consumatorii pot să primească informații relevante în decursul câtorva secunde, și nu zile sau săptămâni;

Asigurarea motivației consumatorilor de a cumpăra și, la nevoie, de a și returna. Vânzările promoționale pot implica cupoane, oferte speciale sau reduceri. Linkurile de pe alte situri web și programele afiliate de reclame pot fi de asemenea de ajutor;

Face posibilă participarea în licitații virtuale;

Îndemnarea consumatorilor la consum. Comercianții din Internet pot asigura acest tip de ajutor printr-o amplă informare comparativă și prin facilități bune de căutare;

Permite consumatorilor să interacționeze cu alți cumpărători în comunități electronice și să compare experiențele;

Lăsând clienții să se ajute singuri. Asigurând funcționarea unui sit de autoservire, ușor de folosit fără asistență, poate fi de ajutor în acest sens;

Facilitează competiția, ceea ce rezultă în scăderea prețurilor.

Familiarizează consumatorii cu tehnologia și îi ține pe aceștia în pas cu ultimele noutăți.

Pentru societate, comerțul online ajută la:

Crearea unui "simț comun" al comunității comerciale, de exemplu prin chaturi, foruri ce solicită implicarea clientului, scheme de loialitate și programe de afinitate;

Dă posibilitatea mai multor persoane să lucreze / să cumpere de acasă, ceea ce micșorează traficul rutier și poluarea aerului;

Permite ca anumite mărfuri să fie vândute la prețuri mai scăzute, cu avanateje pentru cei cu venituri mai mici;

Crește eficiența și/sau îmbunătățesc calitatea;

Pune la dispoziție o organizare suficient de atentă și agilă pentru a răspunde rapid la orice schimbări din mediul economic, social și fizic.

Administrarea agentiei de turism

Toate elementele prezentate anterior se aplică perfect în cazul unui hotel, prin simplul fapt că există un vânzător (hotelul) și un client (persoane fizice sau firme și organizații).

Un hotel este un stabiliment care oferă servicii de cazare contra cost, în general pentru perioade scurte de timp. Hotelurile oferă adesea clienților și alte servicii, cum sunt cele de restaurant, sau de săli pentru reuniuni și conferințe.

Hotelurile se clasifică în funcție de gradul de confort și serviciile oferite. Clasificarea diferă de la țară la țară și se poate marca prin (de la cele mai austere la cele mai luxoase):

stele (de la 1 la 5);

litere (de la E la A);

clase (de la a patra la întâi).

Pentru o administrare cât mai eficientă, hotelurile utilizează aplicații online sau offline pentru stocarea datelor despre clienți, angajați, contracte, prezentarea camerelor etc, toate aceste date fiind stocate în baza de date a programului respectiv (excepți făcând datele privind cărțile de credit).

Comerțul online în domeniul agentiilor de turism

Din fericire pentru comercianți, hotelurile reprezinta un element important în comerțul online, deoarece din ce în ce mai mute hoteluri preferă să se aprovizioneze utilizând cumpărăturile online și să își plătească facturile si taxele tot prin intermediul Internetului. Managerii de hotel profită de avantajele tranzacțiilor online prezentate anterior, acest lucru începând să devină o obișnuință atât pentru managerii de mari hoteluri, cât și pentru propiretarii de moteluri, pensiuni, sau cabane.

Clienții hotelurilor au de asemenea avantaje utilizând metodele de plată și rezervare online, câștigând prin aceasta siguranță și totodata timp, deoarece datele lor personale vor fi protejate atât de către aplicația hotelului la care au făcut rezervare, cât și de banca la care au contractul pentru cartea de credit cu care, pot plăti un avans sau chiar integral durata șederii la hotel.

II. Tehnologii utilizate

II.1 HTML

HTML sau Hyper Text Markup Language este, așa cum o sugerează și definiția, un limbaj de marcare pentru hypertext (termenul se referă la modalitatea în care se fac legăturile între diferite documente HTML). O pagină hypertext nu este doar o simplă pagină de text, deoarece pe lângă textul propriu-zis, mai conține legături (hiperlegături) către alte pagini unde se găsesc texte care abordează același subiect etc.

Un browser de Internet nu poate citi decât fișiere HTML (fișiere cu extensia .html sau .htm), iar afișarea corectă a elementelor unui text o poate face doar cu ajutorul unor comenzi. Crearea și editarea paginilor de Internet se poate face în orice program de editare de texte, pornind chiar de la Notepad-ul sistemului de operare Windows.

În general, fișierul principal al unui site este numit index.html iar instrucțiunile folosite se numesc tag-uri, care se scriu între semnele < și >. Conținutul oricărui fișier HTML trebuie inclus între tag-urile <HTML> și </HTML>. Ca structură, pagina are două părți: <HEAD> și </HEAD>, care conține informații de identificare a paginii și o parte delimitată de <BODY> și <//BODY> ce conține informațiile de prezentat efectiv in pagină. Titlul de asemenea va fi încadrat între tag-urile <TITLE> și <//TITLE>, iar acestea vor fi incorporate între <HEAD> și </HEAD>.

O pagină de bază de tip HTML are așadar structura următoare, structură pe care am utilizat-o în toate fișierele unde aveam nevoie de cod HTML:

<html>

<head> <title></title>

[stiluri pentru formatarea textului, scripturi și link-uri către fișiere externe]

</head>

<body>

[conținut pagină]

</body>

</html>

Am folosit în construcția aplicației web numeroase elemente HTML cu scopul de a realiza o interfață cât mai prezentabilă, elemente pentru editarea și structurarea formei, mărimii și culorilor de text, precum și de prezentare și tranziții. Pentru marcarea unor titluri și subtitluri, existente în codul HTML, am utilizat etichetele <h1>,<h2>, …, <h6>, fontul l-am stabilit utilizând etichetele <strong>,<b>, însă pentru a da textului culoare, mărime, sau un tip de font, utilizat un stil CSS din interiorul etichetei respective.

Navigarea între pagini am făcut-o posibilă prin utilizarea etichtei <a href=”nume_pagină.php”>, unde “a” crează hyperlink-ul, și “href” setează URL-ului legăturii respective (atât pentru HTML, cât și pentru PHP).

De asemenea, am realizat tabele și formulare cu ajutorul etichetelor <table>, respectiv <form>. Am introdus în tabele rânduri noi folosind eticheta <tr> (table row), cât și celule noi cu ajutorul etichetei <td>. Aceste două elemente au fost obligatorii în realizarea aplicației web, deoarece datele apelate din baza de date sunt afișate în tabele, irează hyperlink-ul, și “href” setează URL-ului legăturii respective (atât pentru HTML, cât și pentru PHP).

De asemenea, am realizat tabele și formulare cu ajutorul etichetelor <table>, respectiv <form>. Am introdus în tabele rânduri noi folosind eticheta <tr> (table row), cât și celule noi cu ajutorul etichetei <td>. Aceste două elemente au fost obligatorii în realizarea aplicației web, deoarece datele apelate din baza de date sunt afișate în tabele, iar formularele sunt folosite pentru crearea de conturi noi / editarea paginilor din zona administrativă etc.

Listele neordonate sunt realizate cu ajutorul etichetei <ul>, iar pentru adăugarea de itemi noi, am utilizat etichetele <li>. Paragrafele au fost implementate utilizând eticheta <p>, iar pentru trecerea la rând nou, am utilizat tag-ul <br>.

II.2 CSS (Cascading Style Sheets)

CSS (Cascade Style Sheets) este un standard folosit în vederea formatării elementelor unui fișier HTML, XHTML, sau XML.

Beneficiile CSS sunt:

formatarea este introdusă într-un singur loc pentru tot documentul

editarea rapidă a etichetelor

datorită introducerii într-un singur loc a etichetelor se obține o micșorare a codului paginii, implicit încarcarea mai rapidă a acesteia

Sintaxa CSS este structurata pe 3 nivele:

nivelul 1, fiind proprietățile etichetelor din documentul HTML, tip inline

nivelul 2 este informația introdusă în blocul HEAD, tip embedded

nivelul 3 este reprezentat de comenzile aflate în pagini separate, tip externe

Cea mai mare importanță (suprascrie orice alt parametru) o are sintaxa de nivelul 1 iar cea mai mica importanță o are cea de nivelul 3. Totodată, folosind un fișier extern (sau nivel 3, extenisa acestora fiind .css) care să conțină comenzi CSS este foarte practic, deoarece poate fi utilizat la mai multe fișiere HTML, eliminând timpul necesar introducerii codului corespunzător în fiecare pagină și totodată editarea lor într-un singur loc pentru mai multe fișiere. 

Fiecare regulă sau set de reguli constă din unul sau mai mulți selectori (selectors) și un bloc de declarație (declaration block). Un bloc de declarație constă la rândul lui dintr-o listă de declarații în ramuri. Fiecare declarație proprie constă dintr-o proprietate, semnul de punctuație (:) și o valoare. Pentru declarații multiple într-un singur bloc de declarație se va folosi semnul de punctuație (;), pentru a putea separa fiecare declarație în parte.

Selectorii universali sunt reprezentați printr-un asterix (*) și pot fi atribuiți oricărui element dintr-un document HTML. CSS mai pot atribui valori și prin intermediul claselor sau identificatorilor elementelor HTML.

Sintaxă: selector {proprietate:valoare ; […] ; proprietate n:valoare n;}

Exemplu: h1 {color:blue ; font-size:12px;}

Exemplu selector universal: * {color:blue; font-size:12px;}

Exemplu clasă CSS: .nume_clasă {[…]}

Exemplu identificator CSS: #nume_identificator{[…]}

În cazul aplicației web realizate, am utilizat la utilizarea CSS de nivelul 3 (fișiere externe cu extensia .css apelate în cod), deoarece, cum am precizat anterior, acest lucru mi-a ușurat munca, folosind proprietățile respective la mai multe fișiere HTML / PHP.

Spre exemplu, următoarea secvență de cod

*{

margin: 0px;

padding: 0px;

}

am utilizat-o pentru implementarea marginii și a padding-ului iar

table tr

{

line-height: 30px;

}

pentru a stabili înălțimea liniei în tabele.

Cu ajutorul proprietății border, am implementat diverse stiluri de linii și culoare în cazul tabelelor, precum și a unor etichete <div>.

Dintre elementele CSS utilizate pentru o aranjare ordonată a paginii, amintesc: width (determinarea lungimii elementelor HTML), height (determinarea lățimii elementelor HTML), auto (asigură poziționarea automată a unor elemente HTML prin intermediul browserului), padding (folosirea spațiilor albe pentru redarea unui spațiu gol între diverse elemente ale unui document HTML), margin-top, margin-left, margin-right, acestea fiind utilizate împreună cu dimensiunile în pixeli, pentru amplasarea corectă a unor elemente în pagină.

În realizarea aplicației web, am utilizat elemente de CSS3, deoarece acesta include stiluri dinamice // animații și am reușit să le fac funcționale în browserele Mozilla Firefox v.3.6+ și Google Chrome.

II.3 jQuery UI

jQuery este o bibliotecă JavaScript care se poate folosi pentru următoarele manipularea elementelor CSS, efecte și animații, cereri tip Ajax, înregistrarea și modificare evenimentelor din browser pentru o dezvoltare web mai rapidă. jQuery a fost proiectat să schimbe modul în care programatorul este obișnuit să scrie JavaScript.  jQuery a fost gândit să fie cât mai mic posibil, disponibil în toate versiunile de browsere importante existente, și să respecte filosofia "Unobtrusive JavaScript". Biblioteca a fost lansată in 2006 de către John Resig.

Aflat sub licență MIT și GNU General Public License, jQuery este un software liber din categoria open source. Plugin-urile sau extensiile sunt unele dintre cele mai interesante aspecte ale jQuery. Arhitectura sa permite programatorilor să dezvolte subaplicații bazate în biblioteca principală care extind funcțiile de bază jQuery cu funcții specifice plugin-ului. În acest fel, biblioteca principală poate ocupa foarte puțin spațiu, iar extensiile necesare în anumite pagini web pot fi încarcate la cerere, doar când este nevoie de ele.

Există un set de extensii principal numit jQuery UI (jQuery User Interface), utilizat totodată și la aplicația web Hotelinio. jQuery UI ofera un set de extensii pentru interactivitate de bază, efecte mai complexe decât cele din biblioteca de bază și teme de culori. Avantajul jQuery UI față de alte extensii este că dezvoltarea și testarea acestor componente se face în paralel cu dezvoltarea bibliotecii principale, minimizând riscul de incomptibilitate.

Am utilizat în cadrul aplicației mele jQuery UI la implementarea părții de rezervare la hotel, acest lucru fiind inclus în fișierul js/jquery-ui.js începând de la liniile:

* jQuery UI Datepicker 1.8.12

*

* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)

* Dual licensed under the MIT or GPL Version 2 licenses.

* http://jquery.org/license

*

* http://docs.jquery.com/UI/Datepicker

*

* Depends:

* jquery.ui.core.js

*/

În cadrul jQuery UI, declararea lunilor calendaristice se face astfel:

monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]

Funcția completă utilizată la selectarea datei calendaristice de către client conține în total 81 de linii de cod, acestea fiind oferite ca open-source de către MIT și GPL. Toate pluginurile jQuery UI au fost testate pe browserele Internet Explorer 6.0+, Firefox 3+, Safari 3.1+, Opera 9.6+ și Google Chrome.

II.4 PHP (Hypertext PreProcessor)

Spre deosebire de paginile HTML care pot fi verificate și pe calculatorul local, paginile PHP nu pot fi verificate decât dacă sunt găzduite pe un server web care are instalat PHP.

La accesarea unei pagini HTML, serverul care o găzduiește trimite pagina HTML către browser pentru afișare. În cazul unei pagini PHP, serverul citește codul PHP, îl interpretează și generează dinamic pagina HTML care este trimisa browserului spre afișare, iar pentru acest motiv, programatorii folosesc PHP pentru construirea unor pagini cu continut dinamic.

Fisierele PHP au extensia php, iar acestea se pot crea și edita cu ajutorul editorului de text Notepad / Notepad++, însă cel mai indicat este un editor specializat care va indica și numărul liniilor, lucru util la depanarea scripturilor.

Când PHP-ul parcurge un fișier, el de fapt "citește" textul până când întalneste una din etichetele speciale care-i spun să înceapă să interpreteze textul ca pe cod PHP și se execută codul până când este întâlnită eticheta de închidere, apoi se "citește" din nou textul mai departe. Acesta este motivul pentru care se poate adauga cod PHP in interiorul HTML-ului.

De menționat este faptul că:

în cazul funcțiilor, nu se face diferența între utilizarea literelor mari sau mici

pentru variabile se face diferența la utilizarea literelor mari sau mici

închiderea unui rând se face obligatoriu cu caracterul ;

ghilimelele se folosesc pereche "…" sau '…', folosirea "…' sau '…" constituie o eroare

Codul PHP este delimitat de unul din urmatoarele seturi de etichete de deschidere si inchidere:

<?php ?> etichete recomandate

<script language="php"?> </script>
<? ?> folosirea lor necesita anumite setari pe server

<% %> etichete tip ASP, folosirea lor necesita anumite setari pe server

Funcția echo este folosita pentru afisarea informatiilor delimitate de ghilimele. Nu uitati sa inchideti randul cu ;. Similar functiei echo este functia print.

In situatia in care scriptul nu este scris corect PHP-ul va afisa eroarea indicandu-va si locul unde aceasta apare. Erorile sunt afisate doar daca serverul este setat corespunzator (in php.ini este setat display_errors=On si error_reporting=E_ALL).

fisierul PHP poate contine intre etichetele <html> si </html> blocuri PHP delimitate de <?php ?>

<html>
<head><title>Exemplu0_3</title>
</head>
<body>
Bloc HTML<br>
<?php
echo "Bloc PHP";
?>
</body>
</html>

În PHP, există trei metode prin care se poate adauga un comentariu, care evident nu va fi afișat în browser, ci are ca scop adăugarea de informații necesare programatorului.
Tot ce urmeaza dupa caracterele // sau # este considerat comentariu. De exemplu:

// Urmeaza un comentariu in PHP

Un comentariu format din mai multe linii este incadrat de /* si */. De exemplu:

/* Comentariul in PHP
scris pe doua linii */

În PHP, variabila este un container de date care poartă un nume și i se poate atribui o valoare care poate fi modificată de mai multe ori sau salvată într-o bază de date. Numele variabilei începe cu simbolul $, urmat de orice litera mică (a-z), sau mare (A-Z), sau caracterul _, însă niciodată cu o cifră și nu poate conține spații goale (exemplu: $tudor_hering). Pentru evitarea problemelor, este recomandat ca numele variabilei să fie ales sugestiv, spre exemplu (adăugare și afișare):

<?php
$ziua="22";
$luna="12";
$anul="1995";
echo "Data nasterii este ".$ziua.".".$luna.".".$anul."";
?>

PHP oferă un număr mare de variabile predefinite oricărui script care rulează, iar începând cu versiunea 4.2.0, valoarea default pentru directiva register_globals este off (aceasta afecteaza setul de variabile predefinite disponibile în scop global). Spre deosebi re variabilele globale, variabilele statice există doar în scopul funcției locale dar își pierde valoarea când execuția scriptului încetează.

Un alt element PHP utilizat și în cadrul aplicației web Hotelinio este condiționalul if, această instrucțiune având sintaxa următoare:

if (conditie) {

instructiuni executate daca este indeplinita conditia

}

În cadrul proiectului, am utilizat instrucțiunea if în diverse locuri, spre exemplu:

<?php

if(!empty($_SESSION['User.email'])){

include('includes/user_menu.php');

}else{

include('includes/user_login.php');

}

?>

În această secvență de cod, se verifică dacă sesiunea nu este goală; dacă intră pe prima rarmură (not empty), se include fișierul user_menu.php, care conține datele despre pagina ce va fi afișată în cazul în care clientul este autentificat pe site, iar în caz contrat, se va include fișierul user_login.php, care conține formularul de intrare în cont a utilizatorului, formular ce se regăsește în headerul paginii.

Un alt element PHP important este switch, asemănătoare funcției if, însă condiția trebuie să aibe mai mult de două valori. Funcția switch am utilizat-o în fișierul client.php, pentru o mai ușoară preluare a paginii din baza de date (includes/db_config.php).

Două funcții folosite pentru includerea unor fișiere externe în paginile php sunt include și require. Diferența dintre cele două funcții constă în faptul că dacă include dă greș, scriptul generează o avertizare dar funcționează în continuare, în timp ce la require se termină executarea scriptului. Pentru a exemplifica mai bine diferența dintre cele două, voi folosi două secvențe de cod din aplicația Hotelinio:

require('includes/db_config.php');

În acest caz, require înștiințează necesitatea bazei de date.

<?php include('includes/home_page.php'); ?>

În acest caz, am inclus fișierul ce conține codul sursă al paginii principale, dar scriptul va rula și în cazul în care apar unele alerte, deoarece în pagină au mai fost incluse și alte scripturi.

Funcția este o secvență de cod ce poate fi utilizată de mai multe ori în interiorul marilor scripturi și este prezentată în script prin declararea ei. Funcția chemată (apelată / invocată) va conține același număr de argumente ca în declarație. În cadrul proiectului, am utilizat funcții pentru realizarea ferestrei pop-up care permite utilizatorului să selecteze o dată din calendar:

$(function() {

$( "#arival_date" ).datepicker();

});

Dintre elementele PHP importante utilizate și în aplicația web Hotelinio este algoritmul MD5. Acest algoritm calculează pentru un șir oarecare o sumă de control corespunzătoare, un șir va întoarce întotdeauna aceeași sumă de control, însă orice modificare a șirului, chiar o modificare infimă, duce la modificari majore a sumei de control MD5. 

MD5 este numit adesea un algoritm de criptare, lucru nu tocmai potrivit deoarece algoritmul MD5 nu permite decriptarea datelor. Suma de control MD5 (MD5 hash) este un număr cu lungimea de 128 biți. Uzual, acest număr este reprezentat ca un șir de 32 de caractere, reprezentarea hexazecimală a numărului respectiv. Indiferent de lungimea șirului, algoritmul asigură obținerea unei sume MD5 cu lungimea de 128 de biți (32 caractere în reprezentarea hexazecimală); chiar și pentru un șir vid, acesta returnând "d41d8cd98f00b204e9800998ecf8427e". 

O caracteristică importantă este faptul că nu se poate determina șirul care a generat o anumita suma de control MD5, acest lucru recomandând MD5 pentru stocarea parolelor și alte verificari de integritate a datelor.

Algoritmul MD5 are așadar utilizări în:

protejarea parolelor – MD5 este un algoritm util în protejarea parolelor datorită incapacității sale de decriptare a șirului inițial

validarea datelor – algoritmul MD5 este adesea folosit pentru validarea datelor la transport

validarea fișierelor la download, aplicând un procedeu ca mai sus, mulți distribuitori de produse software calculează sumele MD5 pentru pachete de instalare pe care le produc, punând la dispoziția utilizatorilor aceste valori. Astfel, orice utilizator care descarcă o versiune a softului respectiv dintr-o sursă originală sau alternativă (mirror) va putea determina autenticitatea softului respectiv.

În cadrul proiectului, am apelat la MD5 pentru criptarea parolelor utilizatorilor site-ului, precum și a datelor clienților ce doresc să efectueze un avans la rezervarea camerei:

password = '".md5($password)."'

II.5 MySQL

MySQL este un sistem de gestiune a bazelor de date relațional, produs de compania suedeza MySQL AB și distribuit sub Licența Publică Generală GNU. Este cel mai popular SGBD open-source la ora actuală, fiind o componentă cheie a stivei LAMP (Linux, Apache, MySQL, PHP).

Folosit deseori împreună cu limbajul de programare PHP, cu MySQL se pot construi aplicații în orice limbaj major. Există multe scheme API disponibile pentru MySQL ce permit scrierea aplicațiilor în numeroase limbaje de programare pentru accesarea bazelor de date MySQL, cum ar fi: C, C++, C#, Java, Perl, PHP, Python, sau FreeBasic, fiecare dintre acestea folosind un tip spefic API. O interfață de tip ODBC denumită MyODBC permite altor limbaje de programare ce folosesc această interfață, să interacționeze cu bazele de date MySQL cum ar fi ASP sau Visual Basic. În sprijinul acestor limbaje de programare, unele companii produc componente de tip COM/COM+ sau .NET (pentru Windows) prin intermediul cărora respetivele limbaje să poată folosi acest SGBD mult mai ușor decât prin intermediul sistemului ODBC. Aceste componente pot fi gratuite (ca de exemplu MyVBQL) sau comerciale.

Licența GNU GPL nu permite încorporarea MySQL în softuri comerciale; cei care doresc să facă acest lucru pot achiziționa, contra cost, o licență comercială de la compania producătoare, MySQL AB.

MySQL este componentă integrată a platformelor LAMP sau WAMP (Linux/Windows-Apache-MySQL-PHP/Perl/Python). Popularitatea sa ca aplicație web este strâns legată de cea a PHP-ului care este adesea combinat cu MySQL și denumit Duo-ul Dinamic. În multe cărți de specialitate este precizat faptul ca MySQL este mult mai ușor de invățat și folosit decât multe din aplicațiile de gestiune a bazelor de date, ca exemplu comanda de ieșire fiind una simplă și evidentă: „exit” sau „quit”.

Pentru a administra bazele de date MySQL se poate folosi modul linie de comandă sau, prin descărcare de pe internet, o interfață grafică: MySQL Administrator și MySQL Query Browser. Un alt instrument de management al acestor baze de date este aplicația gratuită, scrisă în PHP, phpMyAdmin.

MySQL poate fi rulat pe multe dintre platformele software existente: AIX, FreeBSD, GNU/Linux, Mac OS X, NetBSD, Solaris, SunOS, Windows 9x/NT/2000/XP/Vista.

Pentru conectarea la mediul mySQL și bazele de date, se introduce adresa localhost/phpmyadmin în browser, iar aici se pot crea, edita și șterge baze de date, tabele și interogări diverse. Dintre operațiile cu baze de date amintesc: CREATE (creează o bază de date sau un tabel), DROP (șterge o bază de date sau un tabel), INSERT (adaugă înregistrări în tabel), DELETE (șterge înregistrări din tabel), UPDATE (updatează înregistrările dintr-un tabel), SELECT (selectează un tabel) și ALTER (alterarea unui tabel).

De menționat este faptul că pentru crearea unei baze de date, este nevoie de MySQL, PHP (instalat pe server) și un server, în acest caz, cel mai utilizat fiind Apache (pentru care e nevoie de software-ul gratuit XAMPP). În cadrul aplicației web Hotelinio, baza de date este apelată utilizând secvența de cod require('includes/db_config.php');

II.6 XAMPP

Software-ul gratuit XAMPP are toate uneltele pentru setarea unui web server și mentenanța acestuia.

XAMPP vine de la X (numărul mare de sisteme pentru care oferă suport), Apache, MySQL, PHP și Perl. Cunoscut anterior ca WAMP sau WAMPP, această versiune specială pentru Windows este gratuită și include următoarele unelte: Apache 2.2.4, MySQL 5.0.33, PHP 5.2.1 & PHP 4.4.5 (cu PEAR și Switch), MiniPerl 5.8.7, OpenSSL 0.9.8d, phpMyAdmin 2.9.2, XAMPP Control Panel 2.4, Webalizer 2.01-10, Mercury Mail Transport System for Win32 and NetWare Systems v4.01a, FileZilla FTP Server 0.9.22, SQLite 2.8.15, ADODB 4.93a, Zend Optimizer 3.2.2 și XAMPP Security. Puteți descărca versiunea adecvată pentru suport Linux, MacOS sau Solaris.

III. Proiectarea și implementarea aplicației web pentru gestiunea unei agentii de turism

III.1 Analiza și prezentarea website-ului

III.1.1 Structura website-ului

Aplicația web Hotelinio este destinată prezentării serviciilor unui hotel, Hotelinio, având pe de o parte funcționalitate administrativă, dar și una destinată utilizării de către clienții și oaspeții săi.

De aceea, website-ul conține mai multe pagini web, unele fiind accesibile spre navigare din oricare altă pagina, iar altele având restricții de navigare, condiția fiind pusă de tipul contului autentificat în acel moment.

Din punct de vedere funcțional, website-ul Hotelinio poate fi utilizat de către:

vizitatori ai website-ului

clienți (oaspeți)

recepționeri

managerul restaurantului

managerul general

Paginile Hotelinio, Camere, Metode de plată, Contact, Cum rezerv?, Locație și Date de confidențialitate sunt accesibile oricărui tip de cont (sau doar vizitator) și din fiecare se pot accesa la rândul lor următoarele pagini:

Hotelinio

Camere

Metode de plata

Locatie

Contact

Autentificare

Am uitat parola!

Rezervare

Inregistrare client nou

Cum rezerv?

Date de confidentialitate

Drepturi de autor

În cele ce urmează, voi prezenta structura paginilor website-ului Hotelinio, specificând pentru fiecare pagină în parte accesibilitatea ei și paginile ce pot fi accesate pornind de la pagina în utilizatorul se află într-un moment dat.

Structura website-ului

Structura paginilor accesibile recepționerului

Recepționerii Hotelinio au la rândul lor o pagină la care doar ei au acces, aceasta fiind Index receptioner, iar de aici, ei pot naviga la următoarele pagini:

Rezervări

Informații despre rezervări

Ștergere rezervare

Modificare parolă

Părăsire sistem

Hotelinio

Camere

Metode de plată

Contact

Cum rezerv?

Locație

Date de confidențialitate

Structura paginilor accesibile clienților

Nu în ultimul rând, clienții au acces la pagina Index client, de aici ajungându-se la paginile:

Rezervare restaurant

Efectuare rezervare nouă la restaurant

Detalii rezervare hotel

Date cont

Modificare parolă

Părăsire sistem

Hotelinio

Camere

Metode de plată

Contact

Cum rezerv?

Locație

Date de confidențialitate

III.1.2 Baza de date

Website-ul utilizează o bază de date creată cu ajutorul phpMyAdmin v.3.3.9, conține opt tabele și poartă numele licenta.

Tabela contact conține datele de contact ce apar în contact box-ul din partea dreaptă a website-ului, acest lucru fiind posibil datorită fișierului contact_box.php ce conține linia $select_contact = "SELECT * FROM contact";

Tabela contact a bazei de date licenta

Tabela images este necesară la reprezentarea imaginilor aferente fiecărei camere, câmpurile conținute fiind id, room_id și path:

Tabela images a bazei de date licenta

Tabela pages este populată de paginile editabile de către managerul general al Hotelinio și anume Hotelinio, Metode de plată, Cum rezerv?, Localizare, Date de confidențialitate și Drepturi de autor:

Tabela pages a bazei de date licenta

În tabela restaurant_rezervation conține sunt stocate informațiile ce aparțin de rezervările efectuate de către clienții (deja cazați) la restaurantul Hotelinio. Câmpurile implementate sunt id (numărul rezervării la restaurant), user_id (id-ul oaspetelui ce a făcut rezervarea la restaurant), people_no (numărul de persoane ce vor participa la masă) și date_rez , care conține data și ora pentru care s-a făcut rezervarea.

Tabela restaurant_rezervation a bazei de date licenta

Următoarea tabelă conține poartă numele rezervations și conține date asemănătoare cu cele ale tabelei restaurant ;rezervations, doar că de această dată, informațiile stocate aici conțin date despre rezervările clienților la restaurant, câmpurile fiind id (id-ul rezervării), user_id (id-ul clientului), nights (numărul de nopți pentru care a rezervat camera), room_type (id_ul camerei), rooms (numărul camerelor rezervate), guests (numărul oaspeților), from_date (data pentru care s-a făcut rezervarea), total (suma de plată) și advance (avansul, dacă este cazul).

De menționat este faptul că în cazul în care clientul nu dorește să lase un avans, ci doar să facă o rezervare, acesta completează în formularul de rezervare ‘0’ la plata avansului.

Tabela rezervations a bazei de date licenta

Tabela rooms conține date despre camerele puse la dispoziția clienților de către Hotelinio, după cum urmează: câmpul id (id-ul camerei), type (0 – single room, 1 – double room, 2 – suite, 3 – apartment), price (tariful / noapte), available (disponibilitatea – 0 – nu, 1 – da), guests (numărul de oaspeți ce ii poate găzdui camera) și câmpurile image_01 – image_05, pentru stocarea imaginilor de prezentare a camerei.

Tabela rooms a bazei de date licenta

Cea de-a opta tabela, dar una din cele mai importante ale bazei de date datorită informațiilor stocate în ea este tabela users. Aceasta conține toate informațiile tuturor conturilor website-ului Hotelinio, începând de la conturile clienților și terminând cu cel al managerului general. Aceste date sunt importante, deoarece conțin: id (id-ul contului), role_id (0 – manager general, 1 – manager restaurant, 2 – receptioner, 3 – client), email (email-ul celui în cauză), password (parola contului, informație procesată de către MD5) și numele și prenumele (firstaname, respectiv lastname).

III.2 Prezentarea aplicației web Hotelinio

Datorită faptului că website-ul Hotelinio a fost conceput ca un site de prezentare al hotelului ce oferă posibilitatea clienților săi să efectueze rezervări online, fiind totodată utilizat și de către administrația hotelului pentru diferite operațiuni, voi împărți această parte a lucrarii în trei părți: prezentarea Hotelinio pentru vizitatori, prezentarea Hotelinio pentru clienți și prezentarea Hotelinio pentru administrație.

III.2.1 Hotelinio pentru utilizatori

Aplicația web Hotelinio, transmite atât prin numele său, cât și prin navigarea între pagini ușurința cu care până și un utilizator cu cunoștințe minime în domeniul calculoatoarelor se poate descurca să viziteze și să găsească ceea ce caută odată ce a accesat website-ul.

Ca background, am utilizat culoarea argintiu voal (Silver Veil), hex #eaf4ff, pentru că această culoare combinată cu termenul hotel diminutivat să transmită vizitatorului o senzație de relaxare și să-l binedispună, un lucru obligatoriu în cazul unui website cu acest specific.

Elementul dominant pe prima pagină a website-ului este flash-slideshow-ul cu imagini din cadrul Hotelinio, ce se găsește în partea inferioară a logo-ului hotelului și a meniului cu linkurile spre paginile de interes pentru orice posibil client:

Ca simplu vizitator al site-ului, oricine are acces la linkurile cele din header, care deschide paginile de prezentare a camerelor disponibile (Camere), prezentarea metodelor de plată pentru cei ce sunt interesați de o eventuală rezervare, o mini-harta interactiva Google Maps ce se găsește la pagina Locatie și un formular de contact la pagina Contact.

Pagina Camere pune la dispoziția vizitatorului site-ului o prezentare a camerelor hotelului, aceste fiind de patru tipuri:

Cameră simplă, pentru o persoană, cu tariful de 150 RON / noapte

Cameră dublă, pentru două persoane, cu tariful de 250 RON / noapte

Cameră triplă, pentru trei persoane, cu tariful de 350 RON / noapte

Apartament, pentru 4 sau 5 persoane, cu tariful de 400 RON / noapte

Fiecare cameră în parte conține imagini ce prezintă interiorul acesteia, iar trecerea de la o imagine la alta se realizează ușor, cu ajutorul săgeților sau efectuând click pe săgeata de navigare de îndată ce s-a lansat prima imagine. Informațiile despre camere sunt preluate din baza de date prin intermediul codului:

<?php

session_start();

require('includes/db_config.php');

$select_rooms = "SELECT * FROM rooms";

$query_rooms = mysql_query($select_rooms,$connect) or die ("Could not query sql table.<br>".mysql_error());

$fetch_rooms = mysql_fetch_assoc($query_rooms);

$num_rooms = mysql_num_rows($query_rooms);

?>

Accesarea butonului Metode de plata din headerul paginii va deschide pagina în care utilizatorul este înștiințat de posibilele metode de plată în cazul în care dorește să efectueze o rezervare:

Pagina Locatie conține o minihartă interactivă Google Maps, codul pentru aceasta fiind luat de la adresa http://tinyurl.com/licenta-tudor prin accesarea butonului link, pentru cod HTML.

Pagina de Contact ce poate fi accesată din meniul din headerul paginii conține un formular pus la dispoziția utilizatorilor pentru a contacta administrația Hotelinio pentru sugestii etc. Formularul necesită completarea a trei câmpuri (email, nume și comentariu), iar validarea mesajului se face prin apăsarea butonului Submit. Codul php pentru această validare se găsește în fișierul contact.php și este următorul:

<?php

include('includes/emails.php');

if(!empty($_POST['submit']) && $_POST['submit'] != ""){

$email = $_POST['email'];

$name = $_POST['name'];

$comment= $_POST['comment'];

email_contact($email, $name, $comment);

$_SESSION['message'] = 'Mesajul dvs. a fost trimis. Va multumim.';

}

?>

După trimiterea mesajului, utilizatorul primește un mesaj automat pe mail, textul fiind conșinut în fișierul includes\email_templates\contact_email, prin care utilizatorul află că mesajul a fost trimis cu succes:

Paginile ce pot fi accesate din headerul paginii se regăsesc și în footerul paginii, iar aici pe lângă acestea mai pot fi accesate paginile:

Cum rezerv? – informațiile de aici prezintă utilizatorilor metodele de plată în cazul unei rezervări

Date de confidentialitate – utilizatorului îi sunt prezentate metodele prin care Hotelinio îi trimite datele despre card la banca cu care are contract, în acest mod protejându-le

Drepturi de autor – informații despre drepturile de autor ale website-ului Hotelinio

Rezervarea unei camere este posibilă datorită formularului din partea dreaptă a paginii, iar ca element deosebit, am implementat cu ajutorul jQuery UI selectarea datei interactiv:

Înregistrarea unui cont nou se face de la pagina rezervation.php, unde utilizatorul este direcționat după ce a apăsat butonul Rezerva. Aici, utilizatorul poate vedea datele rezervării făcute și dacă dorește poate plăti un avans:

Odată autentificat, lcientul are acces la următoarele pagini din control panelul său:

Rezervare restaurant – aici, utilizatorul poate efectua o rezervare la restaurantul Hotelinio, prin completarea unui formular unde va introduce date precum numărul de persoane, data și ora rezervării, informațiile ajung în baza de date și detaliile rezervării pot fi vizibile atât din contul său, cât și din contul managerului restaurantului.

Detalii rezervare – aici poate vizualiza și șterge rezervările online făcute prin contul său. În cazul în care nu există nicio rezervare, clientul este notificat de acest lucru printr-un mesaj text (Nu am gasit nici o rezervare in sistemul nostru legata de acest cont),

Date cont – aici clientul poate vizualiza datele contului său (nume, prenume și email), preluate din baza de date

Modificare parola – pentru modificarea parolei contului de client am utilizat aceeași funcție ca și în cazul modificării parolei contului de recepționer, manager general, sau manager de restaurant, funcția fiind detaliată în partea de administrație

Parasire sistem – accesând acest buton, clientul se deloghează și este direcționat la pagina Hotelinio

III.2.2 Hotelinio pentru administrație

Partea de administrare a website-ului Hotelinio este destinată recepționerilor, managerului restaurantului și managerului hotelului, fiecare având acces la anumite funcționalități ale Hotelinio.

Indiferent de tipul contului autentificat (recepționer, manager restaurant, manager hotel), datorită id-ului tipului de cont, codul php recunoaște faptul că trebuie să afișeze ca primă pagină conținutul fișierului index.php din cadrul folderului admin. Acest fișier conține un header, <h1>Sectiunea de administrare al Hotelinio</h1> cu titlul Secțiunea de administrare al Hotelinio și trei paragrafe ce întâmpină managerul general / managerul restaurantului / recepționerul cu un mesaj personalizat, fiecare paragraf conținând câte o listă neordonată cu operațiunile ce pot fi efectuate de fiecare în parte.

Codul php pentru lista neordonată din interiorul paragrafului pentru managerul general este următorul:

<ul>

<li>1. Vizualizarea / adaugarea / stergerea / modificarea parolelor utilizatorilor</li>

<li>2. Vizualizarea / adaugarea / stergerea / editarea informatiilor despre camere</li>

<li>3. Modificarea informatiilor ce se gasesc in paginile website-ului Hotelinio</li>

<li>4. Vizualizarea / stergerea rezervarilor clientilor</li>

<li>5. Modificarea parolei contului dumneavoastra de manager general</li>

<li>6. Parasirea sectiunii de administrare</li>

</ul>

Codul php pentru lista neordonată din interiorul paragrafului pentru managerul restaurantului este următorul:

<ul>

<li>1. Vizualizarea / stergerea rezervarilor clientilor</li>

<li>2. Modificarea parolei contului dumneavoastra de manager a restaurantului</li>

<li>3. Parasirea sectiunii de administrare</li>

</ul>

Codul php pentru lista neordonată din interiorul paragrafului pentru cei trei recepționeri este următorul:

<ul>

<li>1. Vizualizarea / stergerea rezervarilor clientilor</li>

<li>2. Modificarea parolei contului dumneavoastra de receptioner</li>

<li>3. Parasirea sectiunii de administrare</li>

</ul>

Cele trei tipuri de conturi cu acces la administrația Hotelinio au câte un id diferit în baza de date, care este esențial în momentul autentificării de către codul php. Pentru contul de manager general, acesta este 0, pentru cel de manager de restaurant este 1, iar pentru recepționer id-ul atribuit este 2. Codul php ce verifică id-ul la autentificare se găsește în fișierul includes\user_menu.php:

<?php

switch($_SESSION['User.role_id']){

case 0: //Manager general

?>

<h2 class="admin_header">Bine ati venit, domnule manager general Tudor Hering!</h2>

<div id="menu" style="width:700px;">

<ul>

<li class="first"><a href="/licenta/admin.php?page=users" title="Lista utilizatori">Utilizatori</a></li>

<li><a href="/licenta/admin.php?page=rooms" title="Lista camere">Camere</a></li>

<li><a href="/licenta/admin.php?page=modify_page" title="Modificare pagini">Modificare Pagini</a></li>

<li><a href="/licenta/admin.php?page=rezervations" title="Rezervari">Rezervari</a></li>

<li><a href="/licenta/admin.php?page=pass_mod" title="Modificare parola">Modificare parola</a></li>

<li class="last"><a href="/licenta/logout.php" title="Parasire sistem" class="last">Parasire sistem</a></li>

</ul>

</div>

<?php

break;

case 1: // Manager restaurant

?>

<h2 class="admin_header">Bine ati venit, domnule manager al restaurantului Hotelinio!</h2>

<div id="menu" style="width:700px;">

<ul>

<li class="first"><a href="/licenta/admin.php?page=rest_rezervations" title="Rezervari">Rezervari</a></li>

<li><a href="/licenta/admin.php?page=pass_mod" title="Modificare parola">Modificare parola</a></li>

<li class="last"><a href="/licenta/logout.php" title="Parasire sistem" class="last">Parasire sistem</a></li>

</ul>

</div>

<?php

break;

case 2: //Receptioner

?>

<h2 class="admin_header">Bine ati venit, domnule receptioner!</h2>

<div id="menu" style="width:700px;">

<ul>

<li class="first"><a href="/licenta/admin.php?page=rezervations" title="Rezervari">Rezervari</a></li>

<li><a href="/licenta/admin.php?page=pass_mod" title="Modificare parola">Modificare parola</a></li>

<li class="last"><a href="/licenta/logout.php" title="Parasire sistem" class="last">Parasire sistem</a></li>

</ul>

</div>

Codul mai conține pentru fiecare tip de cont câte o listă neordonată unde se regăsesc link-urile din meniul tipului de cont autentificat (manager general / manager restaurant / recepționer).

Prima operație posibilă din cadrul contului de manager general este vizualizarea utilizatorilor website-ului, aici fiind incluse atât conturile clienților ce s-au înregistrat, cât și conturile angajaților săi (managerul restaurantului și recepționerii). Datele utilizatorilor sunt stocate în baza de date, iar afișarea lor este posibilă datorită:

<?php

$select_users = "SELECT * FROM users";

$query_users = mysql_query($select_users,$connect) or die ("Could not query sql table.<br>".mysql_error());

$users = mysql_fetch_assoc($query_users);

$num_users = mysql_num_rows($query_users);

?>

Afișarea utilizatorilor se face în cadrul unui tabel, iar câmpurile sunt Tip cont (specificat de id-ul contului, role_id), Nume, Prenume și email date de:

<td><?php echo $users['firstname']; ?></td>

<td><?php echo $users['lastname']; ?></td>

<td><?php echo $users['email']; ?></td>)

În dreptul fiecărui utilizator se mai regăsesc două butoane care permit editarea, respectiv ștergerea contului respectiv din baza de date. Cele două butoane au implementat câte un link, primul direcționând utilizatorul prin apăsarea lui la pagina de editarea a contului respective, iar al doilea face posibilă ștergerea unui cont:

<a href="/licenta/admin.php?page=edit_user&id=<?php echo $users['id']; ?>" title="Editeaza acest utilizator" class="edit_btn">Editeaza</a>

<a href="/licenta/admin/delete_user.php?id=<?php echo $users['id']; ?>" title="Sterge acest utilizator" class="delete_btn">Sterge</a>

Ultima operațiune posibilă asupra datelor utilizatorilor, autentificat ca manager general este adăugarea unui utilizator, acest lucru fiind posibil accesând link-ul Adaugare utilizator de pe pagina utilizatorilor, care va deschide pagina de adăugare a unui utilizator nou. Adăugarea unui cont nou în baza de date se realizează prin completarea unui formular, primul câmp constând în selectarea tipului de cont (manager general / manager restaurant / recepționer / client), urmând să fie apoi introduce email-ul, numele și prenumele. Adăugarea se finalizează cu success în momentul în care managerul general apasă butonul Adauga, iar parola contului creat este generată automat și trimisă la email-ul introdus. Codul sursă al paginii pentru adăugarea unui utilizator nou se găsește în fișierul admin\add_user.php, iar cel pentru generarea parolei se află în fișierul reset_pass.php. Funcția care generează parola pentru un cont este următoarea:

function generate_password ($length = 8)

{

$password = "";

// define possible characters

$possible = "0123456789bcdfghjkmnpqrstvwxyz";

// set up a counter

$i = 0;

while ($i < $length) {

$char = substr($possible, mt_rand(0, strlen($possible)-1), 1);

if (!strstr($password, $char)) {

$password .= $char;

$i++;

}

}

return $password;

}

Următorul buton din meniul managerului general este Camere, pagină la care sunt afișate tot într-un tabel – asemenea conturilor – camerele puse la dispoziția clienților de către Hotelinio. Informațiile despre camere sunt preluate din baza de date prin același mod ca și în cazul utilizatorilor, iar informațiile sunt împărțite în tabel după câmpurile Tip camera, Tarif/noapte, Numar persoane, iar în final sunt prezente de asemenea butoanele de editare / ștergere a unei camere, după cum se poate observa:

Pagina de editare a datelor unei camere pune la dispoziția managerului general schimbarea tarifului și a numărului maxim de persoane ce poate găzdui camera, iar date sunt salvate prin apăsarea butonului Salveaza.

Afișarea informațiilor în tabel despre camere este similară cu cea în cazul utilizatorilor, însă dacă managerul dorește să adauge un nou tip de cameră, pagina pentru această operațiune îi pune la dispoziție selectarea tipului de cameră, introducerea tarifului / noapte și a numărului maxim de oaspeți ce poate găzdui camera respectivă, precum și uploadarea a până la cinci imagini pentru o mai bună prezentare și informare a clientului asupra ei.

Codul sursă pentru adăugarea unei camere noi este se găsește în fișierul admin\add_room.php.

O altă operațiune posibilă autentificat ma și manager general este editarea paginilor website-ului (titlul și conținutul paginii respective) pentru paginile:

Hotelinio

Metode de plata

Rezervare

Locatie

Date de confidentialitate

Drepturi de autor

Contact

Codul php pentru acestă operațiune se găsește în fișierul admin\admin_edit.php:

<?php

$slug = $_GET['slug'];

if($slug != 'contact'){

$select_pages = "SELECT * FROM pages WHERE slug='$slug'";

$query_pages = mysql_query($select_pages,$connect) or die ("Could not query sql table.<br>".mysql_error());

$fetch_pages = mysql_fetch_assoc($query_pages);

$num_pages = mysql_num_rows($query_pages);

if($num_pages > 0){

?>

<form id="edit_admin" method="POST">

<label for="title">Titlul pagini:</label><br/>

<input type="text" name="title" id="title" size="131" value="<?php echo $fetch_pages['title'];?>"/><br/><br/>

<label for="body">Continutul paginii</label><br/>

<textarea id="body" name="body" rows="8" cols="100"><?php echo $fetch_pages['body'];?></textarea>

<input type="hidden" name="slug" value="<?php echo $fetch_pages['slug'];?>" /><br/><br/>

<input type="submit" name="submit" value="Salveaza" />

</form>

<?php

Tot din cadrul administrației se pot vizualiza rezervările efectuate de-a lungul timpului la hotel la pagina Rezervari. Rezervările sunt listate îintr-un tabel, fiind aranjate după id, numele clientului ce a efectuat rezervarea, email-ul său, numărul camerelor rezervate, data sosirii și totalul de plată.

De această dată, informațiile despre rezervare nu mai pot fi editate (se pot în schimb șterge apăsând butonul ), cum se putea face în cazul datelor despre un cont sau o cameră, ci se pot vedea în detaliu datele despre rezervare accesând butonul , după cum am exemplificat adineaori.

Modificarea parolei managerului general se poate face accesând pagina Modificare parola, unde se va introduce într-un câmp parola nouă, iar la apăsarea butonului Salvează, parola este updatată, iar datele se trimit automat și prin email.

Părăsirea sistemului se face apăsând butonul , în urma căruia se va afișa pagina Hotelinio.

Managerul restaurantului are în schimb acces la mai puține operațiuni decât managerul general și acest lucru este se înțelege de la sine, datorită funcțiilor ce le ocupă cei doi. În acest caz, managerul restaurantului poate să:

Vizualizeze rezervările la restaurant

Modifice parola contului său

Părăsească sistemul

Odată logat, managerul restaurantului este întâmpinat cu un welcome message diferit față de cel al managerul general, acesta nemaifiind “Bine ați venit domnule manager general Tudor Hering”, ci “Bine ați venit, domnule manager al restaurantului Hotelinio!”, iar ca informații aceste sunt identice, specificându-i tipurile de operațiuni la care are acces. Codul php pentru pagina unde sunt afișate rezervările se regăsește în fișierul index_restaurant.php. Accesând această pagină, managerul restaurantului poate vedea rezervările făcute de oaspeții hotelului la restaurantul din incinta Hotelinio. Aceste date sunt afișate într-un tabel, câmpurile fiind următoarele:

Id-ul rezervării

Numele oaspetelui

Email-ul oaspetelui

Numărul de persoane (ce vor participa la masă)

Data și ora rezervării

Pagina Modificare parola este identică cu cea a managerului general, doar că de această dată, parola va fi schimbată la contul managerului restaurantului și nu a managerului general. La părăsirea sistemului se face direcționare către pagina Hotelinio.

În cazul contului de recepționer, acesta are acces la doar la pagina Rezervari, vizibilă și din contul managerului de hotel, la Modificarea parolei și părăsirea sistemului. La pagina Rezervari, recepționerul poate face exact aceleași operațiuni ca un manager general (vizualizare rezervări hotel, vizualizare detaliată în funcție de clientul ales și ștergerea rezervării). Modificarea parolei se face în același mod, iar părăsirea sistemului direcționează recepționerul la pagina Hotelinio.

III.2.3 Manual de utilizare

Website-ul Hotelinio a fost conceput pentru a putea fi ușor utilizat de către oricine, indiferent de nivelul de cunoaștere în domeniul calculatoarelor sau al Internetului.

Prin scrierea adresei localhost\licenta într-un browser, utilizatorul accesează pagina Hotelinio, unde:

este făcută o scurtă prezentare a hotelului

se poate vizualiza un flash slideshow cu imagini din incinta hotelului (situat în partea superioară a paginii)

se pot accesa paginile Camere, Metode de plata, Locatie, Contact (accesibile atât din partea superioară a paginii – header – , cât și din partea inferioară a acesteia), Hotelinio (făcând click pe logo-ul din partea stângă sus al hotelului sau din partea inferioară a paginii, primul link), Cum rezerv?, Date de confidentialitate și Drepturi de autor (accesibile din partea inferioară a paginii, sau footer). Detalierea fiecărei pagini în parte se găsește mai jos.

Headerul paginii Hotelinio:

Footerul paginii Hotelinio:

Pagina Hotelinio:

Pe pagina Camere, sunt prezentate cele patru tipuri de camere puse la dispoziție de către Hotelinio (simplă, dublă, triplă și apartament), fiecare cu prețul aferent și câteva imagini din incinta ei.

Accesând pagina Metode de plata, va sunt aduse la cunoștință metodele de plată acceptate de Hotelinio în cazul în care sunteți interesați de șederea în incinta hotelului. Recomandăm studierea informațiilor de pe această pagină, împreună cu pagina Cum rezerv? Înainte de a efectua o rezervare. După ce ați făcut acest lucru și ați completat formularul pentru rezervare situat în partea dreaptă a paginii Hotelinio, veți fi rugat să vă autentificați (dacă nu aveți deja cont, vă puteți crea unul accesând linkul Inregistrare). Odată autentificați, veți putea vizualiza datele despre rezervarea care doriți să o efectuați și veți putea completa un formular pentru achitarea unui avans folosind cardul dumneavoastră de credit. Informațiile introduse nu sunt stocate în baza noastră de date, ci trimise automat băncii cu care aveți contract, care se ocupă de securitatea lor.

În cazul în care nu doriți efectuarea unui avans, vă rugăm ca în formularul pentru achitarea unui avans să introduceți următoarele date:

Nume pe cartea de credit: Nu doresc sa achit un avans

Seria cartii de credit: 1111111111111111

CCV (ultimele 3 cifre de sub banda magnetică a cardului): 000

Data expirării: selectați data curentă

Hotelinio se poate găsi foarte ușor, doarece la pagina Locatie, Hotelinio a pus la dispoziția dumneavoastră o minihartă interactivă Google! Maps, cu ajutorul căreia puteți naviga în împrejurimi, pentru o mai buna orientare și recunoaștere a zonei.

În cazul în care aveți unele sugestii de făcut administrației Hotelinio, pagina Contact vă stă la dispoziție, aici putând sa completați un formular de contact, iar informația va ajunge imediat la managerul general Tudor Hering, care vă va răspunde în cel mai scurt timp posibil.

În cazul în care doriți să faceți o rezervare, vă recomandăm să vizitați înainte și pagina Cum rezerv?, deoarece aici găsiți informații despre metoda de rezervare (offline – telefonic, sau online, completând formularul situat în partea dreaptă a paginii Hotelinio).

La pagina Date de confidentialitate găsiți informații despre securitatea datelor pe care le introduceți în formularele de pe website-ul Hotelinio, printre care: trimiterea informațiilor cardului dumneavoastră la banca cu care aveți contract (acestea nu se păstrează în baza noastră de date, pentru protecția lor), sau criptarea parolei contului (păstrată sub o formă ce nu poate fi spartă în baza noastră de date, datorită algoritmului MD5).

Drepturile de autor ale website-ului se regăsesc la pagina Drepturi de autor, accesibilă din footerul paginii și aici puteți afla date despre creatorul acesui site.

Fiind înregistrat pe website-ul Hotelinio, ca și client autentificat, veți putea vedea că headerul paginii se schimbă și aveți următorul meniu:

Footerul paginii rămâne același ca și în cazul în care nu sunteți autentificat.

Butoanele din header conțin linkuri, care, prin apăsarea lor, vă direcționează spre paginile:

Rezervare restaurant: la această pagină, puteți vizualiza rezervările făcute la restaurantul din incinta hotelului nostru (dacă aveți deja una sau mai multe), iar prin apăsarea linkului Rezervare restaurant, veți fi direcționați către pagina unde puteți efectua o rezervare nouă la restaurant, datele necesare în formularul de aici fiind:

Data rezervării

Ora rezervării

Numărul de persoane participante

Detalii rezervare – aici, puteți vizualiza istoricul rezervărilor la Hotelinio, date prezentate într-un tabel, iar pe coloane se pot vedea următoarele informații: id-ul rezervării, data, prețul, tipul camerei și numărul oaspeților. Totodată prin apăsarea butonului puteți șterge rezervarea care doriți să o anulați. Dacă ați achitat un avans pentru acea rezervare, administrația primește o alertă că trebuie să vă returneze suma platită, iar in termen de 48 de ore, banii ajung înapoi în contul dumneavoastră.

Date cont – aici puteți vedea datele contului dumneavoastră (numele, prenumele și emailul) introduse la înregistrarea pe site

Modificare parola – dacă doriți modificarea parolei, această pagină vă pune la dispoziție acest lucru. Introduceți paroal dorită în câmpul cerut, iar prin apăsarea butonului Salveaza, parola este schimbată cu succes și totdată vă este trimisă automat și pe email.

Parasire sistem – după ieșirea din cont, sunteți direcționați la pagina Hotelinio

Acestea fiind operațiunile posibile ca și client, trec mai departe la prezentarea utilizării website-ului în cazul în care sunteți managerul general al Hotelinio. Headerul paginii este următorul î cazul în care sunteți autentificat cu contul de manager general:

Website-ul recunoaște contul și în funcție de cine sunteți (manager general / manager restaurant / recepționer), vă întâmpină cu un mesaj situat în partea superioară a control panel-ului (meniului din headerul paginii). Totodată, cele trei tipuri de conturi ce fac parte din administrația Hotelinio, au în comun datele de pe pagina principală după auntentificare și anume:

Ca și manager general, puteți efectua diverse operațiuni online în cadrul Hotelinio, prin accesarea paginilor din header:

Utilizatori – aici se pot vedea conturile clienților, managerului general și a celor trei recepționeri (datele vizibile sunt tipul contului, email-ul, numele și prenumele), dar se pot șterge conturi sau modifica manual parolele:

Camere – pe această pagină, managerul general poate vedea detaliile privind tipurile de camere puse la dispoziția clienților de către Hotelinio (tip cameră, tarif, număr persoane), ștergerea unui tip de cameră, iar prin accesarea linkului Adaugarea camera se poate adăuga un nou tip de cameră, completând formularul următor:

Modificare pagini – aici, managerul general poate modifica titlul și conținutul paginilor Hotelinio, Metode de plata, Rezervare, Locatie, Date de confidentialitate, Drepturi de autor și Contact

Rezervari – asemenea paginilor Utilizatori și Camere, aici este listat istoricul rezervărilor făcute de clienți, date afișate într-un tabel ce conține id-ul rezervării, numele clientului, emailul său, numărul camerelor, data sosirii șitotalul de plată. Se poate și șterge rezervarea, iar apăsând butonul , se pot vedea în detaliu datele despre rezervare

Modificare parola – modificarea parolei se face identic ca în cazul clientului

Parasire sistem – același lucru ca și în cazul clientului

Managerul restaurantului, autentificat, are vizibil următorul header:

Acesta are acces restricționat la datele vizibile din contul de manager general, însă poate să:

Vizualizeze rezervările efectuate de clienți, accesând pagina Rezervari. Aici, informațiile sunt afișate într-un tabel ce conține id-urile rezervărilor, numele oaspeților, email-ul oaspeților, numărul de persoane pentru care s-a făcut rezervarea, respectiv data și ora rezervării

Modificare parola – modificarea parolei se face identic ca în cazul clientului și a managerului general

Parasire sistem – același lucru ca și în cazul clientului și managerului general

Recepționerii, trei la număr, autentificați, au în partea superioară a paginii headerul:

Ca și în cazul managerului restaurantului Hotelinio și recepționerul are restricșie la majoritatea operațiunilor puse la dispoziția managerului general, excepție făcând pagina Rezervari, identică cu cea vizibilă de către managerul general (vizualizarea istoricului rezervărilor, vizualizarea în detaliu a fiecărei rezervări, respectiv ștergea unei rezervări).

Modificarea parolei se face prin aceeași metodă menționată în cazul managerului general, al clienților și al managerului restaurantului, iar prin părăsirea sistemului, recepționerul este direcționat de asemenea către pagina Hotelinio.

IV. Concluzii

Aplicația web Hotelinio este realizată de către studentul Hering Tudor Cristian, sub îndrumarea conf. dr. ing. Gianina Gabor. În proiectarea website-ului, sunt utilizate aplicațiile phpMyAdmin v.3.3.9, XAMPP, cu ajutorul cărora am realizat baza de date cu denumirea licenta. Codul sursă al paginilor este realizat utilizând limbajele PHP și HTML.

Hotelinio este un website ce funcționează pentru firma de exercițiu F.E. Hotelinio S.R.L., însă poate cu ușurință să reprezinte online orice hotel real, deoarece pune la dispoziția clienților și administrației sale toate uneltele necesare realizării unor operațiuni din domeniul hotelier.

Mai mult, spre deosebire de majoritatea website-urilor din acest domeniu, Hotelinio pune la dispoziția oaspeților săi posibilitatea de a efectua rezervări online la restaurantul din incinta sa. Acest lucru este de mare ajutor, deoarece oaspeții pot efectua această operațiune utilizând un laptop sau un telefon mobil din incinta camerei dotate cu internet wireless, sau chiar și în momentul în care sunt plecați de la hotel să viziteze atracțiile principale ale județului Bihor.

Aplicația web Hotelinio se mai deosebește de multe alte site-uri de acest gen și prin faptul că poate fi utilizat de către administrația hotelului, în vederea efectuării unor operațiuni precum vizualizare rezervărilor, ștergerea lor, modificarea datelor, imaginilor și a tarifelor camarelor, modificarea conținutului și a titlului paginilor, adăugarea de utilizatori noi și multe altele.

Site-ul poate fi accesat local, de la adresa localhost\licenta, lucru util, deoarece poate fi cu ușurință și rapiditate modificat dacă e nevoie de către creatorul său, sau online, de la adresa www.adresa.com (voi modifica adresa luni, dupa ce pun aplicatia pe server).

O componentă de bază a website-ului Hotelinio este și flash-slideshow-ul cu imagini vizibil de pe majoritatea paginilor, acest element întipărindu-se cu ușurință în timpul nagivării, fie că e vorba de client sau de o persoană din administrație, pentru o mai buna memorare a aspectului și design-ului site-ului.

Toate aceste elemente fac din Hotelinio un website ce se deosebește cu ușurință de majoritatea website-urilor din domeniul hotelier și totodată, care poate reprezenta foarte bine din toate punctele de vedere orice hotel real.

Bibliografie

http://ro.wikipedia.org/wiki/Comer%C8%9B_electronic#Categoriile_comer.C8.9Bului_electronic

http://ro.wikipedia.org/wiki/Hotel

www.eed.usv.ro/~cristina/HTML.pdf

http://etutoriale.ro/articles/103/1/Tutorial-complet-CSS/

http://ro.wikipedia.org/wiki/JQuery

http://etutoriale.ro/articles/93/1/Tutorial-complet-PHP/

http://md5.1web.ro/

http://ro.wikipedia.org/wiki/MySQL

http://www.drogoreanu.ro/tutorials/mysql.php

http://download.chip.eu/ro/XAMPP_167240.html

Bibliografie

http://ro.wikipedia.org/wiki/Comer%C8%9B_electronic#Categoriile_comer.C8.9Bului_electronic

http://ro.wikipedia.org/wiki/Hotel

www.eed.usv.ro/~cristina/HTML.pdf

http://etutoriale.ro/articles/103/1/Tutorial-complet-CSS/

http://ro.wikipedia.org/wiki/JQuery

http://etutoriale.ro/articles/93/1/Tutorial-complet-PHP/

http://md5.1web.ro/

http://ro.wikipedia.org/wiki/MySQL

http://www.drogoreanu.ro/tutorials/mysql.php

http://download.chip.eu/ro/XAMPP_167240.html

Similar Posts