Aplicatie Pentru Evidenta Resurselor Umane

LUCRARE DE LICENȚĂ

Aplicație pentru evidența resurselor umane

CUPRINS

Introducere

Scurtă descriere a capitolelor

Suport platformă tehnică

Instalare și configurare Mașină Virtuală

Instalare și configurare server linux – CentOS Server 6.5

Web hosting management – ISPCONFIG

Softuri adiționale (putty,webmin)

Tehnologii folosite de procesor în lucrul cu mașina virtuală

PAE/NX, Vt-x Amd-V, Nested Paging

Definiții ale serviciilor de rețea și securitatea informației

Protocoale de rețea: TCP/IP, UDP

Dns, Ftp, Pop3, Smtp, Imap, Samba, SSH

Firewall, Port-Forwarding

Limbajul de programare PHP și baza de date MySQL

Introducere în PHP

Asemănări și deosebiri dintre Php și C++

Lucrul cu baza de date MySQL

Aplicație informatică pentru evidența resurselor umane

Descriere aplicație

Modul de lucru al aplicației

Bibliografie

CAPITOLUL 1

Introducere

Introducere

Aplicația se adresează unei intreprinderi care necesită gestionarea numărului de angajați, managementul aplicației facându-se cu ajutorul unui web-browser.

Aplicația este scrisă în limbajul PHP având ca suport baza de date MySQL.

Se oferă din acest punct de vedere portabilitate pe toate sistemele de operare și managementul de la distanță.

Pentru a funcționa această aplicație este necesar:

Un Server care din punct de vedere hardware sa contina minim 2 giga de memorie.

Distribuția linux CENTOS (Community ENTerprise Operating System)

Web hosting managementul ISPCONFIG.

SERVERUL trebuie să conțină minim 2 giga memorie ram deoarece distribuția CENTOS pe care se va instala conține un mecanism numit Kdump (Kernel Crash Dump) care necesită minim 2 giga de ram pentru a intra in funcțiune. In cazul de față s-a folosit o mașină virtuală numită VirtualBox produsă de compania ORACLE care simulează un server cu o anumită arhitectură hardware.

O mașină virtuală este un mediu care simuleaza un calculator real.

Mașinile virtuale fac posibilă instalarea unui sistem de operare fără partitionarea hard-disk-ului, totul stocându-se sub forma unui fișier, sistemul rulând într-o fereastră prin intermediul sistemului („gazdă”) de operare deja instalat.

Mașina virtuală oferă:

posibilitatea de a rula mai multe sisteme de operare pe același computer, simultan pentru testarea a diferite programe în medii diferite fară restart-uri.

pentru creșterea securității în anumite medii, un exemplu fiind analiza virușilor fără riscul contaminării sistemului de bază (“gazdă”).

reducerea costurilor și creșterea eficienței energetice, prin folosirea unui singur echipament fizic pentru rularea concomitentă a mai multor mașini virtuale separate

soluții imbunătățite de disaster recovery.

CENTOS este o distribuție linux recomandată deoarece este cea mai stabilă, cea mai sigură dupa RED HAT ENTERPRISE LINUX (RHEL), consumă puține resurse hardware (memorie, încărcare a procesorului și a discurilor).

Defapt CentOS folosește codul sursă al companiei RED HAT sub licență GPL, fiind inlăturate logo-urile și referirile juridice iar actualizările programelor sunt făcute în așa fel încat sa nu utilizeze serverele private ale rețelei RED HAT NETWORK (RHN). Echipa de dezvoltatori nu își propune să realizeze o distribuție originală dar care are ambiția de a rămâne cât mai aproape de produsul celor de la RHEL.

ISPCONFIG este un web hosting management gratuit și se poate instala atât pe distribuția CentOS cât și pe distribuțiile: Debian,Ubuntu,Fedora,OpenSuSE și inlocuiește defapt cPanel folosit de serverele profesionale.

Conține o interfată de administrare web cu username și parolă pentru fiecare utilizator în parte de unde se pot controla serviciile de: www, ftp, dns, e-mail.

Următoarele servicii și caracteristici sunt acceptate:

Management server web pentru Apache și Nginx.

Management server de mail (cu utilizatorii de e-mail virtual) cu spam-ul și filtru antivirus.

Management server DNS (BIND, PowerDNS și MyDNS). .

Administrator, reseller, client și MailUser autentificare.

Management server virtual pentru servere OpenVZ.

Statistici ale site-ul cu Webalizer.

Scurtă descriere a capitolelor

Capitolul 1 descrie:

În primul capitol

Capitolul 2 descrie:

Modul de creare si configurare a unei mșini virtuale. În cazul de față s-a folosit softul numit VirtualBox.

Procesul de instalare al sistemului de operare CentOS precum și modul de configurare a acestei distribuții linux.

Facilitățile web hosting managementului ISPCONFIG, modul de configurare și modul de lucru cu această aplicație.

Softurile adiționale cu care se face configurarea sistemului de operare de la distanță cu ajutorul aplicației Putty prin serviciul de rețea SSH și a aplicatiei WEBMIN, utilă atât in configurarea host managementului cât și al altor servicii de rețea.

Capitolul 3 descrie:

Un set de instrucțiuni și de tehnologii folosite de procesor pentru a optimiza modul de lucru cu mașina virtuală cum ar fi: PAE/NX,Vt-x Amd-V,Nested Paging.

Capitolul 4 descrie:

O serie de definiții ale serviciilor de rețea: DNS,FTP,SSH,POP3,SMTP,IMAP și modul de securizare al serviciilor accesate prin intermediul unui firewall configurând porturile pentru accesul serviciilor din exteriorul rețelei.

Capitolul 5 descrie:

Introducere în limbajul de programare PHP, utilizare,utilitate,caracteristici și implementarea cu HTML .

Folosirea serverului pentru bază de date MySQL, caracteristici ale bazei de date.

Capitolul 6 descrie:

Structura codului (funcții,mod de implementare).

Cum funcționează aplicația și explicarea fiecărei capturi de imagine din fiecare secțiune în parte.

CAPITOLUL 2

Suport platformă tehnică

Instalare și configurare VirtualBox

Ca suport pentru a rula aplicația pentru managementul resurselor umane este mașina virtuală VirtualBox pe care se instalează sistemul de operare Linux și anume distribuția CENTOS 6.5.

VirtualBox suportă sistemele de operare: Windows,Linux,MacOS astfel încat se poate alege oricare din aceste sisteme de operare pe care se poate instala mașina virtuală.

În continuare vom prezenta modul de funcționare a mașinii virtuale precum și pașii necesari instalării unui sistem de operare în acest mediu virtual.

Pasul I – Vom incepe prin a face cunoștință cu fereastra principală a interfeței mașinii virtuale prezentate în (Fig. 2..1.0).

FIGURA 2.1.0. Fereastra principală

Fereastra este separată printr-o secțiune (stanga) unde vor fi afișate numele mașinilor virtuale

pe care dorim să le instalăm și partea de detalii (dreapta) unde va fi afișată configurația hardware setată de către utilizator. Se incepe prin a instala sistemul de operare dorit apăsând butonul NEW.

Pasul II – Se atribuie un nume sistemului de operare instalat prezentat în (Fig. 2.1.1).

FIGURA 2.1.1. Name and operating system

În ferastra de creare a mașinii virtuale numită Name and operating system trebuie sa alegem:

Numele mașinii virtuale (Name:) – ce nume va avea sistemul de operare care va apare în lista mașinilor virtuale instalate în acest mediu.

Tipul mașinii virtuale (Type:) – mediul din care provine sistemul de operare iar în cazul prezentat avem un sistem Linux.

Versiunea (Version:) – distribuția sistemului din mediul din care face parte. Neavând în listă numele distribuției (CentOS) se alege Fedora care după cum am prezentat în primul capitol este sprijinită de compania RHEL din care provine și distribuția folosită în cazul de față.

Pasul III – Vom aloca memorie sistemului instalat in mașina virtuală ca in (Fig. 2..1.2).

FIGURA 2.1.2. Memory size

Se alocă memorie din sistemul de operare principal (gazdă) sistemului de operare instalat în mașina virtuală. Am alocat 2 giga de ram deoarece sistemul are un mecanism numit Kdump (Kernel Crash Dump) care necesită minim 2 giga de ram pentru a intra in funcțiune.

Kernel Crash Dump se referă la o parte din conținutul de memorie volatilă ( RAM ), care este copiată de pe disc ori de câte ori executarea kernelului este perturbată. Următoarele evenimente pot cauza o întrerupere de nucleu:

kernel panic – acțiune intreprinsă de sistem pentru a detecta o eroare

întreruperi nemascate ( INM ) – este un semnal către procesor emis de hardware sau software, referitoare la un eveniment care are nevoie de atenție imediată.

mașina verifică excepțiile ( MCE ) – este un tip de eroare, care apare atunci când unitatea centrală de procesare a computerului detectează o problemă hardware.

defecțiune hardware – o defecțiune în circuitele electronice sau componentele electromecanice (discuri, casete) ale unui sistem.

intervenție manuală – o intervenție asupra unei componente hardware sau software.

Pasul IV – Se creează un drive virtual așa cum vom proceda în (Fig.2.1.3).

FIGURA 2.1.3. Hard drive

În această fereastră vom creea un hard virtual care se va stoca pe hard-discul sistemului de operare (gazdă). Avem posibilitatea de a alege între opțiunile:

Do not add a virtual hard drive – să nu adaugam în acest pas nici un hard eventual doar sa creăm mașina cu posibilitatea de a adaugăm hard-discul mai târziu.

Create a virtual hard drive now – creăm un hard-virtual acum. Avem optiunea de a crea un hard-disc virtual cu marimea prestabilită de 8 gigabytes.

Use an existing virtual drive file – putem să selectăm un eventual fisier ce conține un hard-disc virtual creat anterior.

Alegem creearea unui hard-disc virtual în acest moment, iar mai târziu așa cum arată (Fig.2.1.6) de la Pasul VII avem posibilitatea de a mări spațiul prestabilit de mașina virtuală.

Pasul V – Posibilitatea de a alege mai multe formate de hard-discuri (Fig.2.1.4).

FIGURA 2.1.4. Hard drive file type

Avem de ales între mai mai multe formate de fișiere (hard-discuri) virtuale care pot apoi fi incărcate în alte mașini virtuale în afară de VirtualBox printre acestea enumerăm: VMware,Microsoft,Parallels,QEMU.

Pasul VI – Putem alege dintre un disc dinamic sau unul cu mărime fixă (Fig.2.5).

FIGURA 2.1.5. Storage on physical hard drive

În aceast pas de configurare avem posibilitatea de a crea un disc dinamic sau unul fix din optiunile:

Dynamically allocated – face ca spațiul alocat pentru sectoarele neutilizate ale discului virtual sa fie foarte mici dar va crește de fiecare dată când un sector de disc este scris pentru pentru prima dată, până când atinge capacitatea maximă. Acest tip de alocare este mai flexibil și de aceea este cel mai recomandat.

Fixed size – un fișier de imagine va fi creat pe sistemul gazdă, care are aproximativ aceeași dimensiune ca și capacitatea virtuală a discului. Creearea unei imagini de dimensiune fixă poate dura o lungă perioadă de timp, în funcție de dimensiunea imaginii și performanța de scriere a hard disk-ului.

Pasul VII – Alegem calea unde se va găsi discul virtual cat și dimensiunea (Fig.2.1.6).

FIGURA 2.1.6. File location and size

Se alege calea unde se va crea discul virtual pe hard-discul sistemului gazdă având și posibilitatea de a mări capacitatea discului format, mai mare sau mai mic decât dimensiunea prestabilită de 8 gigabytes astfel se creează pe hard-disc un fișier cu extensia vdi extensie folosită de softul VirtualBox.

Pasul VIII – Detalii despre configurația hardware și numele mașinii virtuale (Fig.2.1.7).

FIGURA 2.1.7. Fereastra de listare și detalii hardware

Se observă în această fereastră numele mașinii virtuale cât și fiecare detaliu hardware inpărțit pe sectiuni hardware în partea din dreapta a ferestrei. Secțiunile hardware din partea dreapta a ferestrei sunt:

General – aici se gasește numele masinii virtuale (Name:) și categoria din care face parte sistemul de operare (Operating System:)

System – se observă câtă memorie am alocat (Base Memory:), ordinea de bootare (Boot Order:), modul de accelerare folosit de procesorul gazdă în subsecțiunea Acceleration care folosește un set de extensii hardware ale procesorului AMD folosite pentru virtualizare despre care vom vorbi mai în detaliu în capitolul III.

Display – ne arată câtă memorie am alocat plăcii video (Video Memory:2.1.7).

FIGURA 2.1.7. Fereastra de listare și detalii hardware

Se observă în această fereastră numele mașinii virtuale cât și fiecare detaliu hardware inpărțit pe sectiuni hardware în partea din dreapta a ferestrei. Secțiunile hardware din partea dreapta a ferestrei sunt:

General – aici se gasește numele masinii virtuale (Name:) și categoria din care face parte sistemul de operare (Operating System:)

System – se observă câtă memorie am alocat (Base Memory:), ordinea de bootare (Boot Order:), modul de accelerare folosit de procesorul gazdă în subsecțiunea Acceleration care folosește un set de extensii hardware ale procesorului AMD folosite pentru virtualizare despre care vom vorbi mai în detaliu în capitolul III.

Display – ne arată câtă memorie am alocat plăcii video (Video Memory:), dacă folosim opțiunea de Remote Desktop (Remote Desktop Server:) sau de captură video (Video Capture:).

Storage – pe controllerul IDE se afla unitatea CD-ROM iar pe SATA se afla discul virtual.

Audio – folosim accelerarea Windows DirectSound (Host Driver:) și controlerul pentru placa de sunet de la Intel AC97 (Controller:) cu toate că în sistemul gazdă nu avem un controler al placii de sunet de la Intel mașina virtuală se leagă de controlerul gazdă pe care îl folosește.

Network – adapterul plăcii de rețea este simulat și de asemenea este altul față de cel folosit de sistemul gazdă și de care se leagă.

USB – nu avem nici un adapter USB dar se poate atașa dacă dorim un memory stick pe acest port pe care sistemul mașinii virtuale il poate folosi.

