Accesul Unei Baze de Date Folosind Tehnologia Asp
I. MEMORIU TEHNIC
1.1 Introducere
Tehnologia care are la bază SSI este limitată în privința comenziilor/scripturilor permise de serverul web SSI. Producătorii paginilor web aveau nevoie de o cale pentru a intercala codul procesat dinamic in fișierele HTML în vederea procesării de către serverul web la cerere. De exemplu ce se poate întămpla dacă trebuiau definite operații care nu erau suportate de către sistemul de operare al clientului (tradițional SSI) după o logică proprie? Era nevoie de un hibrid CGI-SSI pentru ca fiecare site web să-și poată creea propriul său set de tag-uri personale. Așa a apărut ASP-ul.
ASP-ul este o extensie de tip server a serverului web IIS (Internet Information Service) realizat de Microsoft. (Apache contine MOD_ASP în acest moment deci se pot realiza pagini ASP și pe serverele Apache. De asemenea, o serie de alți producători oferă funcționalitate ASP și pentru servere non-IIS). ASP permite programatorilor să codeze tag-uri personale în VBScript sau în JavaScript. Aceste pagini pot fi interpretate de IIS înainte ca ele să fie trimise clientului.
În acest moment Apache și ActiveState produc interpretoare Perl tot mai puternice astfel încăt, în acest moment, Perl împreună cu MOD_Perl este la fel de rapid ca și ASP și oferă aceeași funcționalitate.
O pagină ASP este în principiu un simplu fișier text cu extensia .asp care conține cod HTML si script-uri. Aceste script-uri, de obicei în Vbasic implică posibilitatea includerii unei programări logice în cadrul fișierelor HTML care va fi interpretată dinamic pe măsură ce pagina web este prelucrată de serverul web și oferă de asemenea acces la orice obiect instanțiat în cadrul serverului.
Precum toate tehnologiile server, funcționalitatea oferită de ASP este transmisibilă în mod complet înspre/dinspre browser. Toate procesările au loc pe server iar rezultatele lor sunt afișate ca text HTML sau imagini. Astfel, un programator poate ușor folosi puterea Excel-ului sau PowerPoint-ului în cadrul serverului pentru a genera grafice și hărți care pot fi ușor văzute de un client ce rulează un browser care are la bază Unix-ul.
Ca și SSI-ul, ASP oferă un mijloc de specificare a ”tag-ului” cu instrucțiuni care vor fi interpretate de către server-ul web. Totuși, în mod diferit de SSI, ASP deține un set de obiecte robust care poate fi folosit pentru o programare serioasă. Oferă de asemenea abilitatea de a instanția resurse bazate pe partea de server (orice componentă COM).
ASP-ul are un întreg set de obiecte care acoperă convenabil toate aspectele cheie ale creării paginilor web dinamice.
Ierarhia de bază a obiectelor alcătuiește Scripting Context Object (care nu va fi folosit în sine) și arată în felul următor:
Fig. 1.1.1 Obiectele ASP
Obiectul Request
Obiectul Request este folosit pentru a prelua informațiile de la client care sunt trimise prin intermediul cererii HTTP. Obiectele Request și Response suportă colecțiile:
ClientCertificate – pentru preluarea câmpurilor de certificare din cadrul cererii întreprinse de serverul web. Câmpurile care pot fi cerute sunt specificate în standardul X.509
QueryString – pentru preluarea textului asemănător unui nume
Form – pentru preluarea datelor dintr-un form HTML
Cookies – pentru preluarea valorii unei aplicații de tip cookie definite anterior
ServerVariables – pentru preluarea unei informații HTTP gen numele server-ului
Obiectul Response
Obiectul Response este folosit pentru a trimite informații unui client. Acest obiect suportă doar Cookies ca și collection (pentru setarea valorilor de tip cookie). De asemenea mai suportă un număr de proprietăți și metode. Proprietățile curente suportate sunt:
Buffer – setează buffer-ul paginii trimise spre afișare de către server. Când este setat pe True, serverul nu va trimite un răspuns până când toate script-urile de pe server ale paginii curente au fost procesate, sau până când metodele Flush sau End au fost apelate.
ContentType – pentru setarea tipului conținutului (ex: text/HTML, Excel, etc.)
Expires – setează expirarea (data când datele utilizatorului respectivei pagini sunt considerate invalide) setată în minutes (ex.: expiră în 10 minutes).
ExpiresAbsolute – permite setarea datei de expirație într-un mod absolut.
Status – returneaza linia de statut (definită în specificația HTTP pentru server).
Următoarele metode (methods) sunt suportate de obiectul Response:
AddHeader – adaugă un header HTML cu o valoare specificată
AppendToLog – apelează un șir la sfârșitul fișierului log de pe serverul web
BinaryWrite – scrie date în mod binar (ex.. date tabelare în Excel )
Clear – șterge orice ieșire HTML buffer-ată.
End – stopează procesarea script-ului.
Flush – trimite toate informațiile către buffer.
Redirect – redirecționează utilizatorul spre altă locație URL
Write – permite scrierea în mediul HTML. Acțiunea poate fi realizată rin construcția
Response.write("hello")
sau comanda mai scurtă:
<%="hello"%>
Obiectul Server
Obiectul Server suportă o proprietate, ScriptTimeout, care permite setarea valorii momentului în care script-ul va fi oprit din procesare, și următoarele metode:
CreateObject – pentru crearea unei instanțe a unei componente tip server. Această componentă poate fi orice componentă care e instalată pe server (precum ActiveX ).
HTMLEncode – pentru codarea șirului specific în format HTML
MapPath – pentru maparea căii virtuale către o structură fizică de directoare. Apoi se poate aplica aceasta cale unei componente care creează acel director sau fișier specific pe server.
URLEncode – aplică codarea URL unui șir specific.
Obiectul Session
Obiectul Session este folosit pentru stocarea informației despre sesiunea curentă a utilizatorului server-ului web. Variabilele stocate cu acest obiect există atâta timp cât sesiunea utilizatorului este activă, chiar dacă se folosesc mai multe aplicații. Acest obiect suportă o metodă, Abandon, care abandonează sesiunea curentă a serverului web, distrugând orice obiect, și suportă două proprietăți, SessionID, conținând identificatorul pentru sesiunea curentă, și Timeout, care specifică o valoare de tip time-out valabilă sesiunii. Un lucru de reținut despre identificatorul sesiune: Nu e de tip GUID. Este disponibil doar atâta timp cât sesiunea web este pornită. Dacă serviciul de server-web este oprit (shut down), identificatorii vor fi reinițializați. Deci nu trebuie folosiți pentru creerea ID-urilor de tip login.
Obiectul Application
Obiectul Application poate stoca informații care rezistă pe tot parcursul aplicației (un grup de pagini cu un root comun). În general, acesta este întreg timpul cât serverul IIS funcționează. Acest lucru îl face un loc ideal de stocare a informației care trebuie să existe pe o perioadă îndelungată independentă de utilizator (precum un contor al site-ului). Partea rea a acestui tip de obiect îl constituie posibilitatea apariției unei erori care nefiind tratată în mod particular pentru fiecare utilizator ar putea apărea de mii de ori precum un mesaj de alertă general.
Deoarece obiectul Application este accesibil tuturor utilizatorilor, threading-ul poate deveni un coșmar în implementare.
1.2 Modelul paginilor de server active (ASP)
Un script ASP începe să ruleze cănd un browser solicită un fișier .asp de pe serverul web. În acel moment serverul web apelează fișierul .asp, execută local toate comenzile acestuia pas cu pas și trimite pagina HTML browser-ului client.
Astfel nu poate apărea problema ca browser-ul client să nu știe interpreta instrucțiunile respective deoarece serverul special configurat se ocupă de întregul proces
Paginile de server active pot fi folosite sub următoarele servere web:
Microsoft Internet Information Server, versiunea 3.0 sub Windows NT. Server
Microsoft Peer Web Services, versiunea 3.0 sub Windows NT. Workstation
Microsoft Personal Web Server sub Windows 95/98
Fig. 1.2.1 Modelul ASP
Un fișier ASP este un fișier text care poate conține combinații de:
text
tag-uri HTML
comenzi de tip script. Acestea specifică computerului să facă o operație, de pildă să atribuie o valoare unei variabile.
Tot o comandă de acest tip specifică server-ului web să trimită o variabilă browser-ului. O astfel de operație este realizată de o expresie de tip output.
Un script mai poate combina comenzile în proceduri. O procedură este o secvență de comenzi și propoziții care are un nume și acționează ca o unitate.
Execuția script-ului implică trimiterea unei serii de comenzi unui motor de tip script care le va interpreta și retransmite computer-ului. Script-urile sunt scrise în limbaje care au reguli specifice, de aceea pentru posibilitatea rulării lor trebuie folosit un interpretor care înțelege
limbajul folosit. ASP oferă suport de tip script pentru limbajele VBScript și Jscript. Limbajul scripting primar, daca nu se specifică este implicit VBScript.
Din punct de vedere al sintaxei, ASP nu este un limbaj de tip script, dar oferă un mediu de procesare a script-urilor incorporabil în fișierele HTML.
Tag-urile HTML se diferențiază de text prin intermediul delimitatorilor. Un delimitator reprezinta un caracter sau o secvență de caractere care marchează începutul și sfărșitul unei unități. În cazul HTML-ului, se folosesc pe post de delimitatori caracterele < și > .
Similar, ASP-ul folosește delimitatorii <% și %>. De exemplu comanda
<%rubrică=”sport”%>
atribuie parametrului rubrică valoarea”sport” (de tip text).
Pentru expresiile de tip output se folosesc delimitatorii <%= %>. Pentru exemplul de mai sus, expresia:
<% =rubrică%>
trimite spre browser textul “sport”.
Unul din marile avantaje ale acestei tehnologii îl constituie posibilitatea de acces la o bază de date într-un mod mult mai securizat, ținănd cont că toate operațiile au loc pe server. Astfel a fost necesar integrarea unor instrucțiuni specializate în lucrul cu bazele de date.
Avănd în vedere cererea pe piață la scară mare a programelor care să realizeze diferite sarcini cu aplicatibilitate preponderentă în domeniul contabilității, al comerțului electronic, s-a încercat realizarea unui suport căt mai bun pentru această gamă de aplicații în tehnologie ASP.
Un desen reprezentativ al celor spuse puțin mai sus ar arăta în felul următor:
Fig. 1.2.2 ASP-ul intermediază schimbul de informații
dintre client si baza de date
Considerănd benefică aceasta introducere în tehnologia ASP, se va trece mai departe la studiul teoretic al temei proiectului, anume latura ASP care se ocupă cu accesul la o bază de date. Mai întăi se vor explica principiile care stau la baza realizării accesului, urmănd ca pe parcurs să se explice metoda optimă aleasă pentru realizarea legăturii între aplicația ASP și baza de date.
1.3 Baze de date
Avantajul utilizării bazelor de date este binecunoscut utilizatorilor familiarizați cu aplicațiile care necesită o stocare pe anumite criterii a informației care va putea fi apoi accesată ușor, în funcție de criteriile dorite.
Printre cele mai puternice editoare de baze de date se numără Microsoft Access si SQL.
Pentru început se va face o comparație între aceste două medii urmând a se explica în detaliu modalitatea de acces prin intermediul unei pagini ASP la o bază de date creată cu Microsoft Access 2000.
Comparație între Access 97/2000 și SQL Server 7.0/2000
În această parte vor fi prezentate câteva caracteristici generale ale Access 97/2000 și SQL Server 7.0/2000, restricțiile acestora precum și comparația dintre aceste produse.
Access 97/2000
Microsoft oferă o familie întreagă de unelte de tip bază de date în variantă desktop,
server, și pentru conectivitate deschisă. Pentru desktop Microsoft oferă Microsoft Access 97/2000. Microsoft Access 97/2000 este un sistem foarte dotat în managementul
bazelor de date relaționale multi-utilizator destinat sistemelor de operare Microsoft Windows (precum Windows9x, Windows NT, Windows2000). Access 97/2000 este vizual orientat și ușorelor care să realizeze diferite sarcini cu aplicatibilitate preponderentă în domeniul contabilității, al comerțului electronic, s-a încercat realizarea unui suport căt mai bun pentru această gamă de aplicații în tehnologie ASP.
Un desen reprezentativ al celor spuse puțin mai sus ar arăta în felul următor:
Fig. 1.2.2 ASP-ul intermediază schimbul de informații
dintre client si baza de date
Considerănd benefică aceasta introducere în tehnologia ASP, se va trece mai departe la studiul teoretic al temei proiectului, anume latura ASP care se ocupă cu accesul la o bază de date. Mai întăi se vor explica principiile care stau la baza realizării accesului, urmănd ca pe parcurs să se explice metoda optimă aleasă pentru realizarea legăturii între aplicația ASP și baza de date.
1.3 Baze de date
Avantajul utilizării bazelor de date este binecunoscut utilizatorilor familiarizați cu aplicațiile care necesită o stocare pe anumite criterii a informației care va putea fi apoi accesată ușor, în funcție de criteriile dorite.
Printre cele mai puternice editoare de baze de date se numără Microsoft Access si SQL.
Pentru început se va face o comparație între aceste două medii urmând a se explica în detaliu modalitatea de acces prin intermediul unei pagini ASP la o bază de date creată cu Microsoft Access 2000.
Comparație între Access 97/2000 și SQL Server 7.0/2000
În această parte vor fi prezentate câteva caracteristici generale ale Access 97/2000 și SQL Server 7.0/2000, restricțiile acestora precum și comparația dintre aceste produse.
Access 97/2000
Microsoft oferă o familie întreagă de unelte de tip bază de date în variantă desktop,
server, și pentru conectivitate deschisă. Pentru desktop Microsoft oferă Microsoft Access 97/2000. Microsoft Access 97/2000 este un sistem foarte dotat în managementul
bazelor de date relaționale multi-utilizator destinat sistemelor de operare Microsoft Windows (precum Windows9x, Windows NT, Windows2000). Access 97/2000 este vizual orientat și ușor de folosit. O aplicatibilitate mare își găsește în cadrul meniurilor drag-and-drop, în designul vizual pentru chestionare, form-uri și rapoarte.
Access 97/2000 vine cu un mediu de dezvoltare integrat (IDE), incluzând o compilare incrementală, un debugger full interactiv vizual, puncte tip break, etc. Aceste capabilități se
combină și fac din Microsoft Access o platformă puternică pentru dezvoltarea soluțiilor bază de date client-server.
Iată caracteristicile generale ale Access 97/2000:
Deși mărimea maximă a unei baze de date este de 1 Gb, baza de date poate include legături spre tabele în alte fișiere, iar mărimea totală este limitată doar de capacitatea memoriei disponibile.
Numărul de caractere într-un câmp de date poate atinge 65,535 caractere în momentul introducerii datelor prin intermediul interfaței utilizator sau poate atinge 1 Gb când datele sunt introduse programat.
Access 2000 poate închide nivelul rând în comparație cu Access 97.
SQL Server 7.0/2000
Pentru un motor de tip server în soluțiile client-server Microsoft oferă Microsoft SQL Server 7.0/2000.
Nu există atât de multe diferențe în arhitectura internă între SQL Server 7.0 și SQL Server 2000. SQL Server 2000 oferă aceleași opțiuni ca și SQL Server 7.0: funcții de auto-creștere, motor nou de stocare, capabilitatea de închidere la nivel de rând etc. Deci, caracteristicile generale ale acestor versiuni sunt identice.
Iată caracteristicile generale ale SQL Server 97/2000:
SQL Server 2000 Enterprise Edition pe o platformă Windows 2000 DataCenter
poate suporta până la 32 de procesoare și adresa 64GB de memorie fizică (RAM) pe un
computer!
1.4 Acces ASP la bazele de date
Componenta de acces la baza de date folosește obiecte de date active (ADO) în vederea unui acces simplu la informațiile stocate într-o baza de date (sau într-o altă structură tabelară) care se potrivește cu standardul ODBC (Open Database Connectivity).
Pentru a putea avea acces la o bază de date, vor trebui parcurși o serie de pași care implică câteva etape bine stabilite ce trebuiesc urmate consecutiv:
Stabilirea locației bazei de date (în ideea în care este deja creeată).În exemplul următor vom creea baza de date în ambele variante expuse anterior și anume folosind Microsoft Access 2000 respectiv SQL Server 7.0
Stabilirea unei legături ODBC cu numele sursei de date (DNS)
Crearea paginii ASP care realizeauă accesul propriu zis
Aceste etape vor fi detaliate acum în parte:
1. Ca și exemplu am ales o bază de date simplă care include un tabel cu profiturile realizare zilnic de o anumită firmă. Tabelul se numește Diagrama, conține 2 coloane etichetate Data respectiv Profitul și mai multe înregistrări ce reprezintă zilele lunii iunie ale anului curent în care se vor stoca profiturile aferente.
1.4.1 Varianta Microsoft Access 2000
Se lansează Microsoft Access 2000 din pachetul MS Office 2000.
Se acționează butonul New , moment în care va apărea o rubrică gen:
Fig. 1.4.1 Crearea unei noi baze de date .mdb
Se selectează opțiunea Database și se specifică numele fișierului sub care se va salva noua bază de date: în cazul de față profit.mdb. Apoi se va selecta Create table by entering data ceea ce va duce la posibilitatea introducerii valorilor dorite pe rubrici. La sfârșit, tabelul va trebui să aibă o formă gen:
Fig. 1.4.2 Completarea tabelului cu datele dorite
Acum se va trece la salvarea bazei de date. În momentul selectării opțiunii Save Us, utilizatorul va introduce numele tabelului de referință pentru un viitor acces.(valoarea implicită este Table1). Pentru exemplul nostru se va tasta Diagrama.
Fig. 1.4.3 Salvarea tabelului sub numele dorit
Dacă se dorește specificarea unei parole de acces la baza de date creată se va:
Selecta opțiunea Tools -> Security -> Set Database Password…
Fig. 1.4.4 Setarea parolei bazei de date
De asemenea tot din cadrul meniului Tools ->Security dar prin selectarea opțiunii User and Group Accounts… se pot specifica permisiunile utilizatorilor care vor accesa baza de date:
Fig. 1.4.5 Setarea permisiilor utilizatorilor și grupurilor
Astfel am creat baza de date profit.mdb.Mai jos este ilustrat modul final în care trebuie să apară noua bază de date.
Fig. 1.4.6 Imagine finală a bazei de date create
În continuare se vor ilustra pașii necesari pentru a crea o bază de date identică dar utilizand de această dată SQL Server 7.0.Apoi se vor explica pe rând pașii 2. și 3. rămași pentru accesul la înregistrările noi create.
Varianta SQL Server 7.0
Se deschide SQL Server 7.0 Enterprise Manager (Start ( Programs (SQL Server 7.0 (Enterprise Manager). Se extinde arborele Enterprise Manager selectându-se Server-ul SQL sub care se adaugă baza de date până se ajunge la rubrica Database.
Fig. 1.4.7 Crearea unei noi baze de date sub SQL
Se dă click dreapta pe nodul Database și se selectează opțiunea ”New Database…”
În cadrul căsuței ”Database Properties” se introduce în câmpul Name
.
Fig. 1.4.8 Denumirea bazei de date – Profit
Click pe butonul OK.
Până acum am creat baza de date profit unde vom putea introduce viitoarele tabele.
Pentru a crea tabelul Diagrama se vor parcurge următorii pași:
Se extinde nodul Database din Enterprise Manager.
Se dă click dreapta pe nodul profit.
Se selectează opțiunea New -> Table. În cadrul dialogului Choose Name se introduce în dreptul rubricii Enter a name for the table numele tabloului și anume Diagrama.
Se acționează butonul Ok. În dreptul cutiei de dialog Add Table se vor introduce informațiile dorite.
Seînchide fereastra de dialog New Table.
Astfel s-a creat și tabelul dorit în interiorul bazei de date. Pentru a adăuga date în cadrul tabelului Diagrama se va extinde nodul bazei de date profit din Enterprise Manager și:
Se dă dublu-click pe Tables iar în dreapta Manager-ului Enterprise se va activa click dreapta pe Diagrama.
Se selectează Open Table -> Return all rows urmând ca în cadrul opțiunii Data in table Diagrama să se introducă datele dorite.
Fig. 1.4.9 Completarea tabelului Diagrama
Acum, ținând cont că avem baza de date completată este nevoie de realizarea unei conexiuni ODBC cu baza de date. Pentru aceasta se vor realiza următoarele sarcini:
Se deschide Start -> Setting-> Control Panel. Se dă dublu-click pe icoana Data Sources (ODBC) din Control Panel.
Se selectează System DSN din fereastra de dialog ODBC Data Source Administrator.
Click pe butonul Add. În fereastra Create New Data Source se marchează SQL Server Se dă click pe Finish
Fig. 1.4.10 Realizarea conexiunii ODBC
Acum, în fereastra Create a New Data Source to SQL Server se va:
Introduce profit în câmpul Name. De data aceasta nu specifică numele bazei, ci al DSN-ului.. S-a păstrat același nume doar pentru simplitate, deși din considerente de securitate nu e o idee chiar atât de bună.
În interiorul câmpului Description , se introduce o scurtă descriere a DSN-ului. Aici s-a scris Profit Sample DSN.
Din căsuța Server, se selectează Serverul SQL la care va avea loc conexiunea. Deoarece, instanța SQL Server există pe aceeași mașină unde s-a creat DSN-ul, se va selecta (local).
Click pe butonul Next.
Fig. 1.4.11 Atașarea conexiunii de serverul SQL
În cadrul celei de-a doua ferestre de dialog Create a New Data Source to SQL Server:
Se selectează butonul de tip radio With SQL Server authentication using a login ID and password entered by the user pentru a indica tipul securității bazei -implementată de SQL Server și nu de Windows NT.
Se selectează opțiunea Connect to SQL Server to obtain default settings for the additional configuration options.
La rubrica Login ID se introduce ”sa” de exemplu.
Se lasă rubrica Password goală.
Click pe butonul Next.
Notă: S-a folosit "sa" pentru login ID împreună cu o parolă în alb de conveniență. Acesta este stilul default de administrare al contului pentru SQL Server. Din nou, specific faptul că doresc să arăt modalitatea de creare a bazei de date și a legăturii și nu alte considerente de implementare a securității.
Fig. 1.4.12 Specificarea unui eventual cont de login-izare și a parolei
În cadrul celei de-a treia ferestre de dialog Create a New Data Source to SQL Server:
Se selectează Change the default database și se alege Diagrama din opțiunea de sus.
Click pe butonul Next.
Fig. 1.4.13 Terminarea procesului
În cadrul celei de-a patra ferestre de dialog Create a New Data Source to SQL Server:
Click pe butonul Finish.
Fig. 1.4.14 Stabilirea ultimelor setări
În cadrul ferestrei de dialog ODBC Microsoft SQL Server Setup se va da:
Click pe Test Data Source. . . butonul de asigurare a conexiunii ODBC corect create.
Click pe butonul OK pentru completarea procesului de setup ODBC DSN.
În final SQL va afișa toate caracteristicile și setările bazei de date create împreună cu
datele conexiunii ODBC:
Fig. 1.4.15 Ecran final cu afișarea tuturor setărilor
Am creat bazele de date, tabelul cu informațiile dorite și conexiunea ODBC DSN. Următorul pas va evidenția modalitatea de compunere a codului paginii ASP pentru accesarea datelor.
Ținând cont că aplicația implementată accesesază baze de date create în Microsoft Access 2000 (de tip .mdb) deoarece nu s-a justificat alegerea unor baze de date sub SQL Server 7.0, pasul 3 rămas va fi explicat pentru varianta de acces a unei astfel de baze.
1.5 Crearea paginii ASP
1. Se începe cu codul ASP script standard în care se specifică limbajul folosit VBScript
și modul de specificare în pagină:
<% @LANGUAGE="VBSCRIPT" %>
<%
Option Explicit
2. Se dimensionează toate variables care vor fi folosite:
Dim Conn, rs
3. Se creeaza Conexiunea și obiectele tip Record:
set conn=Server.CreateObject("ADODB.Connection")
set rs = Server.CreateObject("ADODB.recordset")
4. Se setează conexiunea obiectelor conform standardului OLEDB:
conn.Provider="Microsoft.Jet.OLEDB.4.0"
5. Se deschide conexiunea:
conn.Open(Server.Mappath("profit.mdb"))
6. Se deschid înregistrările și are loc poziționarea pe prima înregistrare:
rs.open "Diagrama", conn, 2, 2
rs.movefirst
7. Se stabilește tipul tabelului HTML:
Response.Write ("<TABLE BORDER=1 CELLPAADING=0 CELLSPACING=0 ALIGN=CENTER>" & "<tr>")
8. Folosind un ciclu valid până în momentul terminării înregistrărilor se afișează pe ecran conținutul bazei de date profit.mdb , totul aranjat în tabelul nou construit:
do until rs.EOF
Response.Write ("<td>")
Response.Write rs("DATA")
Response.Write ("</td>")
Response.Write ("<td>")
Response.Write rs("PROFITUL")
Response.Write ("</td>")
Response.Write ("<tr>")
rs.MoveNext
Loop
Response.Write("</table>")
9. Se închid toate obiectele de referință:
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
%>
Acesta este codul sursă pentru realizarea accesului la baza de date profit.mdb
Lansând browser-ul Internet Explorer 5.0 și tastând
http://localhost/numefișier.asp
va apărea un tabel cu datele scoase din Diagrama.
Tabelul este ilustrat în figura de pe pagina următoare.
Fig. 1.5.1 Accesarea conținutului fișierului profit.mbd
Așadar acesta ar fi modul optim de fișier tip ASP pentru un acces la o bază de date.
În continuare se vor studia punctele cheie ale aplicației care însoțește acest proiect.
II. BREVIAR DE CALCUL
2.1 Introducere în aplicație
Persoanele care accesează frecvent rețeaua Internet în zilele de astăzi pot remarca prezența tot mai mare a site-urilor realizate în format .asp sau .jsp care sunt specializate în domenii gen comerțul electronic. Din ce în ce mai des apare conceptul de cumpărare on-line,
fapt ce implică în general posibilitatea unui acces structurat, dinamic și eficient către o bibliotecă de date sortate pe domeniile de utilizare a firmei respective.
Utilizatorul conectat poate selecta produsul dorit și apoi transmite o cerere de cumpărare care
duce la procesul de validare a unui mijloc de plată (gen VISA CARD, MASTER CARD, AMERICAN EXPRESS CARD, sau cec). În acest moment aplicația (interconectată cu minim o bancă pentru verificarea existenței cardului introdus de client drept sursă de plată) va ști să realizeze tranzacția propriu-zisă și va semnala serviciului de mesagerie toate datele necesare pentru buna livrare a produsului comandat la adresa specificată. Avantajele unor asemenea servicii este imens: singurele greutăți care pot apărea sunt cele din punct de vedere al securității și al posibilității semnării unor astfel de înțelegeri cu anumite bănci.
Aplicația ce va fi prezentată simulează o firmă virtuală RAIDOMI care are ca domeniu de activitate comercializarea de componente și sisteme de calcul. Nefiind obiectul principal al proiectului, gradul de securizare al aplicației este mediu; ceea ce se va studia este modul de acces al informașiei stocate în fișierele de tip mdb de pe server prin intermediul paginilor ASP.
O detaliere a facilităților aplicației ar include posibilitatatea de:
creere a unui cont personalizat în cadrul site-ului (sign-up pentru clienți)
accesare (login) a conturilor în diferite ipostaze gen (client, contabil , patron)
modificare a datelor personale (pentru clienți)
download a ofertei de componente (pentru clienți)
vizualizare a ofertelor personalizate (prețuri variabile în funcție de investițiile efectuate în trecut – pentru membrii)
cumpărare pe componente sau în sistem (pentru membrii)
testare (de tip benchmark) pe diferite domenii gen programare,multimedia,jocuri comandare a anumitor componente sau al sistemului dorit (pentru membrii)
notificare rapidă prin SMS a comenzii dorite persoanei de contact (pentru membrii)
verificare a stocurilor firmei precum și modificarea acestora (doar pt. contabil)
înregistrare a profitului realizat prin comercializarea componentelor (doar pt. contabil)
aducere la zi a sumelor investite de clienții fideli ai firmei (doar pt. contabil)
vizualizare a profitului în orice moment pe ziua respectivă (doar pt. patron)
În continuare se vor explica punctele cheie ale programului menționat mai sus.
Vor fi studiate sursele importante de tip ASP care tratează diferitele situații enumerate anterior. Pentru o bună înțelegere a aplicației vor fi prezentate mai întâi organigramele fișierelor ASP.
2.2 Organigramele surselor ASP principale
1. NEWMEMB.ASP – fișier care are ca scop crearea unui nou membru al firmei (nou client)
2. MEMBSUBM.ASP – fișier care realizează partea de acces al unui cont existent (pt. membrii-clienții care au cont deja creat)
3. UPDMEM.ASP – fișier care permite modificarea datelor personale din cont (pt. membrii-clienții care au deja un cont creat)
4. CODCOMP.ASP – fișier rezervat secțiunii de cumpărare pe componente. Clientul poate selecta ce componente dorește (multiplă selecție mărește nr. de bucăți)
5. CODSIS.ASP – fișier rezervat secțiunii de cumpărare a unui sistem întreg. Clientul își va selecta pe rând componentele (poate chiar renunța la alegerea câtorva)
2.3 Instrucțiuni folosite în cadrul fișierelor ASP cheie
Din motive de spațiu, nu se vor explica instrucțiunile care țin de partea HTML ci doar script-urile ASP care realizează acțiunile mai importante:
Codcomp.asp
Acest fișier se ocupă de secțiunea rezervată cumpărăturilor pe componente. Utilizatorul va putea selecta tipul componentelor dorite precum și numărul de bucăți al fiecăreia.
Principalele comenzi date în cadrul fișierului sunt:
<%
Session("LOGIN")=2
If Session("n")>-1 THEN
Session("Prettotal")=Session("Prettotal")+Request.QueryString("varPret")
Response.Write(Session("Prettotal"))
End IF
%>
variabila Login ia valoarea 2. Se testează starea în care ne aflăm și se reactualizează prețul
comenzii care se va afișa pe ecran:
<%
Session("n")=Session("n")+1
IF Session("n")=0 THEN
dim cosc(4,20)
Session("CUMPCOS")=cosc
Response.End
End If
dim bal,randn,balv
randn=0
balv=0
se incrementează valoarea lui n deoarece s-a dat comanda unei achiziții. Dacă este pentru
prima dată atunci au loc definirile de tablou general și variabile locale. Tabloul trebuie apoi mapat spre un obiect numit aici CUMPCOS (înainte de părăsirea paginii).
cosc=Session("CUMPCOS")
for bal=1 to Session("n")
If cosc(1,bal)=Request.QueryString("varModel") THEN randn=1
Session("CUMPCOS")=cosc
next
se preia din obiectul CUMPCOS tabelul stocat în matricea cosc. Apoi se verifică dacă
rubrica componentei pe care s-a dat click este aceeași cu cea așteptată.
If randn=1 THEN Session("n")=Session("n")-1
If randn=0 THEN cosc(0,Session("n"))=Request.QueryString("varProd")
If randn=0 THEN cosc(1,Session("n"))=Request.QueryString("varModel")
If randn=0 THEN cosc(2,Session("n"))=cosc(2,Session("n"))+rand+1
If randn=0 THEN cosc(3,Session("n"))=Request.QueryString("varPret")
If randn=0 THEN cosc(4,Session("n"))=Request.QueryString("Rubr")
If randn=1 THEN cosc(2,Session("balv"))=cosc(2,Session("balv"))+1
Session("CUMPCOS")=cosc
for bal=1 to Session("n")
în caz de corespondență, se salvează în matricea cosc caracteristicile componentei
selectate și apoi se începe ciclul de afișare a tabelului.
<%Response.Write(Session("CUMPCOS")(0,bal))%> 
<%Response.Write(Session("CUMPCOS")(1,bal))%></font></i></b></td>
<td width="25" align="center"><b><i><font face="Arial" color="#00FF99" size="1">
<%Response.Write(Session("CUMPCOS")(2,bal))%></font></i></b></td>
<td width="30" align="center"><b><i><font face="Arial" color="#00FF99" size="1">
<%Response.Write(Session("CUMPCOS")(3,bal))%></td></font></font></tr><font color="#FF0000" size="4"><font color="#FF0000" size="4">
<%next%>
acestea sunt comenzile pentru afișarea unui rând ân cadrul paginii ce va fi trimise spre
utilizator.
Codsis.asp
Fișierul este rezervat cumpărăturilor de sisteme complete de calcul (se poate renunța doar la componentele care nu sunt primordiale gen kituri multimedia etc.)
<%
Session("LOGIN")=2
Session("Link")="codsis.asp"
Dim Comptabel(1,16),bal,varFMPR,varFSBBIOS,adun
Comptabel(1,1)="PLACA DE BAZA"
Comptabel(1,2)="PROCESOR"
Comptabel(1,3)="COOLER"
Comptabel(1,4)="MEMORIE"
Comptabel(1,5)="HARDDISK"
Comptabel(1,6)="FLOPPY"
Comptabel(1,7)="PLACA VIDEO"
Comptabel(1,8)="CDROM"
Comptabel(1,9)="DVD"
Comptabel(1,10)="CDWRITER"
Comptabel(1,11)="SOUND CARD"
Comptabel(1,12)="BOXE"
Comptabel(1,13)="MONITOR"
Comptabel(1,14)="CARCASA"
Comptabel(1,15)="TASTATURA"
Comptabel(1,16)=""
%>
la început se definesc variabilele. De această dată algoritmul e puțin mai dificil deoarece
trebuie urmată o procedură ordonată de cumpărare și nu aleatoare. În acest scop se definește un vector Comptabel care conține informația referitoare la rubricile ce pot fi selectate.
<%
adun=1
Session("n")=Session("n")+1
If Request.QueryString("Rubr")=Comptabel(1,Session("n")) Then adun=0
If (Session("n")-adun)=5 or (Session("n")-adun)>6 and (Session("n")-adun)<15 Then%>
<a href="codsis.asp?varModel=-&varProd=-&varPret=0&Rubr=<%=Comptabel(1,Session("n")-adun+1)%>" target="drsus"><font face="Times New Roman" size="2"><span style="background-color: #000080">NU DORESC COMPONENTA</span></font></a></font></i></b></p>
<%End IF%>
acum urmează un artificiu interesant: deoarece la fiecare alegere se incrementează
variabila n cu 1 (chiar dacă s-a ales o componentă dintr-o rubrică greșită) se inițializează variabila adun cu 1 sau 0 în funcție de caz. Astfel diferența (n-adun) va fi aceeași în ambele cazuri iar opțiunea Nu doresc componenta va apărea doar atunci când trebuie și va putea fi aleasă pentru saltul respectiv. Dacă se alege atunci are loc o reapelare a aceeași pagini dar cu informația cuvenită în plus, permitând astfel afișarea tabelului nou (în care este specificat vizual nealegerea componentei respective.De asemenea prețul total nu se modifică.)
IF Comptabel(1,Session("n"))=Request.QueryString("Rubr") THEN
coss(0,Session("n"))=Request.QueryString("varProd")
coss(1,Session("n"))=Request.QueryString("varModel")
coss(2,Session("n"))=Request.QueryString("varPret")
IF Session("n")=1 THEN coss(0,22)=Request.QueryString("varFSBMB")
IF Session("n")=2 THEN coss(0,21)=Request.QueryString("varFSBPR")
IF Session("n")=2 THEN coss(0,20)=Request.QueryString("varFRPR")
IF Session("n")=2 THEN coss(0,19)=Request.QueryString("varVIOPR")
IF Session("n")=4 THEN coss(0,18)=Request.QueryString("varFSBMEM")
IF Session("n")=4 THEN coss(0,17)=Request.QueryString("varCantMEM")
IF Session("n")=1 THEN coss(1,17)=Request.QueryString("varNotaMB")
IF Session("n")=2 THEN coss(1,18)=Request.QueryString("varNotaPROC")
IF Session("n")=4 THEN coss(1,19)=Request.QueryString("varNotaMEM")
IF Session("n")=5 THEN coss(1,20)=Request.QueryString("varNotaHDD")
IF Session("n")=7 THEN coss(1,21)=Request.QueryString("varNotaPVIDEO")
IF Session("n")=8 THEN coss(1,22)=Request.QueryString("varNotaCDROM")
IF Session("n")=9 THEN coss(2,17)=Request.QueryString("varNotaDVD")
IF Session("n")=10 THEN coss(2,18)=Request.QueryString("varNotaCDW")
IF Session("n")=11 THEN coss(2,19)=Request.QueryString("varNotaSOUNDB")
IF Session("n")=12 THEN coss(2,20)=Request.QueryString("varNotaBOXE")
IF Session("n")=13 THEN coss(2,21)=Request.QueryString("varNotaMON")
Else
Session("n")=Session("n")-1
End If
Session("CUMPCOS")=coss
for bal=1 to Session("n")
%>
dacă rubrica coincide, au loc definirile cuvenite. De data aceasta, pentru anumite momente
ale constituirii sistemului au loc și câteva definiri care vor folosi în momentul testării sistemului (pentru rubrica rezervată simulării capturii dinamice a bios-ului). În caz contrar, bineînțeles, se decrementează variabila n. La sfârșit se salvează totul în obiectul CUMPCOS.
Apoi începe într-un ciclu afișarea cuvenită.
<%If bal<16 THEN %><p align=”center”><b><font color=”#CC0099” size=”2”>PAS <%=(Session(“n”)+1)%>. SELECTATI <%Response.Write (Comptabel(1,Session(“n”)+1))%></font></b></p>
<%
End If
până când nu s-au epuizat rubricile, adică bal<16, se va afișa:
(valoare) n. Selectați Rubrica (valoare) n
If Session("n")=15 and Request.QueryString("Rubr")="TASTATURA" THEN
varFMPR=int(coss(0,20)/126*2)/2
varFSBBIOS=133
If coss(0,22)=200 or coss(0,21)=100 or coss(0,18)=100 Then
varFMPR=coss(0,20)/100
varFSBBIOS=100
End If
If coss(1,8)="-" Then coss(1,8)="None"
If coss(1,9)="-" Then coss(1,9)="None"
If coss(1,10)="-" Then coss(1,10)="None"
%>
după alegerea completă a componentelor are loc stabilirea frecvenței la care va funcționa
ansamblul (placă de bază, procesor, memorie). De asemenea se mai stabilesc și dispozitivele care vor fi atașate cablurilor PRIMARY, SECONDARY MASTER&SLAVE. În caz că nu au fost selectate va apărea în BIOS bineînțeles NONE.
Testare.asp
În momentul în care utilizatorul dorește să afle comportarea sistemului ales în aplicațiile tip Programare, Multimedia, Jocuri accesează prin intermediul comenzii Testează sistemul fișierul testare.asp. Acesta preia toate informațiile din fișierul codsis.asp și furnizează o captură dinamică a bios-ului (simulare) precum și partea de benchmark.
<%
'SECTIUNEA DE BENCHMARK A SISTEMULUI
dim benchm1,benchm2,benchm3,coss,norm1,norm2,norm3
coss=Session("CUMPCOS")
norm1=62/370
norm2=62/450
norm3=62/200
benchm1=int((coss(1,17)*4+coss(1,18)*5+coss(1,19)*5+coss(1,20)*3+coss(1,21)*10+coss(1,22)*2+coss(2,19)*3+coss(2,20)*2+coss(2,21)*3)*norm1)
benchm2=int((coss(1,17)*4+coss(1,18)*5+coss(1,19)*5+coss(1,20)*5+coss(1,21)*6+coss(1,22)*4+coss(2,17)*3+coss(2,18)*4+coss(2,19)*4+coss(2,20)*3+coss(2,21)*2)*norm2)
benchm3=int((coss(1,17)*5+coss(1,18)*6+coss(1,19)*5+coss(1,20)*2+coss(2,21)*2)*norm3)
Session("CUMPCOS")=coss
%>
fiecare tip de componentă intervine în proporții diferite în funcție de aplicație. Pe baza
formulelor adecvate se va calcula competivitatea sistemului în cele 3 domenii enumerate, rezultând valorile benchm1, benchm2, benchm3.
<tr>
<td width="173"><table border="0" cellpadding="0" cellspacing="0" width="3*<%=benchm1%>"><%for i=1 to benchm1%><td width="3"><img border="0" src="unit.gif"></td><%next%></table></td>
<td width="27"><font size="2" color="#FFFFFF"><b><%Response.Write (i*3*12)%></td>
<td width="171"><table border="0" cellpadding="0" cellspacing="0" width="3*<%=benchm2%>"><%for i=1 to benchm2%><td width="3"><img border="0" src="unit.gif"></td><%next%></table></td>
<td width="28"><font size="2" color="#FFFFFF"><b><%Response.Write (i*3*12)%></td>
<td width="183"><table border="0" cellpadding="0" cellspacing="0" width="3*<%=benchm3%>"><%for i=1 to benchm3%><td width="3"><img border="0" src="unit.gif"></td><%next%></table></td>
<td width="23"><font size="2" color="#FFFFFF"><b><%Response.Write (i*3*12)%></td>
</tr>
metoda de simulare tip “fluid” a testelor benchmark este realizată prin intermediul unor
tabele care într-un ciclu până la o valoare specificată afișează câte o imagine de culoare diferită pentru fiecare sistem etalon existent.
2.4 Tehnici de bază folosite în cadrul fișierelor ASP
Aplicația conține toate cele 4 tehnici (găsite pe web) de preluare a unor informații de la utilizator și transmitere a acestora spre alte fișiere pentru prelucrări ulterioare:
Trecerea variabilelor de la o pagină la alta este una din cele mai importante sarcini într-o aplicație de tip ASP.
În exemplele ce vor fi date se vor folosi 2 variabile: nume și vârstă.
Metoda GET
FIȘIER : SENDING.HTML
<form name="sending" method="GET" action="getting.asp" target="_self">
</FONT><font size="2">Nume :</font><br>
<input name="nume" size="22" >
<br>
<font size="2">Vârstă:</font><br>
<input name="vârstă" size="14" >
<br>
<input type="submit" value="Send" name="Send">
</form>
Acest fișier preia în două câmpuri valorile pentru Nume si Vârstă și apelează apoi fișierul getting.asp
FIȘIER : GETTING.ASP
<%
'querystring obține informația
gotnume = Request.querystring("nume")
gotvârstă = Request.querystring("vârstă")
%>
În cadrul variabilelor noi gotnume și gotvârstă se introduc valorile Nume si Vârstă preluate.
Metoda POST
FIȘIER : SENDING.HTML
<form name="sending" method="POST" action="getting.asp" target="_self">
</FONT><font size="2">Nume :</font><br>
<input name="nume" size="22" >
<br>
<font size="2">Vârstă:</font><br>
<input name="vârstă" size="14" >
<br>
<input type="submit" value="Send" name="Send"> </form>
De data aceasta se folosește metoda post, una din cele mai folosite deoarece este mult mai confidențială și nu arată conținutul variabilelor la transfer.
FIȘIER : GETTING.ASP
<%
'the request.form gets the info within the boxes of the form actioned
'from the previous HTML/ASP
gotnume = Request.form("nume")
gotvârstă = Request.form("vârstă")
%>
Valorile variabilelor Nume si Vârstă sunt preluate cu instrucțiunea Request.Form.
Metoda bazată pe o imagine sau un link
FIȘIER : SENDING.ASP
<%
nume=”Adi”
vârstă=”23”
%>
<a href="getting.asp?nume=<%=nume%>&vârstă=<%=vârstă%>" target="_self" >
<img src="images/button_gotogetting.gif" name="pic">
</a>
Variabilele Nume si Vârstă sunt transferate fișierului getting.asp ca și parametrii ai link-ului imaginii specificate mai sus.
FIȘIER : GETTING.ASP
<%
gotnume = request.querystring("nume")
gotvârstă = request.querystring("vârstă")
%>
Printr-un fișier similar se citesc apoi valorile variabilelor transferate.
Metoda variabilelor sesiune
FIȘIER : SENDING.ASP
<%
session("nume") = "Adi"
session("vârstă") = "23"
%>
FIȘIER : GETTING.ASP
<%
gotnume = session("nume")
gotvârstă = session("vârstă")
%>
Este metoda cea mai simplă de transfer dar nu e indicată pentru variabile multiple deoarece ocupă spațiu vital din memorie, ținând cont că aceste variabile rămân definite atâta timp cât este validă sesiunea.
2.5 Artificii VBScript și JScript folosite
Meta-refresh
Permite un refresh specificat în secunde al paginii. Parametrii: perioada și pagina destinație.
<META HTTP-EQUIV = "REFRESH" CONTENT="5; URL=index.asp">
History-go(-1)
Permite revenirea la pagina anterioară în momentul unui click. Poate da valoarea unei variabile. Se poate folosi și combinat cu Meta-Refresh în cadrul parametului URL.
<a onClick="JavaScript:history.go(-1)">BACK</a> apare butonul BACK ca link.
urmPag="JavaScript:window.history.go(-1);" variabila urmPag ia acea valoare
Force.Reload
Utilă în momentul în care se dorește încărcarea paginii de pe server și nu din cache.
<script language="JavaScript"><!– if (document.images) location.reload(true); // forțează o reîncărcare de pe server else location.href = location.href; // doar reîncarcă pagina //–></script>
Acest proces se va tot relua, de aceea trebuie verificat dacă nu cumva pagina s-a reîncărcat în ultima secundă de exemplu:
<script language="JavaScript"><!– function forceReload() { if (document.images) location.replace(location.href + '?' + (new Date()).getTime()); else location.href = location.href + '?' + (new Date()).getTime(); } var lastTime = location.search.substring(1) – 0; if ((new Date()).getTime() – lastTime > 1000) forceReload(); //–></script>
Cache
Utilă pentru a preveni procesul de stocare cache a paginii încărcate. Cu albastru e ilustrată varianta HTML iar cu roșu varianta ce trebuie integrată într-o pagină ASP:
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="cache-control" CONTENT="private">
<%
Response.Expires = 0
Response.Expiresabsolute = Now() – 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
%>
Response.End / Response.Clear / Response.Flush
Utile când se tratează anumite excepții:
Response.End dacă se dorește stoparea procesării script-ului.
Response.Clear pentru ștergerea oricărei ieșiri HTML buffer-ate.
Response.Flush pentru trimiterea tuturor informațiilor către buffer.
Response.Redirect / Server.Transfer / Server.Execute
Pentru cedarea controlului unei alte pagini.
Response.Redirect “url” instrucțiune apărută mai demult.
Server.Transfer “url” acționează eficient în înlocuirea instrucțiunii Response.Redirect
Server.Execute “url” la fel ca și Server.Transfer, dar controlul revine paginii vechi
Transfer de tabel între fișiere
Înainte de a părăsi primul fișier se stochează datele într-un obiect, iar când trecem în celălalt fișier se map-ează obiectul spre un nou tabel (în cazul acesta un vector sau o matrice).
Session("CUMPCOS")=cosc
cosc=Session("CUMPCOS")
III. REZULTATE EXPERIMENTALE
Pe parcursul crearii aplicației s-a folosit pe post de editor Microsoft Frontpage 2000. Bazele de date au fost create cu Microsoft Access 2000. Pentru vizualizare s-a apelat la browser-ul Internet Explorer 5.0. Imaginile preluate au fost capturate cu utilitarul PhotoStyler.Proiectul a fost realizat sub platforma Windows 2000 Professional.
În continuare se vor prezenta rezultatele obținute in urma rulării aplicației. Se vor parcurge pe rând etapele exemplului pentru realizarea unei imagini mai bune per ansamblu.
Aplicația se lansează printr-o comandă specifică: http://host/index.asp
unde host are valoarea IP-ului serverului pe care este stocată pagina sau numele serverului respectiv dacă calculatorul client este legat in rețea cu serverul gazdă.
Va apare pagina principală a firmei virtuale Raidomi. fig 3.1
Fig. 3.1 Pagina principală Raidomi – index.asp
Deasupra logo-ului firmei utilizatorul are acces la meniul principal care îi oferă o serie intreagă de opțiuni grupate pe rubrici :
Rubrica Opțiuni posibile
Despre noi Scurt istoric Unde ne gasiti? Parteneri Oferta noastra
Structura paginii Prezentare Ce veti gasi? Recomandarii Pe viitor…
Utilizatori Inscrie-te! Intra in cont
Contact Sugestii… Echipa noastra
O captură a meniului cu toate opțiunile (forțată) este evidențiată în fig. 3.2
Fig. 3.2 Meniul principal Raidomi (applet) – meniu2.htm
Opțiunea Scurt istoric oferă câteva informații despre activitatea firmei precum si noutățile pe care le aduce cu sine noul site www.raidomi.ro. fig. 3.3
Fig. 3.3 Scurt istoric Raidomi – istoric.asp
Opțiunea Unde ne gasiti? specifică amplasamentul sediului, magazinului si service-ului Raidomi. fig. 3.4
Fig. 3.4 Unde ne gasiti? – negasiti.asp
Opțiunea Parteneri specifică numele unor parteneri cu care firma Raidomi duce tratative. Sunt ilustrate pozele firmelor de renume mondial producătoare de componente. fig. 3.5
Fig. 3.5 Parteneri – parteneri.asp
Opțiunea Oferta noastra ofera posibilitatea efectuarii de download pe calculatorul client al ofertei de componente in format .xls (fisier Excel) .Această ofertă de prețuri este aplicabilă clientilor noi care nu au un cont creat si este arhivată in format zip. Totodată există posibilitatea crearii unui nou cont sau intrarea in cont (valabilă doar pentru membrii) fig. 3.6
Fig. 3.6 Of erta noastră – ouroferta.asp
Opțiunea Prezentare oferă informații despre clientela căreia i se adresează site-ul. fig. 3.7
Fig. 3.7 Prezentare – prezentare.asp
Opțiunea Ce veti gasi? specifică multiplele avantaje oferite de firma Raidomi. fig. 3.8
Fig. 3.8 Ce veți găsi? – cevetigasi.asp
Î fucție de alegerea făcută se vor accesa fișierele .asp corespunzătoare:
a) Posibilitatea de a deveni mebru -> cvgsign.asp fig. 3.9
Fig. 3.9 Posibilitatea de a deveni membru – cvgsign.asp
b) Oferte avantajoase personalizate -> cvgoferte.asp fig. 3.10
Fig. 3.10 Oferte avantajoase personalizate – cvgoferte.asp
c) Posibilitatea de testare a sistemului -> cvgtest.asp fig. 3.11
Fig. 3.11 Posibilitatea de testare a sistemului – cvgtest.asp
d) Concursuri cu premii substanțiale -> cvgconc.asp fig. 3.12
Fig. 3.12 Concursuri cu premii substanțiale -> cvgconc.asp
Opțiunea Recomandări indică setările ideale ale clientului pentru vizualizarea in condiții optime a paginii firmei Raidomi. fig. 3.13
Fig. 3.13 Recomandări -> sugestii.asp
Opțiunea Pe viitor … ilustrează serviciile pe care firma Raidomi încearcă sa le ofere într-un viitor apropiat. fig. 3.14
Fig. 3.14 Pe viitor -> peviitor.asp
Opțiunea Sugestii ….oferă posibilitatea utilizatorilor sa-și exprime părerea asupra site-ului, aceștia putând trimite părerile proprii redacției pentru eventualele îmbunătățiri fig. 3.15
Fig. 3.15 Sugestii -> sugestii.asp
Opțiunea Echipa noastra permite contactul cu membrii firmei fig. 3.16
Dând click pe poză se poate trimite un mail destinat informaticianului, contabilei sau chiar patronului Raidomi.
Fig. 3.16 Echipa noastră -> echipa.asp
Am lăsat la final rubrica Utilizatori deoarece prin intermediul ei se avansează în aplicație. Este rezervată celor care vor să-si creeze un cont real in cadrul firmei Raidomi. Se poate alege opțiunea Inscrie-te! sau Intra in cont.
Dacă se selectează opțiunea Inscrie-te! atunci utilizatorul este rugat să-si introducă datele proprii: numele, prenumele, sexul, vârsta, nr. de telefon, adresa, ocupația, numele contului precum si parola dorită. Aceasta va trebui repetată pentru siguranța tastării corecte, caracterele fiind mascate. Procesul poate fi întrerupt prin selectarea link-ului Anuleaza.
Dacă s-au introdus întamplător date eronate, există posibilitatea ștergerii conținutului tuturor rubricilor prin selectarea butonului Sterge. După completarea întregului formular, prin acționarea butonului Adauga se trece la crearea contului. fig. 3.17
Există posibilitatea introducerii unui nume de cont deja existent fig. 3.18, a unui cont nul fig. 3.19, a unei parole nule fig. 3.20, a două parole diferite fig. 3.21 sau a necompletării întregului formular fig. 3.22. In aceste cazuri vor apărea in dreapta mesajele de atenționare specifice erorilor apărute, astfel utilizatorul având posibilitatea să-si corecteze greseala.
Dacă toate rubricile au fost introduse corect se creeaza noul cont cu datele noi specificate.
Astfel, in frame-ul din dreapta va apărea așa-numita “carte de vizită” a noului mebru Raidomi
Fig. 3.17 Inscrie-te! -> signup.asp
Erorile posibile : Fig. 3.18 – 3.22
Fig. 3.18 Eroare datorată existenței contului -> contexistent.asp
Fig. 3.19 Eroare datorată neintroducerii unui nume de cont ->numecontlipsa.asp
Fig. 3.20 Eroare datorată neintroducerii parolei -> parolalipsa.asp
Fig. 3.21 Eroare datorată introducerii a două parole diferite -> paroladif.asp
Fig. 3.22 Eroare datorată necompletarii întregului formular -> datelipsa.asp
Dacă utilizatorul are deja creat un cont, va putea selecta opțiunea Intra in cont.
Acesta va specifica numele contului precum si parola adecvată. Intrarea in cont va avea loc in momentul apăsării butonului Login. fig. 3.23
Fig. 3.23 Intrarea in cont valabilă membrilor -> memblog.asp
Eroarea care poate apărea constă în introducerea unui nume de cont inexistent sau a parolei greșite. Utilizatorul va fi atenționat în acest caz cu un nou mesaj. fig. 3.24
Fig. 3.24 Eroare datorată inexisțentei contului sau parolei introduse greșit -> logfail.asp
Dacă contul există și parola este corectă procesul de login-izare se incheie. Datele clientului vor fi accesate si trimise sub forma unei “carți de vizită” unde, pe lângă datele proprii mai apar și informații despre calculatorul clientului (IP, nume calculator) precum si suma investită de clientul respectiv in produsele firmei Raidomi. fig. 3.25
Fig. 3.25 Contul personal al utilizatorului -> cont.asp
În cazul în care utilizatorul dorește să-și schimbe datele personale (schimbare de nume, ocupație, vârstă, număr telefon sau adresă) se poate selecta opțiunea Modificare date personale. Vor apărea in frame-ul principal datele personale ale utilizatorului existente în baza de date. Ele pot fi schimbate după plac. fig. 3.26
Fig. 3.26 Modificarea datelor personale -> membupd.asp
Dacă se dorește schimbarea parolei, este necesară introducerea vechii parole precum și a noii parole (de 2 ori pentru confirmare). Pentru toate greșelile posibile utilizatorul este atenționat
Erorile posibile : fig. 3.27 – 3.29
Fig. 3.27 Eroare datorată introducerii greșite a vechii parole -> parolvdif.asp
Fig. 3.28 Eroare datorată introducerii a 2 parole diferite -> paroladif.asp
Fig. 3.29 Eroare datorată introducerii unei vârste neplauzibile -> varstagres.asp
Dacă se selectează opțiunea Oferta dvs. în frame-ul principal va apărea un mesaj de întampinare care solicită alegerea metodei de cumpărare: pe componente sau un sistem întreg.
fig. 3.30
Fig. 3.30 Ecran de întâmpinare și de selecție a metodei de cumpărare -> oferta.asp
Real, oferta.asp este alcătuit din 2 frame-uri detcomp.asp (sus) si compintro.asp (jos).
În momentul selecției metodei de cumpărare, în frame-ul de jos se încarcă comp.asp, adică
lista de prețuri a componentelor aflate pe stoc. Acest acces este condiționat de un parametru
care are ca valoare in funcție de opțiunea aleasă valorile codcomp sau codsis. Astfel se va ști ce metodă s-a selectat.
A fost necesar acest artificiu pentru ca fiecare utilizator să aibă nu numai o ofertă proprie de prețuri în funcție de suma investită în firma Raidomi dar și o ofertă diferită în sistem față de cea pe componente (bineînțeles mai bună).
Oferta de componente este organizatăin următorul fel: componentele sunt listate pe categorii
una dupa alta iar pe coloane sunt dispuse informațiile adecvate fiecăreia: tipul componentei, firma producătoare, modelul, câteva caracteristici sumare mai importante, prețul normal, prețul personalizat valabil clientului precum și opțiunea de cumpărare tip coș. fig. 3.31
Fig. 3.31 Of erta selectată (componente sau în sistem) -> comp.asp
Dacă se doresc informații suplimentare despre vreo componentă precum și poza acesteia pentru eventualele lamuriri in privința alegerii se poate da click pe oricare din componente in cadrul rubricii Modelul (componentei).
Exemple sunt ilustrate în următoarele 2 figuri pentru o placă de bază ASUS A7V133 sau un procesor DURON 700Mhz fig. 3.32 – 3.33
Fig. 3.32 Date suplimentare pentru placa de bază ASUS A7V133 -> detcomp.asp
Fig. 3.33 Date suplimentare pentru procesorul DURON 700MHz -> detcomp.asp
Clientul își poate astfel selecta orice tipuri de componente in cantităățile dorite.In fig. 3.34 este ilustrat modul în care apare această listă de cumpărături.
Fig. 3.34 Lista de cumpărături pentru cumpărare pe componente -> codcomp.asp
Dacă s-a ales cumpărarea unui sistem întreg, utilizatorul iși va configura calculatorul dorit in câțiva pași care baleiază tipurile de componente ce constituiesc un sistem de calcul. Anumite componente trebuiesc neaparat selectate (gen placa de bază procesor, hardisk, placa video) fig. 3.35 iar peste altele se poate “sări” (gen kit multimedia, tastatură etc) fig. 3.36
În acest exemplu s-a renunțat la unitatea DVD prin selectarea opțiunii Nu doresc componenta.
De asemenea se poate renunța la intreg procesul prin selectarea opțiunii Anuleaza tot.
Fig. 3.35 Evidențierea pașilor pt. achiziția unui sistem întreg-> codsis.asp
Fig. 3.36 Renunțarea la unele din componente este posibilă -> codsis.asp
În momentul în care s-au selectat componentele dorite ce vor alcătui sistemul, clientul are posibilitatea de a testa calculatorul (un test tip benchmark) pentru a decide daca sistemul de calcul ales va corespunde cerințelor sale (performantă raportatĂ la preț). Se va da click pe opțiunea Testeazaă sistemul. pentru aflarea rezultatelor. fig. 3.37
Fig. 3.37 Odată ales sistemul există posibilitatea testării sale -> codsis.asp
Dacă s-a ales testarea sistemului se va lansa in execuție fisierul test.asp . Acesta conține o serie largă de variabile care sunt transferate din fișierul anterior codsis.asp pentru posibilitatea determinării performanței noului calculator.
O serie de condiții trebuiesc puse pentru o diagnosticare cat mai corectă : aflarea bus-ului general de funcționare (influențat de placa de baza, memorie, procesor), a factorului de multiplicare , determinarea dispozitivelor primare si secundare master respectiv slave.
Toate acestea pentru o “captură” cat mai reală a bios-ului.
Urmează apoi secțiunea rezervată performanței calculatorului, dispusa pe 3 domenii posibile de folosință a acestuia: jocuri, multimedia si programare. În cadrul fiecăruia depind doar anumite componente intr-o măsura variabilă. Pe baza unor formule matematice riguroase se calculează astfel un coeficient care ar indica
“ Cât de pregătit este calculatorul cel nou raportat la respectivul domeniu …”
Ca și etalon de comparație au fost alese alte 3 sisteme echipate în mod diferit.
Toate acestea sunt ilustrate in fig. 3.38
Fig. 3.38 Secțiunea rezervată testării sistemului ales pe diferite domenii -> test.asp
În ipoteza în care utilizatorul este mulțumit de noul sistem îl poate comanda cu ajutorul opțiunii Comandă acum. Astfel, în background va fi transmis un mail de inștiințare către firma Raidomi conținând datele cumpărătorului precum si configurația sistemului și automat
persoana care se ocupă de asamblarea sistemelor va fii avertizată printr-un SMS despre acest fapt. Toate acestea pentru rapiditatea recepției comenzii si onorarii acesteia într-un timp minim.
Dacă se alege opțiunea Inscrie-te! sau Intra in cont într-un moment în care utilizatorul este deja login-izat într-un anumit cont va apărea un mesaj precum cel ilustrat in fig. 3.39
Daca se alege optiunea NU se revine la starea anterioară. În caz contrar (se alege DA) se reincarca pagina de debut index.asp si astfel este initializată o noua sesiune.
Fig. 3.39 Evidențierea conceptului de sesiune curentă -> logout.asp
Cu excepția secțiunii de înscriere în cazul unui nou membru, de fiecare dată s-a folosit metoda de acces la o bază de date respectiv citire.
Pentru a demonstra si facilitatea de scriere într-o bază de date dar si pentru completarea aplicației într-un domeniu util si indispensabil – gestiunea financiară – s-a realizat si secțiunea rezervată Contabilului respectiv a Patronului.
Dacă în cadrul procesului de identificare se specifică user Contabil și se introduce parola adecvată se lansează o nouă aplicație independentă. Aici apar toate componentele dar și informații rezervate strict companiei gen prețul de achiziție al fiecărei componente, stocul existent precum si profitul zilei respective. Totodată sunt listate si conturile existente împreună cu sumele investite de membrii pentru eventualele modificări ulterioare.
“Contabilul” se va putea ocupa de gestiunea stocului respectiv de profiturile revenite prin vânzarea componentelor. Orice vânzare efectuată diminueaza stocul dar si sporește suma investită de un membru in companie ceea ce atrage dupa sine o altă ofertă de prețuri valabilă acestuia. Fig. 3.40 ilustrează cele spuse mai sus. Datele se prelucrează prin selectarea opțiunii Adauga.
Fig. 3.40 Secțiunea rezervată Contabilului -> bilant.asp
În cazul în care au fost cumpărate anumite componente, vor fi trecute valorile cu care s-au vândut acestea precum si numărul bucaților comercializate. fig. 3.41
Fig. 3.41 Modificarea stocului pentru aflarea profitului -> bilant.asp
Exemplu:
Există pe stoc 8 plăci de bază ASUS A7V133 si 10 procesoare DURON 750MHz. Acestea au fost achiziționate cu 138$ respectiv 51$ bucata.Dacă s-au vândut 2 plăci de bază și 4 procesoare de acest tip, cu prețurile de 180$ respectiv 60$ bucata membrilor ilustrați în
fig. 3.42 va rezulta un nou stoc în care plăcile de bază ASUS A7V133 sunt in număr de 6 iar procesoarele DURON 750Mhz tot in număr de 6. Profitul rezultat din aceste vânzări va fi de
(180-138)x2+(60-51)*4 120$. fig. 3.43 – 3.44 .Dacă se aplică un refresh paginii bilant.asp se poate evidenția noul stoc fig. 3.45
Fig. 3.42 Aducerea la zi a sumelor investite de clienti-> bilant.asp
Fig. 3.43 Evidențierea profitului detaliat pe componente -> vizbilant.asp
Fig. 3.44 Profitul total si noile sume investite de membrii -> vizbilant.asp
Fig. 3.45 Noul stoc în urma vânzărilor efectuate -> bilant.asp
Imaginile anterioare surprinse in fig. 3.42 – 3.45 sunt cuprinse in cadrul aplicației într-un singur frame si fișier vizbilant.asp.
Ceea ce va apărea în ansamblu în cadrul browser-ului este chiar fig. 3.46
Fig. 3.46 Imagine de ansamblu a tuturor modificărilor efectuate -> vizbilant.asp
Ultima secțiune rezervată Patronului oferă doar un aspect (poate singurul care întradevăr contează privind lucrurile din această perspectiva) : profitul realizat pe ziua respectiva in $.
Pentru mai multe vănzari efectuate in aceeasi zi, profitul total crește iar la o nouă accesare este indicată noua valoare a acestuia. În momentul în care ceasul server-ului realizează trecerea la o nouă zi, automat profitul inregistrat prin vânzarea unor noi componente va figura în cadrul noii dâti.
O vedere ilustrativă în acest sens o constituie fig. 3.47
Fig. 3.47 Secțiunea rezervată Patronului pentru vizualizarea profitului-> patroni.asp
IV. CONCLUZII
ASP este întradevăr un instrument puternic specializat în domeniul paginilor web.
Oferă în primul rând un acces securizat (ușor controlabil) precum și metode dinamice de
Setare a variabilelor sau obiectelor definite.
4.1 Avantaje ASP
Editare, schimbare sau adăugare dinamică a conținutului unei pagini web.
Răspunde formularelor utilizatorului sau datelor introduse prin formurile HTML.
Accesează orice date sau baze de date și returnează rezultatul browser-ului.
Personalizează orice pagină web pentru a o face mult mai utilă pentru fiecare utilizator
Simplitate și viteză față de CGI sau Perl.
Oferă o securitate mare deoarece codul ASP nu poate fi văzut de browser.
Deoarece fișierele ASP sunt returnate sub formă HTML, pot fi vizualizate în orice browser
O programare ASP inteligentă poate minimiza traficul în rețea.
Dezavantaje ASP
Poate fi doar pe sisteme de operare Microsoft. (Windows NT Server, Windows 2000
Server etc).Totuși au început să apară și variante precum ChiliASP și InstantASP care nu necesită astfel de sisteme de operare.
Scripturile interpretează instrucțiuni bazate pe VbasicScript și JavaScript care nu
oferă un pachet atât de puternic precum întreg limbajul Java ce poate fi folosit în cazul tehnologiei concurente JSP (care va fi prezentată în comparație pe aceeași aplicație de Domokos Joszef).
4.3 Comentarii
Pe perioada realizării proiectului au intervenit următoarele probleme:
prima aplicație de test a fost realizată cu o serie de instrucțiuni care au fost
recunoscute de interpretorul VBasic de sub Windows 98. Datorită unor referiri menționate
pe Internet asupra noilor instrucțiuni ASP disponibile sub IIS în cadrul sistemului de operare Windows 2000 autorul a adaptat toate sursele într-o nouă formă care sub Windows 98 nu mai este recunoscută în totalitate (ex. Instrucțiunile Response.Redirect și Server.Transfer)
lipsa documentației în acest domeniu a forțat realizarea întregii aplicații doar cu
ajutorul informațiilor găsite pe Internet.
datorită problemelor menționate mai sus, autorul evaluează întreaga lucrare ca fiind
realizată la un nivel mediu. Totuși aplicația înglobează aproximativ 90% din toate artificiile găsite pe Internet în cadrul ASP-ului.
ca o estimare finală a complexității raportată la anumite porțiuni de program, autorul
ține să amintească câteva observații:
– pentru un control al traficului optim în ideea unui număr mare de utilizatori care accesează în același timp site-ul respectiv, întregul program ar trebui adaptat unor sesiuni de tip Cookie care ar păstra astfel informațiile tuturor conexiunilor efectuate precum și ID-ul utilizatorilor.
deoarece programul reprezintă o aplicație de nivel mijlociu, nu s-a justificat creerea unui
număr mare de obiecte sau clase care ar putea fi incluse doar. Însă în cadrul unei aplicații mari, acest lucru ar fi primordial.
secțiunea rezervată Contabulului sau Patronului a fost introdusă în ideea unei imagini de
ansamblu mai bune asupra posibilităților oferite de o astfel de aplicație. Bineînțeles, o mini-contabilitate ar implica mult mai multe lucruri de care trebuie să se țină cont, însă totul este realizabil și nu cu multe greutăți…
deoarece nu a constituit obiectul lucrării în cauză partea de securitate, aplicație conține
doar câteva elemente de siguranță care în schimb combinate cu setările din Serverul IIS pot oferi un minim de protecție. Totuși, dacă secțiunea de cumpărături ar fi aplicabilă prin intermediul unor cărți de credit în sistemul buy-online atunci s-ar cuveni câteva elemente în plus de protecție.
BIBLIOGRAFIE
De pe Internet …
http://www.askasp.com/display_message.asp?mid=911
http://asp101.aspin.com/
http://www.15seconds.com/
http://www.4guysfromrolla.com/webtech/faq/faqtoc.shtml
http://www.elementkjournals.com/asp/9905/asp9951.htm
http://serverobjects.com/comp/Asppop3.htm
http://pcquest.ciol.com/content/linux/299110114.asp
http://tech.irt.org/articles/script.htm
http://localhost/iisHelp/iis/misc/default.asp
http://www.p2p.wrox.com/asp/
http://www.persits.com/
http://www.simplythebest.net/info/asp.html
http://www.surf-net.co.uk/asp/default.asp
http://msdn.microsoft.com/WORKSHOP/SERVER/ASP/ACTIVE.ASP
http://www.w3schools.com/asp/asp_examples.asp
http://www.hotscripts.com/ASP/Web_Sites/
……. și multe alte site-uri…
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Accesul Unei Baze de Date Folosind Tehnologia Asp (ID: 149029)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