Shared folders – aici putem defini un folder din sistemul gazdă împartit cu sistemul oaspete al mașinii virtuale, folder pe care îl vom găsi in secțiunea de rețea și îl vom putea utiliza pentru a prealua date din acest folder chiar si permisiunea de scriere dacă nu este bifată opțiunea de Read-only.

Description – Puteam adauga o descriere mașinii virtuale pe care o folosim pentru a ști scopul pentru care o avem instalată sau alte descrieri care ne pot informa.

Pasul IX – Vom intra în setările mașinii virtuale pentru a face unele modificari ale mașinii pentru o funcționare optimă (Fig.2.1.8).

FIGURA 2.1.8. Intrăm în setarile mașinii virtuale

Se trece la configurarea mașinii pentru o funcționare în concordanță cu ceea ce ne propunem și câte resurse dorim să distribuim mașinii virtuale din sistemul gazdă așa cum precizăm în pașii care urmează.

FIGURA 2.1.9. Opțiunea de adrese extinse ale procesorului

Bifăm opțiunea de adrese extinse ale procesorului (Fig.2.1.9) pentru o functionare în parametrii optimi ai mașinii virtuale utilizând totodată și opțiunea de protejare a zonei de memorie extinsă cu ajutorul tehnologiei NX No-eXecute despre care vom detalia în capitolul IV.

FIGURA 2.1.1.0. Încărcarea imaginii ISO

Se incarcă fișierul care conține dvd-ul cu kitul de instalare a distributiei CentOS in format ISO (Fig.2.1.1.0) pe lăngă posibilitatea de a instala direct de pe dvd-ul unității sistemului gazdă. Acestă variantă de instalare direct de pe o imagine este recomandată deoarece este mai rapidă.

FIGURA 2.1.1.1. Selectarea adapterul de rețea

La această secțiune se alege modului de operare al adapterului de rețea. Am selectat modul Bridged Adapter (Fig.2.1) deoarece în acest mod se alocă un ip separat sistemului instalat în mașina virtuală. Acest mod este recomandat în cazul în care dorim să găzduim o pagină de web deoarece putem să ieșim cu porturile respective în exterior prin intermediul opțiunii port forwarding (capitolul IV).

FIGURA 2.1.1.2. Opțiuni avansate ale adapterului de rețea

În opțiunile avansate ale adapterului virtual avem posibilitatea de a schimba adresa producatorului plăcii de rețea MAC Address (Fig 2.1.1.2). Avem opțiunea de a schimba modelul plăcii de rețea în cazul în care pachetele cu drivere care se gasesc implicit în pachetul de instalare al sistemului de operare nu s-ar găsi și modelul selectat. Posibilitatea de a alege 4 adaptere de rețea virtuale dacă dorim să simulăm un server care la un meoment dar poate avea rolul unui router.

Pasul X – Mașina virtuală este gata pentru pornire (Fig.2.1.1.3).

FIGURA 2.1.1.3. Fereastra de lansare a mașinii virtuale

În acest moment mașina virtuală creată cu sistemul de operare CentOS este pregatită și configurată pentru a putea rula. Nu rămâne decât să apasăm butonul Start (Fig.2.3) iar în subcapitolul (2.2) ce urmează vom prezenta pașii de urmat pentru instalarea sistemului de operare.

Instalare și configurare server linux – Centos Server 6.5

Pentru început vom prezenta câteva dintre caracteristicile sistemului de operare

CENTOS 6.5 in TABELUL 1.0.

TABELUL 2.2.0.

Distribuția CENTOS a fost aleasă din cauza urmatoarelor caracteristici:

STABILITATE

SIGURANȚĂ

VITEZĂ

STABILITATE – CentOS oferă o mult mai mare stabilitate operațională pentru utilizatori decât alte sisteme Linux distribuite gratuit din cauza similitudinii proiectării sistemului cu Red Hat Linux care este o distribuție comercială. În comparație cu alte sisteme de operare bazate pe Linux, Centos rulează doar cele mai de bază versiuni, stabile de programe software, reducând riscul de erori de sistem.

SIGURANȚĂ – Upgrade-urile hardware sunt dezvoltate concomitent cu cele ale sistemului de operare Red Hat Enterprise Linux pe care CENTOS se bazează. Din momnetul în care echipa de la RHEL scoate un update care repară o anumită problemă, echipa de la CENTOS în 24 sau cel tarziu 72 de ore de la acel update scot și ei la randul lor un update care repara acea problemă. Sistemul de operare CentOS este apreciat și de hostingurile românești dintre care amintim printre cele mai renumite: Xservers, Hostway, Romarg, HostVision.

VITEZĂ – CentOS poate funcționa mult mai repede decât sistemele similare de operare bazate pe Linux, deoarece se execută doar versiuni de bază ale software-ului. În acest fel, procesorul nu se incetinește încercând să ruleze o mulțime de aplicații diferite. Programele CentOS sunt, de asemenea, mai puțin susceptibile de a avea probleme de securitate sau probleme de blocare, care pot reduce viteza de calcul sau chiar provoca alte erori de sistem. De asemenea interfața grafică nu este prea spectaculoasă și nu include efecte grafice iar ținând cont că poate rula și în linie de comandă interfața grafică lipsește ceea ce îl face si mai rapid diminuându-se timpul de încărcare.

După ce am prezentat argumentele care stau la baza alegerii acestui sistem de operare ca suport pentru această aplicație trecem la explicarea pașilor de instalare după cum urmează:

Pasul I – Alegem din fereastra de început a instalării prima metodă Install or upgrade an existing system (Fig.2.2.0) fiind nevoie de o instalare nouă a sistemului de operare.

FIGURA 2.2.0. Opțiunile ferestrei de început a instalării

Celelalte opțiuni:

Install system with basic video driver – se poate ca instalarea în modul GUI (graphic user interface – interfață grafică ) să nu se poată face datorita unor probleme care pot apare din cauza driverului plăcii video. Atunci se apelează la acestă metodă iar instalarea se face în CLI (command line interface – linie de comandă).

Rescue installed system – în momentul în care apare o eroare care poate afecta sistemul astfel încât sa nu mai poată porni un conditii optime, atunci se apelează la această opțiune prin care putem interveni și remedia problema.

Boot from local drive – această opțiune încarcă sistemul după prima partiție activă al primului hard-disc. În caz accidental dacă am uitat cd-ul de instalare iar acesta a incarcat acest meniu putem alege această opțiune.

Memory test – memoria sistemului este sensibilă și poate uneori să apară erori din cauza unor tensiuni necorespunzătoare date de sursa de tensiune sau alte cauze. Din această cauză se recurge la un anumit interval de timp la un test al memoriei. Acest test este foarte important deoarece o eroare poate afecta în timp stabilitatea sistemului.

Pasul II – Se verifică starea dispozitivului după care se face instalarea sistemului (Fig.2.2.1).

FIGURA 2.2.1. Verificarea cd de instalare

S-a găsit un dispozitiv de instalare, acesta fiind o unitate CD-ROM/DVD-ROM care urmează a fi verificat pentru eventuale erori, dar cum instalarea se face după o imagine ISO instalată pe un mediu virtual se alege Skip și se sare peste acest test.

Pasul III – Se alege limba de instalare a meniului de instalare (Fig.2.2.2).

FIGURA 2.2.2. Limbajul meniului de instalare

Alegem în ce limbă vor apărea mesajele din meniurile urmatoare.

Pasul IV – Se alege modelul tastaturii (Fig.2.2.3).

FIGURA 2.2.3. Modelul tastaturii

Pasul V – Se alege pe ce fel de dispozitiv se va instala (Fig.2.2.4).

FIGURA 2.2.4. Tipul dispozitivului

Alegem pe ce fel de dispozitiv instalăm sistemul:

Basic Storage Device – un calculator echipat cu un dispozitiv de bază: hard-disc.

Specialized Storage Device – este o interfață dezvoltată ca o modalitate de a conecta mai multe dispozitive periferice cu scopul de a imbunătății eficiența ratei de transfer.

În cazul acesta s-a ales un dispozitiv de bază deoarece mașina noastră simulează o interfață SATA.

Pasul VI – Primim un avertisment informându-ne de faptul că datele se vor șterge (Fig.2.2.5).

FIGURA 2.2.5. Partiționare și formatare

Ne anunță că dispozitivul găsit este nepartiționat sau este unul virtual, dacă nu, datele vor fi șterse și nu vor mai putea fi recuperate. Ne întreabă dacă vrem să formatăm discul dacă nu avem informații importante. Alegem faptul că dorim o nouă partiție și o nouă formatare.

Pasul VII – Alegem numele de domeniu oricare dorit (Fig.2.2.6).

FIGURA 2.2.6. Alegere nume domeniu

Alegerea domeniului trebuie să fie de forma subdomeniu.domeniu.extensie, după care trecem la configurarea adapterului de rețea (Fig.2.2.7).

FIGURA 2.2.7. Configurare adapter de retea

Adapterul de rețea în linux este numit eth0,eth1, … etc. (ethernet adapter) se selectează și se alege editarea configurării adapterului.

FIGURA 2.2.8. Configurare adapter de retea mod IPV4

Selectăm să configurăm manual acest adapter de rețea (Fig.2.2.9)

FIGURA 2.2.9. Adăugare DNS-uri

Se observă că primul DNS (Fig.2.2.9) este chiar ip-ul serverului setat în regiunea Addresses (Fig.2.2.3.0). Despre acest serviciu de rețea DNS vom vorbi mai detaliat în capitolul IV.

FIGURA 2.2.3.0. Setare manuală adresă ip pe adapter

Setăm adapterul de rețea al serverului cu ip-ul de forma 192.168.0.x deoarece este un server local care ulterior va ieși spre internet cu ajutorul unui router prin intermediul opțiunii port-forwarding (capitolul IV). Am bifat și opțiunea Connect automatically (Fig.2.2.3.0) ca în momentul restartării adapterul sa fie autoactivat să putem avea acces la server pentru alte eventuale configurări prin intermediul serviciului SSH (capitolul IV).

Pasul VIII – Selectăm fusul orar pentru România alegând capitala țării Bucuresti (Fig.2.2.3.1).

FIGURA 2.2.3.1. Alegere fus orar

Pasul IX – Se introduce parola utilizatorului root care are rolul utilizatorului administrator din WINDOWS (Fig.2.2.3.2).

FIGURA 2.2.3.2. Setare parolă utilizator root

Parola setată trebuie sa fie complexă – să conțină litere majuscule, cifre și alte caractere pentru a nu putea fi depistată.

Pasul X – Ștergerea altor partiții existente și înlocuirea lor cu cea a sistemului CentOS (Fig.2.2.3.3).

FIGURA 2.2.3.3. Înlocuirea cu partiția de tip Linux

În această fereastră (Fig 2.2.3.3) care ne întreabă ce fel de modalitate de instalare dorim să alegem (Which type of installation would you like?) avem următoarele opțiuni:

Use All Space – Să utilizăm tot spațiul hard-discului fără să mai ținem cont de alte partiții existente care vor fi șterse automat.

Replace Existing Linux System(s) – Să instalăm în locul unei partiții deja existente Linux dar fără a șterge și celelalte partiții deja existente cum ar fi Windows în cazul în care folosim dual boot.Această opțiune este opțiunea recomandată și selectată în acest caz.

Shrink Current System – Să micșoreze celelalte partiții deja existente pentru a crea spațiu liber pentru acest tip de partiție Linux.

Use Free Space – Să utilizeze doar spațiul liber nepartiționat dar cu condiția să fie spațiu suficient pentru instalare.

Create Custom Layout – Să creăm și să partiționăm manual spațiul de pe disc.

Pasul XI – Acceptăm ca să se execute configurarea de la pasul anterior (Fig.2.2.3.4).

FIGURA 2.2.3.4. Se scriu configurările făcute la pasul anterior

Ne avertizează spunându-ne că toate datele vor fi șterse și noile configurări făcute vor fi scrise pe disc.

Pasul XII – Selectăm modul Minimal Desktop din modalitățile de extragere a pachetelor pe hard-disc (Fig.2.2.3.5).

FIGURA 2.2.3.5. Modul de instalare a pachetelor

Avem de ales între opțiunile:

Desktop – Acestă optiune instalează tot sistemul de operare în modul interfată grafică adaugând pachetele cu sectiunile de: Accesories,Games,Graphics,Internet,Office,Programming,Sound & Video,System Tools.

Minimal Desktop – În cazul acesta se instalează doar sectiunile de: Accesories,Internet,System Tools.

Minimal – Se instalează fără interfață grafică

Basic Server – Se instalează pachetele pentru un server obișnuit Lamp (Linux Apache MySQL Php,Perl,Python) adică poate găzdui un server care dorește toate aceste servicii enumerate.

Database Server – Se instalează pachetele pentru a susține un servăr pentru baze de date MySQL,PostgreSQL

Web Server – Se instalează doar pachetul care conține serverul de apache și scripturile Php,Perl,Python.

Virtual Host – Se instalează doar pachetele care conțin serverul de Web Apache pentru a putea defini hosturi virtuale care sustin pe același host mai multe subdomenii ale aceluiasi domeniu exemplu: subdomeniul1.exemplu.ro și subdomeniul2.exemplu.ro.

Avem posibilitatea de a personaliza pachetele selectând opțiunea Customize now sau de a adauga surse de alte pachete de unde putem instala diferite programe prin apăsarea butonului Add additional software repositories sau de a modifica calea celor deja existente prin apăsasarea butonului Modify repository.

Pasul XIII – Se incepe instalarea pachetelor (Fig.2.2.3.6).

FIGURA 2.2.3.6. Instalarea pachetelor

Fereastra prezintă numărul maxim de pachete pentru modul de instalare Minimal Desktop, câte pachete s-au instalat si numele pachetelor. În caz că nu au apărut eventuale erori în timpul instalării ne va afișa fereastra prin care suntem anunțați că instalarea s-a desfășurat în condiții normale (Fig 2.2.3.7).

FIGURA 2.2.3.7. Instalarea s-a desfășurat cu succes

După respornirea sistemului suntem întâmpinați de fereastra Welcome (Bun venit!) care ne anunță că mai avem câțiva pași de configurat pană la finalul instalării (Fig 2.2.3.8).

FIGURA 2.2.3.8. Prima ferastră de întâmpinare imediat după restart

Pasul XIV – Suntem de acord cu licența GPL (global policy licence) (Fig.2.2.3.9).

FIGURA 2.2.3.9. Licența GPL

CentOS este un sistem de operare GNU/Linux gratuit bazat pe cel comercial (plătit) Red Hat enterprise Linux de la firma Red Hat. CentOS este cea mai populară distribuție GNU/Linux pentru servere Web, deținând un procent de utilizare de aproape 30% dintre serverele Web existente.

Pasul XV – Crearea unui utilizator separat de utilizatorul root (Fig.2.2.4.0).

FIGURA 2.2.4.0. Creare utilizator

OBSERVAȚIE:

Utilizatorul creat în acest moment are privilegii și parolă separată față de al utilizatorului root.

Avem posibilitatea de autentificare folosind butoanele:

Use Network Login… – posibilitatea de autentificare se poate face prin protocolul Kerberos sistemul de acces distribuit NIS.

Advanced – Putem defini calea folderului Home care are în strctura sa folderele: Documents,Pictures,Video,Downloads sau UID (user id) care este un numar de identificare alocat fiecarui utilizator în parte.

Pasul XVI – Sincronizare ora și dată prin internet cu ajutorul serverelor predefinete (Fig.2.2.4.1).

Având în vedere că acest server va găzdui un domeniu care are facilitatea pentru serviciile de: WEB,FTP,E-MAIL este necesar ca administratorul de sistem sa stie cu exactitate data si ora la care a avut loc o eroare de sistem sau un atac din exterior și nu în ultimul rand aplicația facută în limbajul PHP care foloseste functii de oră si dată.

FIGURA 2.2.4.1. Sincronizare oră și dată

Pasul XVII – Activarea mecanismului Kdump (kernel dump) (Fig.4.5).

FIGURA 2.2.4.2. Mecanismul Kdump

Acest mecanism se autoactivează dacă avem în sistem cel puțin 2 giga de ram. Observăm că în aceasta fereastră sunt câmpurile numite:

Total System Memory (MB): – Totalul memoriei disponibile în sistem.

Kdump Memory (MB): – Câtă memorie folosește mecanismul kernel crash dump.

Usable System Memory (MB): – Cată memorie validă mai ramâne dupa utilizarea kdump.

Advanced kdump configuration – o zonă de text care conține configurări avansate ale acestui mecanism care pot fi ajustate în funcție de necesități.

Suntem informați că sistemul se va reporni pentru a se putea activa configurațiile făcute în pașii anteriori (Fig.2.2.4.3).

FIGURA 2.2.4.3. Mecanismul Kdump

Repornirea sistemului în mod interfață grafică (Fig.2.2.4.4) instalat prin opțiunea Minimal Desktop (pasul XII).

FIGURA 2.2.4.4. Fereastra de autentificare

Web hosting managment – ISPCONFIG

Managementul serviciului de hosting se face cu ajutorul aplicației ISPCONFIG care se poate descărca gratuit de pe siteul oficial iar a cărei documentație se gasește tot pe adresa siteului oficial la secțiunea documentație. Aici vom găsi modul de instalare a acestei aplicații cât și modul în care va trebui pregătit sistemul de operare pentru a rula această aplicație. Vom alege dintre celelalte distribuții de linux pe care se poate instala distribuția aleasă pentru acest sistem de gestionare al resurselor umane care va rula pe distribuția CentOS.

Funcționalitățile acestui sistem de management ca și la celălalt sistem folosit de hostingurile profesionale Cpanel sunt aproximativ aceleași dar diferă interfața de configurare, lipsesc unele addon-uri și automatizarea pentru configurarea unor directive apache sau php.

FIGURA 2.3.1 Fereastra principală ISPCONFIG.

Bazându-ne pe (Fig. 2.3.1) de mai sus vom prezenta pe larg urmatoarele secțiuni:

Home – Sunt afișate informații cu privire la utilizatorul logat, informații despre ultimele noutați în legătură cu aplicația, module instalate și detalii despre limitele atribuite fiecarui cont în parte.

System – Managementul utilizatorului, configurații de sistem, ale interfetei, addon-uri și limba în care este tradusă întreaga aplicație.

Client – Adăugare noi clienți, din clasa clienților limitați sau care pot avea un cont preplătit, trasmiterea de e-mailuri catre un anumit utilizator.

DNS – Zona în care este definit dns-ul pentru un anumit domeniu. Contine un wizard (configurare pas cu pas) a celor mai uzuale înregistrări din sectiunea DNS.

Help – Scurte informații despre utilizarea fiecarei funcții în parte a aplicației.

Email – Utilizatorii care au acces la o casuță de e-mail pentru fiecare domeniu în parte.

Monitor – Monitorizarea serviciilor care rulează: DNS, FTP, IMAP, APACHE, MYSQL

Sites – Fiecărui domeniu i se alocă câte un utilizator sau mai mulți cu acces prin protocolul FTP atribuit domeniului respectiv.

Tools – Se poate schimba parola și limbajul interfeței, aspectul (tema) interfeței, resincronizarea (reîmprospătarea) serviciilor și a conturilor de ftp și e-mail.

Vserver – Definirea de servere virtuale care rulează pe baza sistemului gazdă. Managementul utilizatorilor, a templateului si a adreselor IP pentru fiecare server virtual în parte.

Structura de funcționare cât și facilitățile acestei aplicații sunt prezentate dupa cum urmează.

Servicii și funcționalități:

Sistem simplu sau multi-server

Managementul unuia sau mai multor servere dintr-o singura interfață de configurare.

Rulează atat pe un sistem fizic cât și pe unul virtual.

Instalare pe mai multe distributii linux

Debian 5 – 7

Ubuntu 8.10 – 13.04

CentOS 5.2 – 6.4

Fedora 10 and 12 – 15

OpenSuSE 11.1 – 12.3

Tradus in mai mult de 20 de limbi

Engleză

Germană

Frenceză

Spaniolă

Italiană

Portugheză

Bulgară

Croată

Cehă

Altele

4 Nivele de acces

Administrator

Reseller

Client

Autentificare cu ajutorul e-mailului

Suport pentru mai multe servicii

HTTP: Apache2 and nginx

SMTP: Postfix

POP3/IMAP: Courier and Dovecot

FTP: PureFTPD

DNS: Bind, PowerDNS, and MyDNS

Database: MySQL

Managementul serviciilor

Website-uri

E-mail

FTP conturi

MySQL

Cron jobs

Shell users

DNS

IPv4 suport

IPv6 suport

Softuri adiționale PUTTY, WEBMIN

Din moment ce sistemul de operare instalat pe un server a fost finalizat restul configurărilor se fac la distanță. Pentru aceasta se folosește o aplicatie care se conectează la server prin intermediul protocolului SSH. Cea mai uzuală aplicație care facilitează conectarea pentru a simplifica utilizatorului comenzile în terminal (linie de comandă) este aplicația Putty care rulează atât pe sistemul de operare linux cât și pe windows. În ceea ce privește sistemul de operare CENTOS portul 22 pentru cominicare a protocolului SSH este lăsat liber să comunice din firewall iar serviciul SSH este prevăzut să ruleze odată cu pornirea sistemului.

Pe baza (Fig. 2.4.1) vom prezenta caracteristicile aplicației Putty.

FIGURA 2.4.1. Fereastra principală Putty.

Dupa cum observăm in (Fig.2.4.1) aplicația suportă și alte protocoale printre care se află: Raw (un protocol diferit față de cele uzuale), Telnet, Rlogin (Remote Login), Serial(portul serial COM1 sau COM2). În partea din stânga a ferestrei la secțiunea Category puteam seta anumite caracteristici ale conexiunii dar și modul de afișare a ferestrei ca dimensiune și chiar culoarea textului care va fi afișată în ferestră sau putem deja specifica anumite comenzi care vor fi date automat în momentul conexiunii. Ne putem lega de un server proxy in momentul conexiunii în caz că avem anumite restricții pentru ip-ul direct provenit de la furnizorul de serviciu internet pe care îl avem.

În configurarea serverului ne mai putem folosi și de aplicația WEBMIN

FIGURA 2.4.2. Fereastra principala WEBMIN.

Această aplicație ajută utilizatorul care are mai puțină experiență în configurarea unui server din linie de comanda. Aplicația are stabilit portul de comunicare 10000 acesta putându-se schimba ulterior, de asemenea utilizează protocolul securizat HTTPS. Dupa cum se observă din (Fig.2.4.2) are o interfață grafică accesibilă iar modulele de configurare sunt împărțite pe categorii ale caror descriere se va face după cum urmează:

Webmin – aici se găsesc toate setările ce țin de această aplicație: schimbarea modului de afișare (temă), utilizatorii care au acces pentru autentificare, loguri unde se înregistrează activitățile aplicației.

System – putem vedea serviciile care rulează, putem adăuga un nou utilizator și putem de asemenea schimba unele configurații ce țin de acel utilizator (parola, grupul din care face parte, home folder), putem face actualizări pentru sistemul de operare (putem fi anunțați și direct din intefața princupală că avem noi updateuri de facut fie sistemului, fie aplicației), acces la modul de încărcare al sistemului fie în interfață grafică, fie in linie de comandă, loguri unde se înregistrează activitățile fiecarui proces în parte.

Servers – din această categorie avem acces la setările serviciilor de rețea: DNS,FTP,APACHE,MYSQL,SSH,SMTP (POSTFIX),SAMBA(FILE SHARING).

Other – avem acces în linie de comandă, file manager (acces prin intermediu interfeței grafice la folderele și fișierele de sistem), acces la fișierul de configurare php (php.ini), statusul serviciilor de sistem (informații referitoare la funcționarea unui anumit serviciu), autentificare prin serviciul SSH, download si upload de fișiere programat la un anumit timp de descărcare (task schedule).

Networking – acces la setările firewall, putem să configurăm adapterul de rețea, putem bloca un anumit domeniu pentru a nu mai putea fi accesat.

Hardware – aplicație de scriere pe cd, boot manager, putem seta imprimanta astfel încât serverul să devină printer server (să aibă acces întreaga rețea la serviciile imprimantei), putem seta timpul (putem opri/porni serverele de sincronizare a timpului, fusul orar).

Cluster (Administrare Partajare Resurse Comune) – Administrarea resurselor comune între mai multe locații (servere) sunt: sistemul de administrare a resurselor software, a utilizatorilor sistemului de operare, de copiere al fișierelor și utilizatorilor aplicației WEBMIN.

Un-used Modules – aici se găsesc celelalte module de administrare ale aplicației WEBMIN neinstalate.

CAPITOLUL 3

Tehnologii folosite de procesor în lucrul cu mașina virtuală

PAE/NX, Vt-x Amd-V, Nested Paging

Mașina virtuală Virtual Box folosește anumite tehnologii ale procesorului sistemului gazdă pentru a putea emula un anumit sitem de operare. Printre aceste tehnologii se numără:

PAE/NX – Physical Address Extension (PAE) este o Extensie a Adresei Fizice, o caracteristică ce permite procesoarelor pe 32 de biți să acceseze o locație a adresei fizice inclusiv a memoriei aleatoare și dispozitivele de memorie mai mari de 4 GB.Tehnologia PAE a fost implementată prima dată în 1995 de către procesoarele Pentium-Pro dar neavând suport din partea chipseturilor plăcilor de bază din acea perioadă pentru a accesa biții de adresă suplimentari până când AMD a adăugat această opțiune în ierarhia tabelei de adrese. Pentru a permite lucrul cu adresele fizice mai mari de 52 de biți s-a adăugat funcționalitatea NX (no execute – nu executa) ce permite extinderea tabelei de adrese. Astfel tabela fără tehnologia PAE/NX are 32 biți pe când cu această tehnologie tabela are 64 biți.

Vt-X – Intel Virtualization Technology (Tehnologie de Virtualizare) include o serie de extensii de virtualizare hardware. Acestă tehnologie este cea mai cunoscută și oferă o bună gestionare a memoriei pentru o gamă largă de procesoare. Așa cum îi spune și numele este o tehnologie care permite softului mașină virtuală să simuleze anumite parți hardware ale unui calculator legându-se de componentele hardware ale sistemului gazdă.

AMD Virtualization (AMD-V) – tehnologia a fost anunțată pentru prima dată în 2004 și a fost adăugată la procesoarele Pacifica procesoare pe 32 și 64 de biți. Până în 2006, AMD Athlon 64 X2 și Athlon 64 FX apărute cu tehnologia AMD-V, și astăzi, tehnologia este disponibilă pe Turion 64 X2,-a treia generație iar a doua pe Opteron, Phenom si procesoarele Phenom II. Practic această tehnologie este dezvoltată de compania AMD în schimb ce Vt-X a fost dezvoltată de compania Intel.

Nested Paging – O caracteristică nouă numită "localizare imbricată" pune în aplicare unelte de management al memoriei în hardware-ul sistemului, care poate accelera foarte mult virtualizarea hardware, deoarece aceste sarcini nu mai trebuie să fie efectuate de către software-ul de virtualizare.

CAPITOLUL 4

Definiții ale serviciilor de rețea și securitatea informației

Protocoale de rețea: TCP/IP,UDP

Înainte de a defini cele două protocoale de rețea trebuie mai întâi definit ce este un protocol de rețea.

Un protocol de retea – reprezintă un standard asupra modului de desfășurare a unui anumit proces care permite calculatoarelor să comunice într-un limbaj comun. Prin protocol se înțelege o stivă de protocoale care lucrează împreună.

TCP/IP (Transport Control Protocol/ Internet Protocol) – este un model de rețea și un grup de protocoale de comunicații utilizate pentru internet și rețele similare. Acesta este cunoscut sub numele de TCP/IP, pentru că protocoalele sale sunt cele mai importante. Protocolul de control al transmisiei (TCP) și internet protocol (IP), au fost primele protocoale de rețea definite în acest standard. Acesta este uneori cunoscut sub numele de modelul DoD, pentru că dezvoltarea modelului de rețele a fost finantat de DARPA, o agentie a Departamentul de Aparare a Statelor Unite. Fiind nevoie de o arhitectură flexibilă, având în vedere aplicații cu cerințe divergente, mergând de la transferul de fișiere până la transmiterea vorbirii în timp real. Aceste cerințe au dus la alegerea a patru niveluri pentru modelul TCP/IP: Aplicație, Transport, Rețea (sau Internet) și Acces la Rețea.

Nivelul Aplicație – se referă la protocoalele de nivel înalt folosite de majoritatea aplicațiilor, precum terminalul virtual (TELNET), transfer de fișiere (FTP) și poștă electronică (SMTP). Majoritatea protocoalelor de la nivelul aplicație sunt asociate cu modelul client-server. Serverele au de obicei asociate porturi fixe, atribuite de IANA: HTTP are portul 80, FTP portul 21, etc.

Nivelul Transport – identic cu cel din modelul OSI, ocupându-se cu probleme legate de siguranță, control al fluxului și corecție de erori. El este proiectat astfel încât să permită conversații între entitățile pereche din gazdele sursă, respectiv, destinație. În acest sens au fost definite două protocoale capăt-la-capăt. Primul nivel este TCP este un protocol sigur orientat pe conexiune care permite ca un flux de octeți trimiși de pe o mașină să ajungă fără erori pe orice altă mașină din rețea. Acest protocol fragmentează fluxul de octeți în mesaje discrete și pasează fiecare mesaj nivelului internet așa cum este structurat în (Tabelul 4.1.1).

Tabelul 4.1.1 Maparea nivelelor modelului OSI la modelul TCP/IP

Al doilea protocol din acest nivel, UDP (User Datagram Protocol), este un protocol nesigur, destinat aplicațiilor care doresc să utilizeze propria lor secvențiere și control al fluxului. Protocolul UDP este de asemenea mult folosit pentru interogări rapide, client-server și pentru aplicații în care comunicarea promptă este mai importantă decât comunicarea cu acuratețe, așa cum sunt aplicațiile de transmisie a vocii și a imaginilor video.

Comparație între TCP și UDP pe modelul transmiterii poștei:

scrisoarea trimisă nu se știe dacă a ajuns sau nu la destinație = UDP

scrisoarea, cu confirmare de primire trimisă la recepție confirmare de primire = TCP

Exemplu de utilizare UDP (rapid și eficient) pentru “streaming audio/video” în (fig.4.1.2).

Figura 4.1.2 Transmisie rapidă și eficientă

Deși pe ecran mai apar deformări sau întreruperi, calitatea de ansamblu a prezentării nu este afectată.

TCP ar cere retransmiterea pachetelor pierdute !!!

Nivelul Rețea (Internet) – asigură rutarea pachetelor în interiorul unei singure rețele. Odată cu apariția interconexiunii între rețele, acestui nivel i-au fost adăugate funcționalități de comunicare între o rețea sursă și o rețea destinație.

Nivelul Acces la rețea – Se ocupă cu toate problemele legate de transmiterea efectivă a unui pachet IP pentru o legătură fizică, incluzând aspectele legate de tehnologii și de medii de transmisie, adică nivelurile OSI legătură de date și fizic.

Internet Protocol – IP

Funționează la nivelul internet al modelului TCP/IP

Asigură informația despre cum și unde trebuiesc livrate datele-adresa sursei, adresa destinației, cum trebuie livrata informația.

În cazul unui protocol neorientat pe conexiune, pachetele transmise între gazde pot utiliza rute diferite „pachet switching” spre deosebire de protocoalele ce utilizează „circuit switching”, care sunt orientate pe conexiune.

Protocolul neorientat – este un protocol care alocă adrese logice gazdelor (adrese IP) care are două metode de alocare ip:

Automat, prin intermediul serverului DHCP (alocare dinamică de adrese)

Manual, prin introducerea adreselor IP

TCP/IP – Adrese IP

TCP – Protocol orientat pe conexiune, ceea ce înseamnă că, înainte ca TCP să transmită date, conexiunea trebuie să fie stabilită.

Este un protocol sigur, compensând astfel lipsa conexiunii și siguranța redusă din protocolul IP.

TCP/IP lucrează într-un “spațiu” de adresede 32 biți > 4 miliarde de adrese IP disponibile (32 biți 232 adrese posibile= 4.294.967.296)

Fiecare adresă este împărțită în 4 octeți, scrisă în format zecimal

Domeniul maxim de valori pentru un octet este 0 – 255 (prima valoare corespunzând situației când toți biții sunt 0, iar a doua când toți biții sunt 1).

Exemple: 63.24.100.240 – adresă IP validă

63.24.310.240 – adresă IP invalidă

Succesorul lui IPv4 este IPv6. Modificarea cea mai importantă de la versiunea 4 este sistemul de adresare. IPv4 folosește adrese pe 32 de biți în timp ce IPv6 utilizeaza adrese de 128 biți. Deși adoptarea IPv6 a fost lentă, din iunie 2008, toate sistemele guvernului Statelor Unite ale Americii au demonstrat suport pentru infrastructura IPv6.

Dns, Http, Ftp, Pop3, Smtp, Imap, Samba, SSH

Acest subcapitol descrie o serie de servicii folosite de sistemul de operare CENTOS pentru a putea rula ca un server complet de furnizare a serviciilor internet. Pentru a înțelege modul de funcționare a serverului vom descrie ce sunt și funcționarea serviciilor folosite:

DNS (domain name system) – Un sistem de nume de domeniu care transformă adresa IP în nume de domeniu. Cea mai cunoscută aplicație a DNS este gestionarea domeniilor în internet. Caracteristicile sistemului de nume (DNS) sunt:

folosește o structură ierarhizată;

deleagă autoritatea pentru nume;

baza de date cu numele și adresele IP este distribuită.

Fiecare implementare TCP/IP conține o rutină software (name resolver NS) specializată în interogarea serverului de nume (DNS) în vederea obținerii translatării nume/adresă IP sau invers.

În (fig. 4.2.1) vom arăta modul de trimitere al unui răspuns către client.

FIGURA 4.2.1. Ierarhia DNS.

HTTP (Hypertext Transfer Protocol) este metoda cea mai des utilizată pentru accesarea informațiilor în internet care sunt păstrate pe servere World Wide Web (WWW). HTTP este un protocol de tip text, fiind protocolul "implicit" urmat de WWW. Adică, dacă un URL nu conține partea de protocol, aceasta se consideră ca fiind http. HTTP presupune că pe calculatorul destinație rulează un program care înțelege protocolul. Fișierul trimis la destinație poate fi un document HTML (HyperText Markup Language), un fișier grafic, de sunet, animație sau video, de asemenea un program executabil pe server-ul respectiv sau și un editor de text. Clasificarea după modelul de referință OSI, protocolul HTTP este un protocol de nivel aplicație. Realizarea și evoluția sa este coordonată de către World Wide Web Consortium (W3C).

Mod de funcționare:

HTTP oferă o tehnică de comunicare prin care paginile web se pot transmite de la un calculator aflat la distanță spre propriul calculator. Dacă se apelează un link sau o adresă de web cum ar fi: http://www.pontaj.timofte-adrian.ro, atunci se cere calculatorului host să afișeze o pagină web (index.html sau altele în fucție de setările serverului http). În prima fază numele www.pontaj.timofte-adrian.ro este convertit de protocolul DNS într-o adresă IP. Urmează transferul prin protocolul TCP pe portul standard 80 al serverului HTTP, ca răspuns la cererea de interogare HTTP-GET sau POST. În urma cererii HTTP (GET sau POST) urmează din partea serverului răspunsul cu datele cerute, ca de ex.: pagini în HTML, cu fișiere atașate ca imagini, fișiere de stil (CSS), scripturi (Javascript), dar pot fi și pagini generate dinamic (PHP și ASP.NET).

Metode de interogare:

GET: este cea mai folosită metodă, fiind utilizată atunci când serverului i se cere o resursă.

HEAD: se comportă exact ca metoda GET, dar serverul returnează doar antetul resursei, ceea ce permite clientului să inspecteze antetul resursei, fără a fi nevoit să obțină și corpul resursei.

PUT: metoda este folosită pentru a depune documente pe server, fiind inversul metodei GET.

POST: a fost proiectată pentru a trimite date de intrare către server.

DELETE: este opusul metodei PUT.

TRACE: este o metodă folosită de obicei pentru diagnosticare, putând da mai multe informații despre traseul urmat de legătura HTTP, fiecare server proxy adăugându-și semnătura în antet.

OPTIONS: este folosită pentru identificarea capacităților serverului Web, înainte de a face o cerere.

CONNECT: este o metodă folosită în general de serverele intermediare.

FTP (File Transfer Protocol) – este un protocol utilizat pentru accesul la fișiere aflate pe servere din rețelele de calculatoare locale sau din internet. Un server de FTP este esential pentru un web designer atunci cand vrea să încarce noile fișiere care contin structura de bază a siteului fie pentru update fie pentru a face o copie a datelor deja existente (backup).

POP3 (Protocolul Post Office – Versiunea 3) – este un protocol standard de Internet utilizat de către clienții de e-mail pentru a prelua un e-mail de la un server aflat la distanță prin intermediul unei conexiuni TCP / IP. POP a fost dezvoltat prin mai multe versiuni, versiunea 3 (POP3) fiind standardul curent. Pop1 a fost specificat în standardul RFC 918 din anul 1984, POP2 în standardul RFC 937 din anul 1985 iar POP3 în standardul RFC 1081 din anul 1988. POP3 folosește portul 110 iar alături de comunicarea prin acest port se mai poate iniția și folosirea comunicațiilor criptate prin comanda STLS dacă serverul are implementat suportul pentru POP3S folosind Transport Layer Security (TLS) sau Secure Sockets Layer (SSL) pe portul TCP 995.

SMTP (Simple Mail Transfer Protocol) – este un standard de internet de poștă electronică (e-mail) de transmisie a datelor. Definit de standardul RFC 821 dn anul 1982, a fost actualizat ultima dată în 2008, cu completările SMTP extinse definite în standardul RFC 5321 – fiind un protocol utilizat pe scară largă în prezent. SMTP utilizează implicit portul TCP 25. Protocolul de depunere e-mail este același (MSA- mail submission agent), dar folosind portul 587, și conexiunile SMTP garantate prin SSL, cunoscut sub numele de SMTPS, care folosește portul 465.

IMAP (Internet Message Access Protocol – ) – este un protocol, care permite unui client de e-mail pentru a accesa casuța de e-mail de pe un server de mail de la distanță. Versiunea actuală, IMAP versiunea 4 de revizuire 1 (IMAP4rev1), este definit de RFC 3501. Un server IMAP de obicei folosește portul 143. IMAP pentru o conexiune sigură (IMAPS) îi este atribuit portul 993. Înainte de a se implementa versiunea actuală IMAP4 au fost următoarele versiuni:

IMAP2 – definit în standardul RFC 1064 din anul 1988 actualizat în standardul RFC 1176 din anul 1990. IMAP2 a introdus comanda / răspuns de tag (etichetă) și a fost prima versiune distribuită public.

IMAP3 – este o versiune întalnită mai rar. A fost publicat în standardul RFC 1203 în anul 1991. Acesta a fost scris în mod special ca o propunere în contradicție cu RFC 1176 care a propus modificări IMAP2 și nu a fost niciodata acceptat pe piață.

IMAP2bis – a adăgat functionalități de management a căsuței poștale (a crea, șterge, redenumi, mesajul upload), funcții care au fost absente în IMAP2.

IMAP4 – un grup de lucru format din IMAP IETF la începutul anilor 1990 a preluat responsabilitatea pentru proiectarea IMAP2bis. Cea mai recentă versiune, IMAP4, permite unui client de e-mail manipularea mesajelor e-mail stocate pe un server în același mod ca un client folosind foldere locale. Această capacitate permite mai multor clienți pentru un singur utilizator pentru a vedea același status cutie poștală. De exemplu, dacă un utilizator mută un mesaj de la căsuța poștală la un alt folder utilizând un client, atunci când accesează mai târziu cutia poștală de la un alt client mesajul apare în dosarul în care a fost mutat.

SAMBA – provine din SMB (Server Message Block) numele protocolul standard folosit de sistemul de fișiere de rețea Microsoft Windows. Este un sistem care permite utilizatorului să împartă resursele de tip fișiere sau foldere cu un alt calculator aflat în rețea la fel cum se întâmplă în Windows prin protocolul File and Printer Sharing.

SSH (Secure Shell) – este un protocol de rețea criptat pentru comunicații securizate de date, la distanță de conectare în linie de comandă. Acest protocol permite execuția unor comenzi la distanță, între două calculatoare aflate în rețea. Conexiunea se face, prin intermediul unui canal securizat a unei rețele nesecurizate. Specificația de protocol face distincție între două versiuni majore, care sunt menționate ca SSH-1 și SSH-2. Acesta a fost conceput ca un înlocuitor pentru Telnet și alte protocoale nesigure de la distanță, cum ar fi RSH Berkeley care transmite informații, în special parole, în text clar, făcându-le susceptibile interceptării și divulgarea folosind analiza de pachete. SSH folosește criptografie public-key pentru a autentifica computerul la distanță pentru a permite autentificarea utilizatorului, dacă este necesar. Există mai multe moduri de a folosi SSH; unul este de a folosi perechi de chei publice-private generate automat pentru a cripta pur și simplu o conexiune de rețea, și apoi folosiți parola de autentificare. O altă modalitate este de a folosi o pereche de chei public-privat generate manual pentru a efectua autentificarea, care permite utilizatorilor sau programelor să se conecteze fără a specifica o parolă. Standardul pentru comunicarea prin intermediu SSH este portul 22.

Firewall, Port-Forwarding

Firewall-ul (zid de foc) este un sistem care permite aplicațiilor care comunică în rețea sa aibă acces la un anumit port de transmitere a datelor, port specific fiecarei aplicații în parte. Acest sistem poate avea posibilitatea să blocheze accesarea unui anumit domeniu din internet dar si blocarea totală a comunicării cu exteriorul a unei aplicații blocând transmiterea de pachete pe portul cu care aplicația comunică, de asemenea poate anula anumite porturile prin care se comunică în exterior printr-un sistem de filtrare al porturilor. Se poate ca firewall-ul să blocheze anumite siteuri în funcție de cuvintele conținute. Exista și pachete antivirus care au încorporat și sistemul de firewall având control și asupra aplicației în sine și asupra portului de comunicare.

În (Fig.4.3.1) este prezentată o diagramă a unui server care are rol de firewall.

FIGURA 4.3.1. Simplă diagramă firewall.

Se poate observa că serverul prin intermediul a două adaptere de rețea oferă servicii internet rețelei locale:

adapterul0 (eth0) – preia accesul internet de la router

adapterul1(eth1) – furnizează internet rețelei interne (LAN – local area network)

Port forwarding – este sistemul prin care declarăm routerului sau firewall-ului că dorim să ieșim în exterior cu un serviciu oferit de serverul de web, de transfer de fișiere, de mail….etc.

După ce mai sus am explicat sistemul firewall și al porturilor de comunicare bazându-ne pe (figura 4.3.1) va trebui să explicăm și sitemul port forwarding prin care un protocol de rețea fie el TCP/IP sau UDP comunică în exterior.

Fiecare soft sau serviciu de rețea comunică printr-un port (un canal de comunicare) fiecare port fiind bine stabilit dinainte de către aplicație sau serviciu. Mai exact acest port este un canal de comunicare cu exteriorul iar acesta trebuie să fie unic fiecarei aplicații în parte pentru a evita ca un alt program care folosește același canal de comunicare (port) să nu mai poată comunica.

Observație: Dacă se întâmplă ca două aplicații să folosească același port de comunicare prima aplicație pornită să ocupe acel canal de comunicare, cealaltă va trebui să aștepte până când prima aplicație se oprește sau cealaltă aplicație să folosească alt port de comunicare. Practic se merge pe sistemul primul venit primul servit.

Putem explica mai clar luând modelul avioanelor dintr-un aeroport. Dacă într-un aeroport un avion ocupă o anumită pistă celălalt avion va trebui ori să asteapte până când primul avion eliberează pista ori va trebui să aleagă alta.

Există 3 tipuri de forwardare a pachetelor:

Port forwarding local – este cel mai frecvent tip de port forwarding. Acesta este utilizat pentru a transmite date în siguranță de la o altă aplicație client care rulează pe acelaș computer ca și clientul Secure Shell. Port Forwarding local permite utilizatorului să se conecteze de la un computerul local la un alt server. Prin utilizarea port forwarding local, firewall-uri care blochează anumite pagini web poate fi ocolit.

Port forwarding de la distanță – O formă de port forwarding, care este utilizat pentru aplicațiile care se conectează la un server Secure Shell, în scopul de a utiliza o aplicație care se află pe Secure Shell client-side. Cu alte cuvinte, port forwarding de la distanță permite unui utilizator conectarea de la o sursă sigură Shell server la un alt server. Pentru a folosi port forwarding de la distanță, adresa serverului de destinație și două numere de port trebuie să fie cunoscute.

Port forwarding dinamic – Scopul este de a permite clienților să se conecteze în siguranță la un server de încredere, care acționează ca un intermediar în scopul de a trimite / primi date la unul sau mai multe servere destinație. Port forwarding dinamic poate fi pus în aplicare prin instituirea unor configurații la un server proxy SOCKS, care poate fi folosit pentru a procesa datele transmise prin rețea sau prin internet. Programe (cum ar fi browserele web) trebuie să fie configurate individual pentru trafic direct prin proxy, care acționează ca un tunel securizat de la un alt server. Odată ce proxy-ul nu mai este necesar, programele trebuie să fie reconfigurate la setările originale. Datorită cerințelor manuale de configurare, acesta nu este des întâlnită.

CAPITOLUL 5

Limbajul de programare PHP și baza de date MySQL

Câteva din facilitățile principale pentru limbajul de programare PHP

Câțiva dintre competitorii principali ai PHP sunt Perl, Microsoft ASP.NET, Java Server Pages (JSP) si ColdFusion.

În comparatie cu aceste produse, PHP are multe elemente principale printre care:

Performanță ridicată

Interfețe pentru multe sisteme de baze de date diferite

Biblioteci încorporate pentru multe din taskurile Web Obișnuite

Cost scăzut

Ușurință în învățare și utilizare

Suport puternic orientat spre obiecte

Portabilitate

Disponibilitatea codului sursă

Disponibilitatea suportului

Performanțe:

PHP este foarte eficient. Utilizând un singur server ieftin se poate oferi milioane de accesări pe zi. Dacă se utilizează un număr mare de servere de consum, capacitatea de servire devine practic nelimitată. Evaluările de performanță publicate de Zend Tehnologies (http://www.zend.com) arată că PHP este mai performant decât concurența.

Integrarea bazelor de date

Php are capacitatea nativă de conexiune pentru mai multe sisteme de baze de date. În afară de bazele de date MySQL, vă mai puteți conecta direct, printre altele, și la baze de date PostgreSQL, mSQL, Oracle, dbm, FilePro, Hyperware, Informix, InterBase și Sybase. În plus PHP 5 are încorporată o interfață SQL la un fișier plat, numită SQLite.

Utilizând Open Base Connectivity Standard (ODBC) vă puteți conecta la orice bază de date care oferă un driver ODBC, cum ar fi produse Microsoft și multe altele.

Biblioteci încorporate

Deoarece PHP a fost proiectat pentru a fi folosit pe Web, are funcții încorporate pentru realizarea multor operații utile legate de Web. Se pot genera pe loc imagini GIF, se poate face conexiunea la alte servicii de rețea, se pot trimite mesaje e-mail, se poate lucra cu cookie și se pot genera documente PDF, toate acestea numai prin câteva linii de cod.

Cost

PHP este gratuit. Puteți oricând să descărcați gratuit ultima versiune de pe siteul: http://www.php.net.

Ușurința învățării PHP

Sintaxa PHP este bazată pe cea a altor limbaje de programare, în principal C și Perl. Dacă aveți deja cunoștințe ale limbajelor C și Perl, sau cunoașteți alt limbaj care seamănă cu C, cum ar fi C++ sau Java, puteți avea un avantaj încă de la început în utilizarea limbajului PHP. Limbajul are o sintaxă asemănătoare limbajului C, care este foarte popular în randul programatorilor. De aceea programatorii care au cunoștințe de C sau Perl vor face foarte rapid trecerea spre PHP. Pe de alta parte anumite aspecte cum ar fi: declararea si folosirea variabilelor este mult simplificată în PHP, spre deosebire de C++ sau alte limbaje de nivel înalt.

Suport pentru orientarea spre obiecte

Versiunea 5 a limbajului PHP are caracteristici orientate spre obiecte bine proiectate. Dacă ați învățat să programați în Java sau C++, veți găsi în PHP caracteristicile (și, în general, sintaxa) la care vă așteptați: moștenire, atributele private și protected, clase și metode abstracte, interfețe, constuctori și destructori. Se vor găsi și caracteristici mai puțin obișnuite, cum este comportamentul iterativ încorporat. Cîteva dintre aceste funcționalități au fost disponibile și în versiunile 3 și 4 ale limbajului PHP, dar suportul orientat spre obiecte al versiunii 5 este mault mai complet.

Portabilitatea

Php este disponibil pentru multe sisteme de operare diferite. Puteți scrie cod PHP pe sistemele de operare gratuite de tip UNIX, cum sunt Linux și FreeBSD, pe versiuni UNIX comerciale, cum sunt Solaris si IRIX, sau pe diferite versiuni Microsoft Windows.

Un cod scris corect va funționa de obicei fără modificări pe un sistem diferit pe care ruleată PHP.

Cod sursă

Se poate avea acces la cosul sursă PHP. Spre deosebire de produsele comerciale cu surse închise, în PHP dacă doriți să modificați sau să adăugați ceva la limbaj, se poate face acest lucru.

Nu trebuie să așteptați ca producătorul să lanseze programe patch. De asemenea, nu trebuie să vă faceți griji că producătorul va da faliment sau că se va hotărî să nu nau ofere asistență pentru un anumit produs.

Disponibilitatea suportului pentru PHP

Zend Technologies (www.zend.com), compania care dezvoltă motorul limbajului PHP, obține fondurile necesare pentru dezvoltarea limbajului oferind pe bază comercială atât suport, cât și software înrudit.

Câteva din facilitățile principale ale bazei de date MySQL

Câțiva dinte competitorii principali ai MySQL sunt PostgreSQL, MicrosoftSQL Server și Oracle. MySQL are multe puncte forte, printre care:

Performanță ridicată

Cost scăzut

Ușurință în configurare și învățare

Portabilitate

Disponibilitatea codului sursă

Disponibilitatea suportului

Performanțe

MySQL este rapid. Pagina producătorului, care conține evaluările de performanță, se poate vedea la adresa http://www.sqlite.org/speed.html precum și alte tabele comparative se pot găsi pe alte siteuri deasemenea. Multe dintre aceste evaluări de performanță arată că MySQL este cu câteva ordine de mărime mai rapid decât concurența. În 2002, eWeek a publicat evaluări de performanță comparative pentru cinci baze de date destinate aplicațiilor Web. Cel mai bun rezultat a fost obținut la egalitate de MySQL și mult mai costisitorul Oracle.

Cost scăzut

MySQL este disponibil gratuit sub o licență Open Source sau la un preț mic sub o licență comercială dacă aceasta este necesară. Dacă doriți să redistribuiți MySQL ca parte a unei aplicații căreia nu doriți să îi aplicați o licență Open Source, atunci aveti nevoie de o licență pentru MySQL.

Ușurință în utilizare

Majoritatea bazelor de date moderne utilizează SQL. Daca ați utilizat SGBDR (sistem de gestiune a bazelor de date relaționale), nu ar trebui să fie probleme cu adaptarea acesta. De asemenea, MySQL este mai ușor de configurat decât multe produse asemănătoare.

Portabilitate

MySQL poate fi folosit pe multe sisteme UNIX diferite precum si pe Microsoft Windows.

Cod sursă

Ca și PHP, puteți obține și aduce modificări la codul sursă al bazei de date MySQL. De cele mai multe ori acest lucru nu este important pentru majoritatea utilizatorilor, dar vă garantează o liniște sufletească asigurînd continuitate și oferindu-vă opțiuni dacă apare o urgență.

Disponibilitatea suportului pentru MySQL

Nu toate produsele OpenSource au o companie părinte care să ofere suport, instruire, consultanță și certificare, dar dumneavoastră puteți profita de toate acestea prin intermediul MySQL AB (www.mysql.com).

De ce să folosim PHP și MySQL ?

Când se începe construirea unui site de comerț electronic există mai multe produse diferite pe care le puteți folosi.

Va trebui să alegeți următoarele:

Hardware pentru serverul Web

Un sistem de operare

Software pentru un server Web

Un sistem de gestiune a bazelor de date

Un limbaj de programare sau de scriptare

Unele dintre aceste opțiuni vor depinde de celelalte. De exemplu nu toate sistemele de operare vor rula pe orice tip de hardware, nu toate limbajele de scriptare se pot conecta la orice bază de date.

Introducere în PHP

Limbajul PHP a fost creat în anul 1994 de către Rasmus Lerdorf, care încerca să-si personalizeze propria pagină Web; din această cauză limbajul a fost numit inițial PHP adica: Personal Home Page (pagină de bază personală). Urmând ca limbajul să fie perfecționat, iar utilitatea și caracteristicile sale să se dezvolte treptat, ajungând să aiba semnificația Hypertext Preprocesor (PHP). Preprocesarea constă în faptul că datele sunt interpretate(preprocesate) de către serverul Web înainte ca acesta să genereze cod HTML. O statistică arată că în august 2004 erau 17 milioane de domenii iar în ianuarie 2013 erau în uz pe mai mult de 100 de milioane de domenii din lumea întreagă, iar acest număr crește rapid așa cum se poate observa și din (figura 5.1) care prezintă evoluția în timp a utilizării limbajului PHP. Numărul actual al acestora îl puteți vedea accesând pagina: http://php.net/usage.php. Versiunea majoră curentă a limbajului PHP 5. Această versiune a adus limbajului o rescriere completă a motorului Zend care stă la baza sa precum și alte câteva îmbunătățiri importante.

Figura 5.1. Evoluția în timp a utilizării limbajului PHP.

Dacă sunteți un cunoscător al limbajului HTML, dar nu aveți experiență în materie de programare, funcționalitățile suplimentare pe care le poate asigura cunoașterea limbajului PHP sunt ca și la alte limbaje de scripting pentru Web, PHP vă permite sa furnizați un conținut Web dinamic, adică un conținut Web care se modifică automat de la o zi la alta sau chiar de la un minut la altul. Conținutul Web este un element important în susținerea traficului unui site Web; de regulă, vizitatorii nu vor mai reveni la o pagină Web care conține aceleași informații ca și cele prezentate la ultima vizită. Pe de altă parte, site-urile web frecvent actualizate pot atrage un număr mare de vizitatori. Mai mult, spre deosebire de limbajele de scripting, precum JavaScript, PHP rulează pe serverul Web, nu în navigatorulul Web. În consecință, PHP poate obține accesul la fișiere, baze de date și alte resurse inaccesibile programului JavaScript. Acestea constituie bogate surse de conținut dinamic, care atrag vizitatorii. În plus, putem folosi limbajul PHP pentru a genera cod Java Script.

Secvențele de cod PHP pot fi incluse într-un fișier HTML urmând ca serverul Web să identifice această secvență de cod procesând acestă secvență de cod generând cod HTML iar la final va înlocui secvența de cod PHP transformând-o în format HTML.

Aspecte ce vizează modul de configurare PHP

PHP este un limbaj de programare web puternic, iar interpretorul său, fie că este inclus în serverul web ca un modul, sau executat separat ca binar CGI, este capabil să acceseze fișiere, să execute comenzi sau să deschidă conexiuni în rețea pe server. Aceste proprietăți fac ca tot ce este rulat pe server să fie implicit nesecurizat. PHP a fost proiectat în mod specific pentru ca să fie un limbaj mai securizat pentru scrierea programelor CGI decât Perl sau C, și cu o selectare corectă a opțiunilor de configurare la compilare și la rulare, dublate de o tehnică de programare corespunzătoare, PHP vă poate oferi combinația perfectă de libertate și securitate de care aveți nevoie.

Existând multe modalități diferite de a utiliza PHP, există și multe opțiuni de configurare care îi controlează comportamentul. Multe dintre opțiunile de configurare garantează posibilitatea utilizării PHP pentru o întreagă suită de întrebuințări, dar aceasta totodată înseamnă că pot exista combinații ale acestor opțiuni și ale configurațiilor de servere, care vor duce la crearea unui mediu de execuție nesecurizat.

Multitudinea configurațiilor în PHP este egală și rivalizează cu flexibilitatea codului-sursă. PHP poate fi utilizat pentru a construi aplicații complete pentru servere, cu toate avantajele unui utilizator shell, sau poate fi utilizat ca o simplă incluziune de partea serverului cu grad de risc redus, într-un mediu bine controlat. Modul de construire a acestui mediu și cât de securizat este el depinde în mare măsură de programatorul PHP.

Ce poate face PHP ?

PHP este în principal bazat pe scripting de partea server-ului, deci se poate realiza cu el orice poate realiza un alt program CGI, cum ar fi colectarea datelor din forme, generarea conținutului dinamic al paginilor sau trimiterea și primirea de cookies. Dar PHP poate face mult mai multe.

Sunt trei domenii principale, unde scriptul PHP este utilizat:

Scripting de partea serverului. Acesta este cel mai tradițional și de bază domeniu al PHP. Aveți nevoie de trei lucruri pentru ca aceasta să funcționeze. Interpretorul PHP (în calitate de CGI, sau modul pentru server), un server web și un browser web. Trebuie să rulați serverul web cu o instalare PHP conectată la el. Aceasta înseamnă că nu este vizibilă nici o parte din codul PHP brut. Aceasta deoarece interpretorul PHP a rulat scriptul și l-a înlocuit cu ieșirea scriptului. Înseamnă că din PHP putem realiza cod HTML curat care poate fi vizualizat cu orice browser. Cu alte cuvinte, browserul utilizatorului nu trebuie să înțeleagă PHP.

Scripting în linia de comandă. Puteți să faceți un script PHP să ruleze fără un server și browser web. Aveți nevoie doar de interpretorul PHP pentru utilizarea acestui mod. Acest mod de utilizare este ideal pentru script-uri executate în mod regulat cu cron (pe Linux) sau cu Task Scheduler (pe Windows). Aceste script-uri pot fi utilizate de asemenea pentru lucrări de procesare a textelor. Se poate face un script de tip *bat cu anumite setări ce preiau funcții din scriptul php iar acesta la randul sau poate fi rulat cu parametrii doriți definiți în scriptul *php.

Scrierea aplicațiilor de birou. PHP probabil că nu este cel mai potrivit limbaj pentru a crea o aplicație de birou cu o interfață grafică, dar dacă cunoașteți PHP foarte bine și doriți să utilizați unele facilități avansate ale limbajului PHP în aplicații de partea clientului, puteți să utilizați PHP-GTK pentru a scrie asemenea aplicații. De asemenea se pot scrie în acest mod aplicații ce vor rula pe mai multe platforme. PHP-GTK este o extensie a PHP, care nu este disponibilă în distribuția de bază. Aceasta înseamnă că un script php poate rula ca și o aplicație de tip grafic ca și cum ar fi un program executabil de windows totul rulând într-o singură fereastră.

Asemănări și deosebiri dintre PHP și C++

Acest capitol prezintă pe scurt, limbajul de programare PHP pentru cei care sunt deja bine familiarizați cu limbajul de programare C + + (sau se poate citi prin prisma experienței de programare în alte limbaje similare, cum ar fi Java). Se poate invăța, de asemenea, lucruri noi pentru cei care sunt deja familiarizați cu PHP.

Există asemănări și deosebiri între cele două limbaje de aceea utilizatorilor care au mai programat in C și C++ le va fi ușor să înțeleagă PHP. În primul rând ambele limbaje sunt orientate obiect iar PHP devine un program orientat obiect începând cu versiunea 5.

În C și C + +, programul începe de la o funcție magică numită principal (). În PHP, nu există nici o astfel de funcție de magie. Daca se dorește ceva executat imediat după executarea script-ul, se scrie în afara oricărei funcții, în domeniul de aplicare la nivel global.

Accentul principal este pentru cei care doresc să utilizeze PHP pentru programare serioasă, nu doar pentru scripting sau ceva pentru web. De asemenea, această pagină acoperă doar limba; funcțiile de bibliotecă nu sunt acoperite.

Am considerat ca diferențele dintre cele 2 limbaje de programare (PHP și C++ ) să fie detaliate în funcție de:

Structura programului

Programul principal

Operatori

Comentarii

Identificatori

Constante și literali

Variabile, tipuri și domeniul de aplicare

Structurile de comandă

Funcții

Structuri de date (Array)

Module

Clase

Structura programului

PHP este conceput inițial ca un motor de script care acceptă adăugarea de script-ul în documente HTML. Un fișier tipic ar putea arata astfel:

<h1>Hello</h1>

The time is <?php print date('Y-m-d H:i:s'); ?>.

<hr>

This is a PHP hypertext processed page.

Acest lucru poate fi explicat prin faptul că întregul document PHP are un "print", implicit peste și în jurul ei. Tag-ul pseudo, "<? Php", începe cod real PHP. Din modul de cod PHP, este posibil să se întoarcă înapoi la modul de "print" cu o altă etichetă pseudo "?>".

Dacă intenționați să faceți programare actuală în PHP și nu-l utilizați ca un motor de inserare script, ești cel mai bun off de a începe întregul dosar cu:

<? Php

Și apoi doar incepand de codificare de mai jos ea.

Exemplu:

<?php

echo "Hello, world!\n";

echo 'The time is now ', date('Y-m-d H:i:s'), ".\n";

Rețineți că nu este necesar să se elimine fișierul cu „?>”. De fapt, dacă nu, risti programul afișarea de spații suplimentare și liniile noi, dacă se întâmplă să le introduceți în necunoștință de dincolo de remorcarea „?>”. Acest lucru poate fi important, în cazul în care vă de ieșire date binare cum ar fi imagini.

Observație: Eticheta „<php” este uneori scrisă scurt ca „<?”. Cu toate acestea, din cauza posibilelor ambiguități cu alte tipuri de scripturi, este depreciată să facă acest lucru.

Programul principal

În C și C + +, programul începe de la o funcție magică numită principal (). În PHP, nu există nici o astfel de funcție de magie. Daca vrei ceva executat imediat după executarea script-ul, tu doar scrie în afara oricărei funcții, în domeniul de aplicare la nivel mondial.

Exemplu:

<?php

function test($who) // declares a function

{

print "Hello, $who!\n";

}

// this is the main program

$greet = 'world';

test($greet); // calls the function "test".

Operatorii

Aceeași operatori care lucrează în C + +, lucrează și în PHP. Cu toate acestea, există câțiva noi operatori:

Este la fel ca , cu excepția faptului că se verifică dacă tipul este identic, decât ca acestea să evalueze într-o valoare compatibilă.

În mod similar pentru ! Versus !

@ Supriă mesajele de eroare pentru expresia la care este prefixat.

. Concateneaza șiruri de caractere. (Și,. Ca un analog la + )

Semnificațiile și -.> Sunt diferite de C + +, și nu există unari *, * și -.> * Operatori.

Sensul operatorului unar & este diferit (creează o referință în loc de a lua adresa).

Comentarii

Comentariile din cod au rolul de indicații pentru oamenii care citesc codul. Comentariile pot fi folosite pentru a explica scopul scriptului, cine este autorul, motivul pentru care l-a scris în acel mod, când a avut loc ultima modificare.

Interpretorul PHP va ignora tot textul dintr-un comentariu. În esență, analizorul PHP va sări peste comentarii, acestea fiind echivalente cu spațiile libere.

Php acceptă comentarii de genul celor din C, C++ și script shell.

Comentariile pe mai multe linii trebuie să înceapă cu /* și să se încheie cu */. De asemnea se pot folosi comentarii pe o singură linie cu „//”.

PHP susține trei stiluri de comentarii.

/ * Stil C * /

/ / C + + stil / / Care poate fi continuată NU \ pe următoarea linie cu un backslash

# Și unix shell / configurare stil fișier.

Identificatori

În PHP, toate variabilele încep cu un semn dolar: „$”.

Dacă vedeți ceva de genul „$x” undeva în cod, știți cu siguranță că aceasta este o variabilă (sau, în acest caz dolar, acționează semantic ca o variabilă).

În cazul în care este format din litere, poate fi oricare dintre acestea trei:

Un cuvânt rezervat (cuvinte cheie)

funcție definită de utilizator sau un nume de metodă

Un nume de claă sau interfață (numai când este precedat de clasa, new, se extinde sau este utilizat sau urmat de ::)

constantă definită

Constante și literali

Literali numerice

Literalele numerice funcționează în același mod ca în C + +.

$ A = 5; / / Întreg literal 5

$ A = 5.3; / / Virgulă mobilă literal 5.3

$ A = 5.3e3; / / Virgulă mobilă literal 5300.0

$ A = 0x14; / / Întreg literal 20

$ A = – 1; / / Întreg literal -1

$ A = 015; / / Întreg literal 13 (octal 015)

Construcțiile șirurilor de caractere

Construcția șirului în PHP suportă similitudine superficială față de un sir de caractere din C++. Cu toate acestea, este important să se recunoască diferențele.

Mai întâi de toate, există două modalități de a declara construcțiile șir.

$ A = "În ghilimele duble"; $ B = "În ghilimele simple";

Ambele moduri pot fi folosite alternativ, dar există o diferență în caracteristicile acceptate de fiecare convenție.

Exemplu:

„ $ A = "Acest șir conține o linie nouă, un retur de car și o doublequote \ n \ r \." ";

$ B = "Acest șir conține, de asemenea, o doublequote, dar în loc de linie nouă, există un backslash literal și o scrisoare.

Un șir literal se poate întinde pe mai multe linii (se include literale newline). "\ R \ n ';

$ C = "Sirurile de caractere pot fi concatenate cu operatorul perioada." . "\ N"; ”

Șir închis-singlequote acceptă numai două evadări: \ "si \ \.

Șir închis-doublequote suportă mai multe evadări: \ n, \ r, \ t, \ \, \ $, \ ", \ [0-7] {1,3} (Coduri de caractere octale) și \ x [0-9A-Fa-f] {1,2} (coduri de caractere hexazecimale).

Toate celelalte sunt literali, în cazul în care backslash devine, de asemenea, o parte din conținutul șir.

Șir închis-doublequote poate include, de asemenea, variabile; acesta nu este neapărat un literal pur. Variabilele sunt evaluate și forțat în șir pentru a construi șirul.

Construcția unei matrici

Matricile în PHP sunt construite foarte similar cu modul în care acestea sunt construite în Javascript, Ruby, Python și alte câteva limbaje, deși cu sintaxa mai detaliată. Este, de asemenea, ușor asemănătoare cu modul C + +, dar este mult mai versatilă.

Exemplu:

$powers_of_two = Array(1,2,4,8,16,32,64,128,256,512,1024,2048,4096);

$vg_characters = Array

(

'supermariobros' => Array(

'hero' => 'Mario Mario',

'alternative_hero' => 'Luigi Mario',

'enemy' => 'King Bowser Koopa',

'henchmen' => Array('Goomba', 'Lakitu', 'Piranha plant', 'Koopa troopa')

),

'metroid' => Array(

'hero' => 'Samus Aran',

'enemy' => 'Metroids'),

'megaman' => Array(

'hero' => 'Mega Man',

'hero_alternative_name' => 'Rockman',

'enemy' => 'Dr. Wily'

) );

Rețineți că acest lucru nu este doar o inițializare a matricii. Construcțiia „Array” poate fi utilizată în expresii, spre deosebire de C + +. De asemenea, nu este un apel de funcție, deși este evaluată în timpul rulării. Este o construcție de limbaj cu propria sintaxă distinctă.

Variabile, tipuri și domeniul de aplicare

Declarație

În PHP, variabilele nu trebuie să fie declarate. Ele există din prima clipă în care sunt menționate. De exemplu, acest cod este valid:

Exemplu:

„$ Test_var = "Testare, testare …";”

Se introduce o variabilă numită $test_var în domeniul de aplicare actual și i se atribuie o valoare șir. Accesarea unei variabile neinițializate (de exemplu, în cazul în care prima întâlnire a variabilei este într-un context lectură) poate provoca un avertisment, dar aceasta nu este o eroare în PHP.

Domeniu

Domeniul de aplicare al variabilelor declarate la nivel local (în funcții) este funcția. Acolade unghi {Și} nu începe un nou domeniu de aplicare, asa cum o fac în C + +.

Domeniul de aplicare al variabilelor declarate global este programul principal. Ele pot fi importate în funcții folosind cuvântul cheie la nivel global, dar în mod implicit, acestea nu există în domeniul de aplicare funcție. Acest lucru este opus modului în care funcționează în C + +.

Vorbind de domeniul de aplicare, există, de asemenea, operatorul scope, ::, dar spre deosebire de C + +, în cazul în care operatorul scope trebuie să fie utilizat numai în cazul în care simbolul nu este găsit altfel în tabela de simboluri curent, în PHP este întotdeauna necesar în contextele în care se poate aplica (de exemplu metode de clase statice și proprietăți).

Șabloane

PHP nu are suport pentru tipuri de șabloane ca C + +. Cu toate acestea, deoarece PHP nu face cerințe explicite cu privire la tipurile de variabile și parametri, nu este nevoie.

Referințe

Deși PHP susține referințe, ele seamănă cu C + + mai mult decât seamănă cu trimterile din C + + .

Exemplu:

$a = 5;

$b = 7;

$c = &$a; // $c este acum referinșă a lui $a

$c = 3; // schimbă valoarea lui $a

$c = &$b; // $c este acum referinșă a lui $b

$c = 3; // schimbă valoarea lui $b

$c = 'test'; // schimbă valoarea lui (și tipul lui) $b

unset($c); // acum $c nu mai există ($b este acum afectat)

$c = 9; // declară si dă valoare lui $c

Alocare de memorie și durata de viață

Nu există directive de alocare de memorie în PHP. Practic, tot ceea ce are un număr de referință. Când numărul de referință trece de zero, obiectul menționat va fi dealocat automat.

Exemplu:

class Tester

{

static public $num_instances = 0;

function _construct() { ++ self::$num_instances; }

function _destruct() { – self::$num_instances; }

};

function test()

{

$a = new Tester;

$b = new Tester;

echo "Number of Tester instances: ", Tester::$num_instances, "\n"; // gives 2

unset($b);

echo "Number of Tester instances: ", Tester::$num_instances, "\n"; // gives 1

}

echo "Number of Tester instances: ", Tester::$num_instances, "\n"; // gives 0

test();

echo "Number of Tester instances: ", Tester::$num_instances, "\n"; // gives 0

Feriți-vă: Dacă există referințe circulare în codul dumneavoastră, memoria nu va fi eliberată.

Exemplu:

$a = Array(); // crează o matrice

$a[] = &$a; // $a conține acum referință către el însuși

unset($a); // pierderi de memorie!

Structurile de comandă

C și C + + exemplu:

if(condition) statement

if(condition) statement else statement2

if(condition) statement else if(condition2) statement2 else statement3

while(condition) statement

for(expression1; expression2; expression3) statement

do statement while(condition);

Rețineți că declarația în C / C + + are un punct și virgulă la final, cu excepția cazului în care este o declarație compusă, care începe cu o {și se termină cu o}. Deoarece aceasta este o listă de sintaxă, punct și virgulă nu este inclus; se presupuse a fi inclus în aceste condiții.

PHP exemplu:

if(condition) statement

if(condition) statement else statement2

if(condition) statement elseif(condition2) statement2 else statement3

while(condition) statement

for(expression1; expression2; expression3) statement

do statement while(condition);

După cum vedeți, totul este aproape la fel, cu excepția elseif, care nu există în C + +. Utilizarea virgulei este, de asemenea, la fel ca în C + +.

Goto, etichete, pauză și continuă

PHP nu are suport „du-te” (go to) sau etichete (label).

Declarațiile pauză și continuă au aproape aceeași semantică ca în C + +, cu următoarele diferențe:

Poate fi adăugat un număr opțional după pauză.

Poate fi adăugat un număr opțional după continuă

Instrucțiunea de comutare este considerată o structură de bucle cu scopul de a continua.

Funcții

În PHP, funcțiile sunt identificate prin numele lor, și numai numele lor.

Iată câteva puncte-cheie de interes:

Nu există nici o suprasolicitare.

Nu sunt specificate tipurile de parametri. (Deși poate fi lăsat să se înțeleagă.)

Nu este specificat tipul de valoare întoarcere.

Parametri standard sunt posibili.

Parametri pot fi transmiși prin valoare sau de referință.

Aceasta nu este o eroare pentru a apela o funcție cu prea mulți parametri.

Ca și în C + +, un apel de funcție trebuie să includă paranteze, chiar dacă sunt transmise fără parametri. (Multe comenzi built-in, cum ar fi echo sunt excepții, ele sunt parte a limbii și de fapt, nu funcționează.)

Funcția nu poate fi nedefinită sau redefinită odată definită.

Nu există prototipuri funcționale. Pentru ca PHP să poată apela o funcție, definirea funcției trebuie să existe în oricare dintre modulele de cod parsate până acum. Dacă funcția nu este numită, nu este necesar să fie definită.

Exemple privind declarațiile de funcții:

function test1()

{

// această funcție nu returnează nici o valoare

}

function test2()

{

// această funcție returnează 5

return 5;

}

function add($a, $b)

{

// This function assumes the parameters

// are of some addable type (integer or float)

// (Passing strings coerces them into numerals before addition.)

return $a + $b;

}

function multiply(&$a, $factor=1)

{

// $a was passed by a reference, $factor by value (and has a default of 1)

$a *= $factor;

}

function test1($k) { } // this is an error, redefinition of a function

Variabilele declarate în interiorul funcției au domeniul funcției.

Variabilele declarate în afara funcției au domeniul de aplicare în afara funcției, dar nu in interiorul funcției (cu excepția cazului în cheie globală este utilizat).

Declarațiile de funcțiile sunt întotdeauna la nivel global, chiar dacă acestea sunt definite în altă funcție.

Exemple asupra funcției de apel:

„ test1 (); / / Apeluri test1

multiplica ($ a, 3); / / Multiplică $ a de 3

multiplica (7); / / Eroare, necesită o referință la o variabilă „

Funcții anonime (functii lambda)

Deși acest lucru nu este un concept care există în C + +, este de preferat să-l menționăm aici, de asemenea. PHP susține conceptul de funcții anonime – adică funcții care nu au nici un nume special în domeniul de aplicare la nivel global. Cu toate acestea, deoarece acestea sunt construite în timpul rulării de analiză în codul furnizat într-un parametru șir, ele sunt destul de stângace. Dar ele încă mai au utilizările lor:

„ uasort ($ myArray,

create_function ('$ a, $ b', "Strlen retur ($ a)-strlen ($ b);")

); „

Deoarece create_function () este doar o funcție de bibliotecă în loc de o construcție a limbajului, dacă se alege acest cod într-o buclă, se va analiza corpul funcției din nou și din nou la fiecare buclă, așa că are o performanțele scad în comparație cu funcțiile numite. Principala utilizare create_function () poate fi de a crea funcții definite algoritmic.

Variabilele statice, funcții locale

Ca și în C + +, cuvântul cheie static poate fi utilizat în funcții pentru a indica faptul că variabila locală păstrează valoarea în apeluri succesive.

function Test()

{

static $num_calls = 0;

++$num_calls;

print "Number of times Test() has been called: $num_calls\n";

}

Test(); Test(); Test();

Structuri de date (Array)

În principal structura de date în PHP este Array. Array este un container asociativ, care, în C + +,seamănă cu cea mai mare parte std :: harta <> și std :: vector <>.

O matrice este o colecție de perechi formate din cheie și valoarea. Tipul de cheie este un întreg, sau un șir de caractere. Aceeași matrice poate conține chei de diferite tipuri. Valoarea poate fi de orice tip. Aceeași matrice poate conține valori de diferite tipuri.

Exemplu:

$a = Array

(

5, // same as 0 => 5

7, // same as 1 => 7

3 => 11, // key is 3, value is 11

'x' => 'y', // key is 'x', value is 'y',

'moo' => file_get_contents('moo.txt')

// key is 'moo', value is the return value of that function

// (evaluated here)

);

$a[1] = 13; // changes the value corresponding to key 1 to 13

$a['x'] = 'z'; // changes the value corresponding to key 'x' to 'z'

$a[] = 19; // appends to array extending the largest numeric key,

// i.e. here it is equivalent to $a[4] = 19;

unset($a['x']); // erases an array element

$b = &$a[3]; // $b is a reference to the value corresponding to key 3

$a = Array(); // $a is now an empty array.

print $b; // prints 11 (the reference held prevents

// the previous array from being deallocated)

unset($b); // remove variable $b (also decrements the reference count

// of the previous array to zero, causing its deallocation)

Pentru a repeta prin valorile matrice, aveți posibilitatea să utilizați declarația foreach.

Rețineți că matricile nu sunt sortate în mod implicit. Mai degrabă, aceasta își păstrează ordinea în care a fost construită. Există funcții separate pentru sortarea unei matrici.

Pe lângă clasele (descrise mai jos), nu există alte structuri de date în PHP. Deoarece matricele pot fi imbricate, ele pot fi folosite în scopul de structuri arborescente și alte structuri.

Performanță Array

Module

Adesea este util pentru a pune codurile utilizate în mod obișnuit în fișiere dedicate care nu conțin un program principal; ele conțin doar funcții, constante și / sau clase. În C + +, astfel de dosare sunt numite fișiere antet; în Pascal, ele sunt unități. În PHP, ele sunt incluse în fișiere.

Ideea de bază este de a utiliza require_once a include modulele necesare. Există, de asemenea, o nevoie, care omite verificarea pentru includerea multiplă, și include_once și includ, care tratează un fișier lipsă ca un avertisment în loc de o eroare.

Puteți apela, de asemenea, declarația de includere dintr-o funcție, dar rețineți că globals definit în fișierul inclus va deveni local pentru funcția de chemare, cu excepția funcțiilor posibile pentru clasele pe care le definește.

Aici este un exemplu de bază a unui program de modulare.

Exemplu:

„ <? Php

require_once "Hellolib.php ';

printf ("% s \ n", hellotext ()); „

Clase

PHP susține programarea orientată pe obiecte care seamănă cu clasele din C + +.

Sintaxa de clasă:

class ClassName

{

// This declares some properties:

public $public_member_var;

private $private_member_var;

// This declares the constructor:

function_construct($param = 3)

{

// This sets properties. Note that

// the $this-> is a mandatory part of the syntax.

$this->public_member_var = $param;

}

// This declares the destructor:

function_destruct()

{

}

public function PublicMemberFunc()

{

// This calls a member function. Note that

// the $this-> is a mandatory part of the syntax.

$this->PrivateMemberFunc( $this->private_member_var );

// This is alternative syntax to call a member function.

self::PrivateMemberFunc( $this->private_member_var );

}

private function PrivateMemberFunc($testparam)

{

$this->public_member_var = $testparam;

}

};

Constantele de clasă

Constantele globale sunt declarate în PHP definind cuvântul cheie. Cu toate acestea, metoda de a crea constante de clasă seamănă mai mult cu modul C + +.

class TestClass

{

public const Gravity = 9.81; // Possible gotcha: Note the lack of $

function test()

{

print self::Gravity; // $this->Gravity does not work here.

}

};

Moștenire

class BaseClass

{

public $x;

function _construct() { $this->x = 'something'; }

function Moo()

{

print "I'm just a regular moo.\n";

print "My x is {$this->x}.\n";

}

};

class DerivedClass extends BaseClass

{

function Moo()

{

$this->x = 7;

print "– I'm a DerivedClass, and I moo.\n";

print "However, if I were the BaseClass, I would say:\n";

parent::Moo(); // calls BaseClass::Moo() explicitly

// BaseClass::Moo(); // this is also permissible.

}

};

$tmp1 = new BaseClass;

$tmp1->Moo(); // calls BaseClass::Moo()

$tmp2 = new DerivedClass;

$tmp2->Moo(); // calls Derivedclass::Moo()

PHP nu face funcții virtuale. Se folosesc foarte puțin deoarece PHP nu are nevoie de parametrii funcției sau de membrii unei matrici pentru a fi de un anumit tip. Puteți folosi doar un obiect de clasă derivată în care ar trebui să utilizați indicatorul BaseClass în C ++. Ca și în Java, este posibil să se definească o întreagă clasă sau unele metode de clasă finală. Acest lucru indică faptul că această clasă, sau metodă specială, nu poate fi extinsă prin moștenire, și va fi pusă în aplicare de către interpretorul de comenzi.

final class aaa // this class may never be extended

{

};

class bbb

{

final function moo() // this method may never be overloaded

{

}

};

Membrii public-privat

În C + +, membrii private și public sunt create într-o clasă de către mijloacele de secțiuni. În PHP, publicness / caracter privat este specificat individual pentru fiecare funcție membru și variabile membru.

class TestClass

{

public function PublicFunc() { }

private function PrivateFunc() { }

public $publicvar;

private $privatevar;

protected function ProtectedFunc() { }

function AlsoPublicFunc() { } // public is the default.

};

Instanța de clasă nu este un pointer

Chiar dacă membrii instanțierii sunt accesați prin intermediul operatorului „->”, care arată că accesul la pointerul C + + utilizat, de exemplu variabila nu este un pointer, și aceasta nu este o referință. Este un obiect. Din punct de vedere tehnic, pe plan intern aceste lucruri sunt puse în aplicare printr-o multitudine de indicii, dar acesta nu este un indicator în modul în care aceasta ar fi în C + +. Nu se poate schimba pentru a face referire la altceva, fără a ceea ce înseamnă a schimba conținutul variabilei și, eventual, distrugere instanțierii clasei în acest proces. În mod similar, cuvântul new nu înseamnă alocare de memorie în acest context. Aceasta este doar o parte din sintaxa care creează cazuri – este echivalent cu un apel de constructor explicit în C ++.

$stringvar = 'aiueo';

$instance = new TestClass;

printf("%s\n", gettype($stringvar)); // outputs "string"

printf("%s\n", gettype($instance)); // outputs "object"

În concluzie PHP este un limbaj de programare de tip interpretat. Aceasta înseamnă că fișierele ce conțin cod-sursă PHP sunt interpretate ca atare în momentul execuției, de către PHP pe când limbajul C++ este unul compilat. Așadar, pentru execuția unei porțiuni de cod PHP este folosit codul-sursa așa cum a fost scris el, si nu este transformat într-o formă intermediară (binara sau cod-mașină) cum se întâmplă la Java sau C/C++. Acest lucru oferă flexibilitate, întrucât orice modificare a fișierelor sursă va fi aplicată imediat la următoarea execuție, fără alți pași intermediari. Datorită faptului că limbajul este unul interpretat, PHP mai este numit și limbaj de scripting. PHP este un limbaj de programare universal, oferind toate facilitățile oricărui limbaj avansat. Codul scris în PHP poate face aproape aceleași lucruri ca un cod de C/C++ sau Java. Cu toate astea, PHP s-a impus în zona web, ca limbaj server-side, ce extinde funcționalitatea serverelor web. Din acest motiv programarea în PHP mai este denumită și programare web.

Lucrul cu baza de date MySQL

Ce este MySQL ?

MySQL (se pronunță mai-es-chiu-el) este un sistem de gestiune a bazelor de date relaționale (RDBMS – relațional database management system) foarte rapid și robust. O bază de date vă permite să stocați, să căutați și să regăsiți datele în mod eficient. Serverul MySQL controlează accesul la datele dumneavoastră pentru a garanta că mai mulți utilizatori pot lucra simultan cu acestea, pentru a oferi un acces rapid la ele și pentru a garanta faptul că au acces la ele doar utilizatorii autorizați. Deci MySQL este un server multiuser (mai mulți utilizatori) și multithread (mai multe fire de execuție). Utilizează SQL (Structured Query Language), limbajul standard de interogare a bazelor de date din toată lumea. MySQL este disponibil în mod public din 1996, dar istoria dezvoltării sale începe în 1979. A câștigat de mai multe ori Linux Journal Reader’s Choice Award (Premiul cititorului).

MySQL este disponibil sub o schemă duală de licență. Puteți să-l utilizați gratuit, sub o licență Open Source (GPL), atât timp cât vă încadrați în termenii acestei licențe. Dacă doriți să distribuiții o aplicație non-GPL care conține MySQL, atunci puteți cumpăra o licență comercială.

Avantajele utilizării unei baze de date relaționale (SGBDR- sistem de gestiune a bazelor de date relaționale) înlocuind un fișier. Printre acestea se numără următoarele:

SGBDR-urile pot oferi un acces mai rapid la date decât fișierele plate

SGBDR-urile pot interoga cu ușurință pentru a extrage seturi de date care îndeplinesc un anumit criteriu.

SGBDR-urile au mecanism încorporat pentru manevrarea accesului concurent.

SGBDR-urile oferă acces aleatoriu la date

SGBDR-urile au încorporate sisteme de privilegii.

O bază de date relațională permite răspunderea la interogări ușor în ceea ce privește locul de unde provin clienții, produsele care se vând cel mai bine sau tipul de clienti care cheltuiesc cel mai mult. Aceste informații vă pot ajuta să îmbunătățiți site-ul pentru a atrage cât mai mulți clienți.

Înainte de a prezenta elementele caracteristice unei baze de date MySQL trebuiesc înțelese următoarele:

Concepte și terminologii ale unei baze de date relaționale

Proiectarea bazelor de date pentru Web

Arhitectura bazelor de date pentru Web

Conceptele bazelor de date relaționale

Bazele de date relaționale sunt cele mai folosite baze de date. Acestea au o bază teoretică solidă în algebra relațională.

Tabelele

Bazele de date relaționale sunt formate din relații, numite de obicei tabele.

O tabelă este – exact cum îi spune și numele un tabel de date.

O foaie electronică de calcul tabelar cum ar fi „Microsoft Excel” este o tabelă de calcul relațional.

În figura 5.3.1 se poate vedea o tabelă exemplu. Aceasta conține numele și adresele clienților unei biblioteci.

Tabela are un nume (Client), câteva coloane, fiecare coloană corespunde unui alt tip de date și linii care corespund fiecare unui client.

Figura 5.3.1 Detalii despre clienții unei biblioteci

Coloane

Fiecare coloană din tabelă are un nume unic și conține date diferite. Fiecare coloană are asociat un tip de date. De exemplu, în tabela Client din figura 5.3.1, ClientID este un întreg, iar celelalte trei coloane sunt șiruri. Coloanele mai sunt numite uneori câmpuri sau atribute.

Linii

Fiecare linie din tabelă reprezintă un alt client. Datorită formatului tabelar, toate liniile au aceleași atribute. Liniile mai sunt numite și înregistrări.

Valori

Fiecare linie este formată dintr-un set de valori individuale care corespund coloanelor. Fiecare valoare trebuie să aibă tipul de dată specificat de coloana ei.

Chei

Există necesitatea de a identifica fiecare client iar numele nu reprezintă o metodă foarte bună de a face acest lucru – dacă aveți un nume comun, atunci se va înțelege de ce. De exemplu daca se deschide o carte de telefon și se cată un anumit nume, se va găsi prea multe intrări la acest nume.

Putem deosebi acest nume în mai multe moduri. Este posibil să fie singurul nume care locuiește la adresa respectivă.

Ceea ce s-a prezentat în exemplul anterior se piate întâmpla și într-o aplicație de aceea a trebuit să se atribuie un identificator „ClientID” unic pentru fiecare client. Un număr de identificare atribuit artificial poate fi garantat ca fiind unic. Puține sunt informațiile reale, chiar și combinate, care să aibă această proprietate.

Coloana de identificare dintr-o tabelă se numește cheie sau cheie primară. De asemenea, o cheie poate fi formată din mai multe coloane. Dacă, de exemplu, am alege să ne referim la un anumit nume cheia ar fi formată din coloanele Nume, Adresă și Oraș și nu se poate garanta faptul că este unică.

De obicei, bazele de date sunt formate din mai multe tabele și folosesc o cheie ca referință între tabele.

Scheme

Setul complet pentru tabelele dintr-o bază de date se numește schema bazei de date. Aceasta seamănă cu planul bazei de date. O schemă trebuie să prezinte tabelele și coloanele acestora, tipurile de date din coloane și trebuie să indice o cheie primară a fiecărei tabele și toate cheile externe. O schemă nu conține date, dar poate se va dori să se prezinte în schemă exemple de date pentru a explica rolul ei. Schema poate fi reprezentată așa cum este ea în diagramele folosite. În diagramele relațiilor dintre entități (care nu sunt prezentate în această carte) sau sub formă de text, astfel:

Customers(CustomerID, Nume, Adresă, Oraș)

Orders(OrderID, CustomerID, Amount, Date)

În schemă termenii subliniați sunt chei primare în relația în care sunt subliniați. Termenii scriși au caractere cursive și sunt chei externe în relația în care apar scriși cu caractere cursive.

Relații

Cheile externe reprezintă o relație între datele din două tabele. De exemplu, legătura dintre Orders și Customers reprezintă o relație între o linie din tabela Orders și o linie din tabela Customers.

Într-o bază de date relațională există trei tipuri de relații fundamentale. Acestea sunt clasificate în funcție de numărul de lucruri aflate de fiecare parte a relației. Relațiile pot fi de tip unu-la-unu, unu-la-mai-mulți sau mai-mulți-la-mai-mulți.

O relație unu-la-unu însemnă că se află în relație către un singur lucru din fiecare parte. De exemplu, dacă am fi plasat adresele într-o tabelă diferită de Customers, între ele ar fi o relație unu-la-unu. Puteți avea o cheie externă de la Address la Customers, sau invers (nu este necesar să existe ambele).

Într-o relație unu-la-mai-mulți, o linie dintr-o tabelă este legată la mai multe linii dintr-o altă tabelă. În aceste relații, tabela care conține mai multe linii va avea o cheie externă la tabela cu o singură linie legată.

Într-o relație mai-mulți la mai mulți, mai multe linii dintr-o tabelă sunt legate la mai multe linii dintr-o altă tabelă.

Proiectarea unei baze de date pentru Web

Pentru a ști când este nevoie de o tabelă nouă și care să fie cheia ei ține de experiență.

Când se crează o bază de date, se modelează de obicei articole și relații din lumea reală și se stochează informații despre acele obiecte și relații.

În general, fiecare clasă de obiecte din lumea reală care se modelează va avea nevoie de propria tabelă. Dacă dorim să stocăm aceleași informații despre toși clienții. Dacă există un set de date care au aceeasi formă, se poate crea ușor tabela pentru acele date.

Într-o bibliotecă dacă dorim să stocăm informații despre clienții noștri, cărțile pe care le vindem și detaliile despre comenzi. Toți clienții au un nume și o adresă. Comenzile au o dată, o sumă totală și un set de cărți care au fost comandate. Aceasta înseamnă că în baza de date avem nevoie de cel puțin trei tabele: Customers, Orders, Books. Această schemă o vom prezenta în figura 5.3.2.

BIBLIOGRAFIE

Valentin Ivașcu. Inițiere în PHP & MySQL V 2.1 Pentru PHP 4

Luke Welling, Laura Thomson. Dezvoltarea aplicațiilor Web cu PHP și MySQL Ediția a II-a

Falko Timme. The Perfect Server – CentOS 6.4 x86_64 (Apache2, Dovecot, ISPConfig 3)

http://www.howtoforge.com/perfect-server-centos-6.4-x86_64-apache2-dovecot-ispconfig-3, accesat la data de 30.01.2014

Mihvoi. Utilizare masini virtuale – vmware, virtualbox. http://mihvoi.blogspot.ro/2010/01/utilizare-masini-virtuale-vmware.html, accesat la data de 30.01.2014

Opinii (de Razvan Sandu, July 27, 2011). CentOS al 6-lea – Linux pentru servere „grele” http://ittrends.ro/2011/07/centos-al-6-lea-linux-pentru-servere-grele-2, accesat la data de 30.01.2014

CentOS Product Specifications. http://wiki.centos.org/About/Product, accesat la data de 30.01.2014

Frequently Asked Questions about CentOS in general http://wiki.centos.org/FAQ/General#head-4b2dd1ea6dcc1243d6e3886dc3e5d1ebb252c194, accesat la data de 19.02.2014

Test Area. Instalarea unei mașini virtuale Linux (partea întâi). http://ghflavian.comuv.com/index.php?t=articol&d=3, accesat la data de 20.02.2014

Kernel Crash Dump.

https://help.ubuntu.com/12.04/serverguide/kernel-crash-dump.html, accesat la data de 22.02.2014

From Wikipedia. the free encyclopedia. x86 virtualization.

http://en.wikipedia.org/wiki/X86_virtualization, accesat la data de 23.02.2014

Ce sunt PAE, NX și SSE2?.

http://windows.microsoft.com/ro-ro/windows-8/what-is-pae-nx-sse2, accesat la data de 24.02.2014

From Wikipedia, the free encyclopedia. Physical Address Extension.

http://en.wikipedia.org/wiki/Physical_Address_Extension, accesat la data de 31.03.2014

From Wikipedia, the free encyclopedia. Port forwarding.

http://en.wikipedia.org/wiki/Port_forwarding, accesat la data de 01.04.2014

De la Wikipedia, enciclopedia liberă. Sistem de nume de domeniu.

http://ro.wikipedia.org/wiki/Sistem_de_nume_de_domeniu, accesat la data de 02.04.2014

From Wikipedia, the free encyclopedia. Post Office Protocol.

http://en.wikipedia.org/wiki/Post_Office_Protocol, accesat la data de 04.04.2014

From Wikipedia, the free encyclopedia. Simple Mail Transfer Protocol.

http://en.wikipedia.org/wiki/Smtp, accesat la data de 04.04.2014

From Wikipedia, the free encyclopedia. Internet Message Access Protocol.

http://en.wikipedia.org/wiki/IMAP, accesat la data de 04.04.2014

De la Wikipedia, enciclopedia liberă. Hypertext Transfer Protocol.

http://ro.wikipedia.org/wiki/HTTP, accesat la data de 04.04.2014

Curs PHP-MySQL PHP. Introducere PHP- Hypertext Preprocessor

http://www.marplo.net/php-mysql/introducere.html, accesat la data de 02.08.2014

Manual PHP. Introducere

http://php.net/manual/ro/security.intro.php, accesat la data de 02.08.2014

A guide into PHP for C++ programmers

http://bisqwit.iki.fi/story/howto/php/, accesat la data de 03.08,2014

BIBLIOGRAFIE

Valentin Ivașcu. Inițiere în PHP & MySQL V 2.1 Pentru PHP 4

Luke Welling, Laura Thomson. Dezvoltarea aplicațiilor Web cu PHP și MySQL Ediția a II-a

Falko Timme. The Perfect Server – CentOS 6.4 x86_64 (Apache2, Dovecot, ISPConfig 3)

http://www.howtoforge.com/perfect-server-centos-6.4-x86_64-apache2-dovecot-ispconfig-3, accesat la data de 30.01.2014

Mihvoi. Utilizare masini virtuale – vmware, virtualbox. http://mihvoi.blogspot.ro/2010/01/utilizare-masini-virtuale-vmware.html, accesat la data de 30.01.2014

Opinii (de Razvan Sandu, July 27, 2011). CentOS al 6-lea – Linux pentru servere „grele” http://ittrends.ro/2011/07/centos-al-6-lea-linux-pentru-servere-grele-2, accesat la data de 30.01.2014

CentOS Product Specifications. http://wiki.centos.org/About/Product, accesat la data de 30.01.2014

Frequently Asked Questions about CentOS in general http://wiki.centos.org/FAQ/General#head-4b2dd1ea6dcc1243d6e3886dc3e5d1ebb252c194, accesat la data de 19.02.2014

Test Area. Instalarea unei mașini virtuale Linux (partea întâi). http://ghflavian.comuv.com/index.php?t=articol&d=3, accesat la data de 20.02.2014

Kernel Crash Dump.

https://help.ubuntu.com/12.04/serverguide/kernel-crash-dump.html, accesat la data de 22.02.2014

From Wikipedia. the free encyclopedia. x86 virtualization.

http://en.wikipedia.org/wiki/X86_virtualization, accesat la data de 23.02.2014

Ce sunt PAE, NX și SSE2?.

http://windows.microsoft.com/ro-ro/windows-8/what-is-pae-nx-sse2, accesat la data de 24.02.2014

From Wikipedia, the free encyclopedia. Physical Address Extension.

http://en.wikipedia.org/wiki/Physical_Address_Extension, accesat la data de 31.03.2014

From Wikipedia, the free encyclopedia. Port forwarding.

http://en.wikipedia.org/wiki/Port_forwarding, accesat la data de 01.04.2014

De la Wikipedia, enciclopedia liberă. Sistem de nume de domeniu.

http://ro.wikipedia.org/wiki/Sistem_de_nume_de_domeniu, accesat la data de 02.04.2014

From Wikipedia, the free encyclopedia. Post Office Protocol.

http://en.wikipedia.org/wiki/Post_Office_Protocol, accesat la data de 04.04.2014

From Wikipedia, the free encyclopedia. Simple Mail Transfer Protocol.

http://en.wikipedia.org/wiki/Smtp, accesat la data de 04.04.2014

From Wikipedia, the free encyclopedia. Internet Message Access Protocol.

http://en.wikipedia.org/wiki/IMAP, accesat la data de 04.04.2014

De la Wikipedia, enciclopedia liberă. Hypertext Transfer Protocol.

http://ro.wikipedia.org/wiki/HTTP, accesat la data de 04.04.2014

Curs PHP-MySQL PHP. Introducere PHP- Hypertext Preprocessor

http://www.marplo.net/php-mysql/introducere.html, accesat la data de 02.08.2014

Manual PHP. Introducere

http://php.net/manual/ro/security.intro.php, accesat la data de 02.08.2014

A guide into PHP for C++ programmers

http://bisqwit.iki.fi/story/howto/php/, accesat la data de 03.08,2014

Similar Posts