Ce ne trebuie. Găsirea cuvintelor cu operatori suplimentari

Înregistrarea controalelor este efectuată de directiva @Register, care vă permite să utilizați controalele utilizatorului și controalele serverului în codul HTML al paginii folosind o sintaxă specială (sintaxă declarativă personalizată pentru controlul serverului). Pe baza analizei acestor directive, analizatorul de pagini poate asocia etichete cu tipuri date și, la crearea unei pagini, poate încorpora controale deja ca containere de tipuri personalizate - ramuri ale arborelui de control al paginii.

Directivele trebuie să precedă prima utilizare a etichetelor declarate, mai des sunt plasate la începutul paginii iar în cazul înregistrării mai multor controale, în site-urile cu structură modulară, numărul de astfel de declarații poate ocupa un număr mare de rânduri. . Când schimbați locația controalelor, trebuie să căutați linii care necesită modificări în codul tuturor paginilor și controalelor utilizator pe care sunt înregistrate, ceea ce este destul de incomod.

Articolul descrie o metodă care simplifică înregistrarea controalelor.

Pentru directivele de înregistrare, vom folosi un fișier text simplu în care vom colecta toate directivele @ Register. Deoarece căile virtuale pot fi folosite pentru a declara controalele utilizatorului și doar spațiile de nume sunt specificate pentru controalele serverului, putem colecta toate linkurile de care avem nevoie în acest fișier, iar linkurile către fișierele ascx vor fi corecte pentru orice folder din proiect. Iată cum arată acest fișier într-unul dintre proiecte:


<%@ Register TagPrefix="ch" Namespace="ControlsSharp.HtmlControls" Assembly="ControlsSharp"%>

<%@ Register TagPrefix="cw" Namespace="ControlsSharp.WebControls" Assembly="ControlsSharp"%>

<%@ Register TagPrefix="c" Namespace="ControlsSharp.CustomControls" Assembly="ControlsSharp"%>

<%@ Register TagPrefix="b" Namespace="ControlsBasic.CustomControls" Assembly="ControlsBasic"%>

<%@ Register TagPrefix="cu" TagName="bottommenu" Src="~/UserControls/Menu/cu_menu_bottom.ascx" %>

<%@ Register TagPrefix="cu" TagName="leftmenu" Src="~/UserControls/Menu/cu_menu_left.ascx" %>

<%@ Register TagPrefix="cu" TagName="topmenu" Src="~/UserControls/Menu/cu_menu_top.ascx" %>

Să denumim fișierul register.inc și să-l plasăm în folderul /inc al proiectului nostru web.

Acest fișier va conține toate linkurile de care avem nevoie, vom adăuga sau modifica înregistrarea unui utilizator sau a unui control server în el.

Acum fișierul creat trebuie să fie inclus cumva în codul paginii. Facem acest lucru cu directiva SSI (partea serverului include) #include. Această directivă vă permite să includeți fișiere statice și dinamice în codul paginii, procesându-le pe baza maparii IIS, de exemplu. specificarea unui fișier asp sau aspx ca sursă va face ca fișierul să fie procesat de procesul corespunzător și va copia rezultatele acestei procesări în pagina de ieșire. În ASP, directiva #include a fost folosită pe scară largă și a permis modularizarea site-ului. Odată cu apariția ASP.NET, a devenit mai convenabil să faceți acest lucru în alte moduri, de exemplu, folosind controalele utilizatorului. Versiunile viitoare ale ASP.NET vor implementa modularitatea folosind paginile master. În general, directiva #include și-a pierdut sensul și a fost păstrată în principal pentru compatibilitate cu retrocompatibilitatea și pentru a simplifica migrarea proiectelor ASP la .Net.

Deoarece avem un fișier text simplu, nu se va face nicio prelucrare și înainte de a fi executat orice conținut dinamic, întregul conținut al fișierului va fi copiat în codul paginii. Acestea. adăugarea fișierului nostru register.inc în partea de sus a paginii, de exemplu, este aproape la fel cu scrierea tuturor directivelor @Register acolo.

Pentru a nu depinde de locația fizică a fișierului, folosim din nou sintaxa căii virtuale și adăugăm următoarea linie la codul fișierului aspx:

Asigurați-vă că totul funcționează, dacă nu, corectați căile greșite.

Rămâne de efectuat încă o operațiune. Acum, dacă încercați să obțineți fișierul /inc/register.inc din linkul din browser, o puteți face cu ușurință. IIS îl pune în mâinile tale, precum și în mâinile unui atacator, complet gratuit, deși conține căile structurii fizice a site-ului tău.

Pentru a preveni acest lucru, folosim capacitățile handlerului sincron HttpForbiddenHandler, care ne permite să protejăm fișierele de un anumit tip împotriva emiterii la cererea utilizatorului. Această abordare este convenabilă și este adesea folosită, de exemplu, pentru a proteja fișierele bazei de date MS Access utilizate într-un proiect. Pentru ca fișierele cu extensia *.inc să fie protejate folosind acest handler, trebuie să spuneți IIS că aceste fișiere vor fi procesate de procesul ASP.NET, cu alte cuvinte, configurați IIS pentru a mapa la fișiere de acest tip.

Pentru o descriere detaliată a procesului de configurare pentru IIS, consultați CUM SE: Utilizați ASP.NET pentru a proteja tipurile de fișiere (http://support.microsoft.com/kb/815152/EN-US/). Trebuie să creăm o mapare numai pentru fișierele *.inc. După parcurgerea pașilor descriși acolo, toate cererile de fișiere cu această extensie vor fi procesate de procesul ASP.NET și va trebui să editați fișierul web.config după cum urmează:

Asta este, acum, când încearcă să obțină fișierul /inc/register.inc printr-o legătură directă, utilizatorul va primi eroarea B.

Pentru a nu înregistra aspnet_isapi.dll, de exemplu, furnizorul dvs. nu dorește să facă acest lucru, puteți utiliza capacitatea SSI de a specifica fișiere de orice tip și de a înșela folosind o extensie a unuia dintre tipurile deja mapate în IIS în mod implicit pentru un fișier cu directive @Register. Extensiile *.cs sau *.vb vor fi convenabile pentru aceasta. Aceste fișiere conțin cod sursă și de obicei nu sunt copiate pe server. Dacă ați greșit brusc și ați copiat, nu le veți putea obține la cererea din browser - atunci când încercați să faceți acest lucru, utilizatorul va primi o eroare B. Acest lucru se întâmplă deoarece maparea în IIS este configurată implicit pentru fișiere de acest tip și extensia corespunzătoare este deja înregistrată în secțiune fisierul machine.config. In Visual Studio, pentru ca compilatorul sa nu iti dea mesaj de eroare, pune o extensie de care compilatorul nu este interesat: in proiectele C# este *.vb, in proiectele VB este *.cs.
Concluzie

Metoda descrisă vă permite să înregistrați controale într-un singur loc pentru întregul proiect. Modificarea ulterioară a acestui fișier necesită mai puțin efort decât dacă ar trebui să o faceți în mod obișnuit. Încercați să utilizați SSI #include în interiorul fișierelor pe care le introduceți - acest lucru vă permite să organizați un fel de ierarhie și moștenire, ceea ce poate fi convenabil pentru proiecte mari

Motorul de căutare Google (www.google.com) oferă multe opțiuni de căutare. Toate aceste caracteristici sunt un instrument de căutare neprețuit pentru un utilizator de internet pentru prima dată și, în același timp, o armă și mai puternică de invazie și distrugere în mâinile oamenilor cu intenții rele, inclusiv nu numai hackeri, ci și criminali care nu sunt informatici. si chiar teroristi.
(9475 vizualizări într-o săptămână)

Denis Batrankov
denisNOSPAMixi.ru

Atenţie:Acest articol nu este un ghid de acțiune. Acest articol este scris pentru voi, administratori de server WEB, astfel încât veți pierde falsul sentiment că sunteți în siguranță și veți înțelege în sfârșit insidiosul acestei metode de obținere a informațiilor și vă veți apuca să vă protejați site-ul.

Introducere

De exemplu, am găsit 1670 de pagini în 0,14 secunde!

2. Să introducem o altă linie, de exemplu:

inurl:"auth_user_file.txt"

puțin mai puțin, dar acest lucru este deja suficient pentru descărcare gratuită și pentru ghicirea parolelor (folosind același John The Ripper). Mai jos voi da mai multe exemple.

Deci, trebuie să vă dați seama că motorul de căutare Google a vizitat majoritatea site-urilor de internet și a stocat în cache informațiile conținute în ele. Aceste informații stocate în cache vă permit să obțineți informații despre site și conținutul site-ului fără o conexiune directă la site, doar săpați în informațiile care sunt stocate intern de Google. Mai mult, dacă informațiile de pe site nu mai sunt disponibile, atunci informațiile din cache pot fi în continuare păstrate. Tot ce este nevoie pentru această metodă este să cunoașteți câteva cuvinte cheie Google. Această tehnică se numește Google Hacking.

Pentru prima dată, informații despre Google Hacking au apărut pe lista de corespondență Bugtruck în urmă cu 3 ani. În 2001, acest subiect a fost abordat de un student francez. Iată un link către această scrisoare http://www.cotse.com/mailing-lists/bugtraq/2001/Nov/0129.html. Acesta oferă primele exemple de astfel de solicitări:

1) Index de /admin
2) Index de /parola
3) Index de /mail
4) Index pentru / +banques +filetype:xls (pentru Franța...)
5) Index de / +passwd
6) Index of/password.txt

Acest subiect a făcut mult zgomot în partea de citit în engleză a internetului destul de recent: după un articol de Johnny Long publicat pe 7 mai 2004. Pentru un studiu mai complet al Google Hacking, vă sfătuiesc să mergeți pe site-ul acestui autor http://johnny.ihackstuff.com. În acest articol, vreau doar să vă aduc la curent.

Cine îl poate folosi:
- Jurnaliştii, spionii şi toţi acei oameni cărora le place să bage nasul în afacerile altora pot folosi acest lucru pentru a căuta dovezi compromiţătoare.
- Hackerii care caută ținte potrivite pentru hacking.

Cum funcționează Google.

Pentru a continua conversația, permiteți-mi să vă reamintesc câteva dintre cuvintele cheie folosite în interogările Google.

Căutați folosind semnul +

Google exclude, în opinia sa, cuvintele neimportante din căutare. De exemplu, cuvinte interogative, prepoziții și articole în limba engleză: de exemplu, are, of, where. În rusă, Google pare să considere toate cuvintele importante. Dacă cuvântul este exclus din căutare, atunci Google scrie despre el. Pentru ca Google să înceapă să caute pagini cu aceste cuvinte, trebuie să adăugați un semn + înaintea lor fără spațiu înaintea cuvântului. De exemplu:

as + de bază

Cauta dupa semn -

Dacă Google găsește un număr mare de pagini din care este necesar să excludeți pagini cu anumite subiecte, atunci puteți forța Google să caute numai pagini care nu conțin anumite cuvinte. Pentru a face acest lucru, trebuie să indicați aceste cuvinte punând un semn în fața fiecăruia - fără spațiu înaintea cuvântului. De exemplu:

pescuit - vodca

Căutați cu semnul ~

Poate doriți să căutați nu numai cuvântul specificat, ci și sinonimele acestuia. Pentru a face acest lucru, precedați cuvântul cu simbolul ~.

Găsirea unei expresii exacte folosind ghilimele duble

Google caută pe fiecare pagină toate aparițiile cuvintelor pe care le-ați scris în șirul de interogare și nu îi pasă de poziția relativă a cuvintelor, principalul lucru este că toate cuvintele specificate sunt pe pagină în același timp ( aceasta este acțiunea implicită). Pentru a găsi expresia exactă, trebuie să o puneți între ghilimele. De exemplu:

"spre carte"

Pentru a avea cel puțin unul dintre cuvintele specificate, trebuie să specificați în mod explicit operația logică: SAU. De exemplu:

carte de siguranță SAU protecție

În plus, puteți folosi semnul * în șirul de căutare pentru a indica orice cuvânt și. a reprezenta orice personaj.

Găsirea cuvintelor cu operatori suplimentari

Există operatori de căutare care sunt specificați în șirul de căutare în formatul:

operator:termen_căutare

Spațiile de lângă colon nu sunt necesare. Dacă introduceți un spațiu după două puncte, veți vedea un mesaj de eroare, iar înaintea acestuia, Google le va folosi ca șir de căutare normal.
Există grupuri de operatori de căutare suplimentari: limbi - indicați în ce limbă doriți să vedeți rezultatul, data - limitați rezultatele din ultimele trei, șase sau 12 luni, apariții - indicați unde trebuie să căutați în document șirul: peste tot, în titlu, în URL, domenii - căutați site-ul specificat sau invers excludeți-l din căutare, căutare sigură - blocați site-urile care conțin tipul specificat de informații și eliminați-le din paginile cu rezultatele căutării.
Cu toate acestea, unii operatori nu au nevoie de un parametru suplimentar, de exemplu, interogarea " cache:www.google.com" poate fi numit ca șir de căutare complet, iar unele cuvinte cheie, dimpotrivă, necesită un cuvânt de căutare, de exemplu " site:www.google.com ajutor„. În lumina subiectului nostru, să ne uităm la următorii operatori:

Operator

Descriere

Necesită un parametru suplimentar?

căutați numai pentru site-ul specificat în search_term

căutați numai în documente cu tipul search_term

găsiți pagini care conțin termenul de căutare în titlu

găsiți pagini care conțin toate cuvintele search_term din titlu

găsiți pagini care conțin cuvântul search_term în adresa lor

găsiți pagini care conțin toate cuvintele search_term în adresa lor

Operator site: limitează căutarea doar pe site-ul specificat și puteți specifica nu numai numele domeniului, ci și adresa IP. De exemplu, introduceți:

Operator tip fișier: restricționează căutările la fișiere de un anumit tip. De exemplu:

Începând cu data acestui articol, Google poate căuta în 13 formate de fișiere diferite:

  • Format de document portabil Adobe (pdf)
  • Adobe PostScript (ps)
  • Lotus 1-2-3 (săptămâna 1, săptămâna2, săptămâna3, săptămâna4, săptămâna5, săptămînă, săptămînă, wku)
  • Lotus Word Pro (lwp)
  • MacWrite(mw)
  • Microsoft Excel (xls)
  • Microsoft PowerPoint (ppt)
  • Microsoft Word (doc)
  • Microsoft Works (wks, wps, wdb)
  • Microsoft Write (scriere)
  • Format text îmbogățit (rtf)
  • Shockwave Flash (swf)
  • Text (ans, txt)

Operator legătură: afișează toate paginile care indică pagina specificată.
Trebuie să fie întotdeauna interesant să vezi câte locuri de pe Internet știu despre tine. Noi incercam:

Operator cache: arată versiunea stocată în cache de Google a site-ului așa cum arăta când Google a vizitat ultima pagină. Luăm orice site care se schimbă frecvent și ne uităm la:

Operator titlu: caută cuvântul specificat în titlul paginii. Operator allintitle: este o extensie - caută toate cuvintele specificate în titlul paginii. Comparaţie:

intitle:zbor pe Marte
intitle:zbor intitle:pe intitle:marte
allintitle:zbor pe Marte

Operator inurl: determină Google să afișeze toate paginile care conțin șirul specificat în adresa URL. allinurl: caută toate cuvintele dintr-o adresă URL. De exemplu:

allinurl:acid_stat_alerts.php

Această comandă este utilă în special pentru cei care nu au SNORT - cel puțin pot vedea cum funcționează pe un sistem real.

Metode de Hacking Google

Așadar, am aflat că, folosind o combinație a operatorilor și cuvintelor cheie de mai sus, oricine poate colecta informațiile necesare și poate căuta vulnerabilități. Aceste tehnici sunt adesea denumite Google Hacking.

harta site-ului

Puteți folosi site-ul: declarație pentru a vedea toate linkurile pe care Google le-a găsit pe site. De obicei, paginile care sunt create dinamic de scripturi nu sunt indexate folosind parametri, așa că unele site-uri folosesc filtre ISAPI, astfel încât linkurile să nu fie în formă /article.asp?num=10&dst=5, dar cu bare oblice /article/abc/num/10/dst/5. Acest lucru se face pentru a se asigura că site-ul este în general indexat de motoarele de căutare.

Sa incercam:

site: www.whitehouse.gov whitehouse

Google crede că fiecare pagină de pe un site conține cuvântul whitehouse. Acesta este ceea ce folosim pentru a obține toate paginile.
Există și o versiune simplificată:

site:whitehouse.gov

Și cea mai bună parte este că camarazii de la whitehouse.gov nici măcar nu știau că ne-am uitat la structura site-ului lor și chiar ne-am uitat în paginile stocate în cache pe care Google le-a descărcat singur. Acesta poate fi folosit pentru a studia structura site-urilor și a vizualiza conținutul fără a fi observat deocamdată.

Listarea fișierelor în directoare

Serverele WEB pot afișa liste de directoare ale serverului în loc de pagini HTML obișnuite. Acest lucru se face de obicei pentru a forța utilizatorii să selecteze și să descarce anumite fișiere. Cu toate acestea, în multe cazuri, administratorii nu au intenția de a afișa conținutul unui director. Acest lucru se datorează unei configurări greșite a serverului sau absenței unei pagini master în director. Drept urmare, hackerul are șansa de a găsi ceva interesant în director și de a-l folosi în propriile scopuri. Pentru a găsi toate astfel de pagini, este suficient să observăm că toate conțin cuvintele: index of în titlul lor. Dar, deoarece indexul de cuvinte conține nu numai astfel de pagini, trebuie să rafinăm interogarea și să luăm în considerare cuvintele cheie de pe pagina în sine, deci interogări precum:

intitle:index.of directorul părinte
intitle:index.de dimensiunea numelui

Deoarece majoritatea listelor de directoare sunt intenționate, este posibil să aveți dificultăți să găsiți înregistrări neplasate prima dată. Dar cel puțin veți putea folosi listele pentru a determina versiunea serverului WEB, așa cum este descris mai jos.

Obținerea versiunii serverului WEB.

Cunoașterea versiunii serverului WEB este întotdeauna utilă înainte de a începe orice atac de hacker. Din nou, datorită Google, este posibil să obțineți aceste informații fără a vă conecta la un server. Dacă te uiți cu atenție la lista de directoare, poți vedea că numele serverului WEB și versiunea acestuia sunt afișate acolo.

Apache1.3.29 - Server ProXad la trf296.free.fr Port 80

Un administrator cu experiență poate schimba aceste informații, dar, de regulă, este adevărat. Astfel, pentru a obține aceste informații, este suficient să trimiteți o solicitare:

intitle:index.of server.at

Pentru a obține informații pentru un anumit server, rafinăm cererea:

intitle:index.of server.at site:ibm.com

Sau invers, căutăm servere care rulează pe o anumită versiune a serverului:

intitle:index.of Apache/2.0.40 Server la

Această tehnică poate fi folosită de un hacker pentru a găsi o victimă. Dacă, de exemplu, are un exploit pentru o anumită versiune a serverului WEB, atunci îl poate găsi și încerca exploitul existent.

De asemenea, puteți obține versiunea de server uitându-vă la paginile care sunt instalate implicit atunci când instalați o versiune nouă a serverului WEB. De exemplu, pentru a vedea pagina de testare Apache 1.2.6, trebuie doar să tastați

intitle:Test.Pagina.pentru.Apache a funcționat!

Mai mult, unele sisteme de operare instalează și lansează imediat serverul WEB în timpul instalării. Cu toate acestea, unii utilizatori nici măcar nu sunt conștienți de acest lucru. Desigur, dacă vezi că cineva nu a șters pagina implicită, atunci este logic să presupunem că computerul nu a fost supus niciunei configurații și este probabil vulnerabil la atacuri.

Încercați să căutați pagini IIS 5.0

allintitle:Bine ați venit la Windows 2000 Internet Services

În cazul IIS, puteți determina nu numai versiunea serverului, ci și versiunea Windows și Service Pack.

O altă modalitate de a determina versiunea serverului WEB este să cauți manuale (pagini de ajutor) și exemple care pot fi instalate implicit pe site. Hackerii au găsit destul de multe modalități de a folosi aceste componente pentru a obține acces privilegiat la site. De aceea, trebuie să eliminați aceste componente de pe locul de producție. Ca să nu mai vorbim de faptul că prin prezența acestor componente puteți obține informații despre tipul de server și versiunea acestuia. De exemplu, să găsim manualul apache:

inurl:manual apache directive module

Folosind Google ca scaner CGI.

Scanerul CGI sau scanerul WEB este un utilitar pentru căutarea de scripturi și programe vulnerabile pe serverul victimei. Aceste utilitare trebuie să știe ce să caute, pentru asta au o listă întreagă de fișiere vulnerabile, de exemplu:

/cgi-bin/cgiemail/uargg.txt
/random_banner/index.cgi
/random_banner/index.cgi
/cgi-bin/mailview.cgi
/cgi-bin/maillist.cgi
/cgi-bin/userreg.cgi

/iissamples/ISSamples/SQLQHit.asp
/SiteServer/admin/findvserver.asp
/scripts/cphost.dll
/cgi-bin/finger.cgi

Putem găsi fiecare dintre aceste fișiere folosind Google, folosind cuvintele index of sau inurl pe lângă numele fișierului din bara de căutare: putem găsi site-uri cu scripturi vulnerabile, de exemplu:

allinurl:/random_banner/index.cgi

Cu cunoștințe suplimentare, un hacker ar putea exploata o vulnerabilitate de script și poate folosi vulnerabilitatea pentru a forța scriptul să servească orice fișier stocat pe server. De exemplu, un fișier cu parole.

Cum să te protejezi de a fi piratat prin Google.

1. Nu încărcați date importante pe serverul WEB.

Chiar dacă ați postat datele temporar, puteți uita de ele sau cineva va avea timp să găsească și să preia aceste date înainte de a le șterge. Nu o face. Există multe alte modalități de a transfera date care le protejează de furt.

2. Verificați-vă site-ul.

Utilizați metodele descrise pentru a vă cerceta site-ul. Verificați-vă periodic site-ul pentru noi metode care apar pe site-ul http://johnny.ihackstuff.com. Rețineți că, dacă doriți să vă automatizați acțiunile, trebuie să obțineți permisiunea specială de la Google. Daca citesti cu atentie http://www.google.com/terms_of_service.html, atunci veți vedea fraza: Nu puteți trimite interogări automate de niciun fel către sistemul Google fără permisiunea prealabilă expresă a Google.

3. Este posibil să nu aveți nevoie de Google pentru a vă indexa site-ul sau o parte a acestuia.

Google vă permite să eliminați un link către site-ul dvs. sau o parte a acestuia din baza de date, precum și să eliminați pagini din cache. În plus, puteți interzice căutarea de imagini pe site-ul dvs., interziceți afișarea unor fragmente scurte de pagini în rezultatele căutării. Toate opțiunile pentru ștergerea unui site sunt descrise în pagină http://www.google.com/remove.html. Pentru a face acest lucru, trebuie să confirmați că sunteți cu adevărat proprietarul acestui site sau să introduceți etichete în pagină sau

4. Folosiți robots.txt

Se știe că motoarele de căutare caută fișierul robots.txt de la rădăcina site-ului și nu indexează acele părți care sunt marcate cu cuvântul Nu permiteți. Puteți utiliza acest lucru pentru a preveni indexarea unei părți a site-ului. De exemplu, pentru a evita indexarea întregului site, creați un fișier robots.txt care să conțină două rânduri:

Agent utilizator: *
interzice: /

Ce se mai întâmplă

Pentru ca viața să nu vi se pară miere, voi spune până la urmă că sunt site-uri care urmăresc acei oameni care, folosind metodele de mai sus, caută găuri în scripturi și servere WEB. Un exemplu de astfel de pagină este

Apendice.

Un pic dulce. Încercați una dintre următoarele:

1. #mysql dump filetype:sql - caută dumpurile bazei de date mySQL
2. Raportul Rezumat al Vulnerabilității Gazdei - vă va arăta ce vulnerabilități au găsit alți oameni
3. phpMyAdmin rulează pe inurl:main.php - acest lucru va forța închiderea controlului prin panoul phpmyadmin
4. Nu pentru distribuție confidențială
5. Solicitare detalii Control Tree Server Variables
6. Alergare în modul copil
7. Acest raport a fost generat de WebLog
8. intitle:index.of cgiirc.config
9. filetype:conf inurl:firewall -intitle:cvs - poate cineva are nevoie de fișiere de configurare pentru firewall? :)
10. intitle:index.of finances.xls - hmm....
11. intitle:Indexul chaturilor dbconvert.exe - jurnalele de chat icq
12. intext: Analiza traficului Tobias Oetiker
13. intitle:Statistici de utilizare pentru Generate de Webalizer
14. intitle:statistics of advanced web statistics
15. intitle:index.of ws_ftp.ini - ws ftp config
16. inurl:ipsec.secrets deține secrete partajate - cheie secretă - găsire bună
17. inurl:main.php Bine ați venit la phpMyAdmin
18. inurl:server-info Apache Server Information
19. site:edu admin note
20. ORA-00921: sfârșit neașteptat al comenzii SQL - obțineți căi
21. intitle:index.of trillian.ini
22. intitle:Index of pwd.db
23. intitle:index.of people.lst
24. intitle:index.of master.passwd
25.inurl:passlist.txt
26. intitle:Index of .mysql_history
27. intitle:index of intext:globals.inc
28. intitle:index.of administrators.pwd
29. intitle:Index.of etc umbra
30. intitle:index.of secring.pgp
31. inurl:config.php dbuname dbpass
32. inurl:perform filetype:ini

  • „Hacking cu Google”
  • Centrul de formare „Informzaschita” http://www.itsecurity.ru - un centru specializat de frunte în domeniul formării în domeniul securității informațiilor (Licența Comitetului de Educație din Moscova nr. 015470, acreditare de stat nr. 004251). Singurul centru de instruire autorizat pentru Sisteme de Securitate pe Internet și Clearswift din Rusia și țările CSI. Centru de instruire autorizat Microsoft (specializare Securitate). Programele de formare sunt coordonate cu Comisia Tehnică de Stat a Rusiei, FSB (FAPSI). Certificate de pregătire și documente de stat privind pregătirea avansată.

    SoftKey este un serviciu unic pentru cumpărători, dezvoltatori, dealeri și parteneri afiliați. În plus, acesta este unul dintre cele mai bune magazine online de software din Rusia, Ucraina, Kazahstan, care oferă clienților o gamă largă, multe metode de plată, procesare promptă (adesea instantanee) a comenzii, urmărirea procesului de onorare a comenzii în secțiunea personală, diverse reduceri de la magazin și producătorii ON.

    Fiecare dezvoltator ASP.NET trebuie să fie familiarizat cu directivele de pagină. Dacă sunteți începător și doriți să aflați despre Directivele paginii, atunci puteți citi acest articol.

    Deci prima întrebare este despre directivele paginii.

    Ce este o directivă de pagină?

    Practic, directivele de pagină sunt comenzi. Aceste comenzi sunt folosite de compilator atunci când pagina este compilată.

    Cum să utilizați directivele într-o pagină ASP.NET

    Nu este dificil să adăugați o directivă la o pagină ASP.NET. Este simplu să adăugați directive la o pagină ASP.NET. Puteți scrie directive în următorul format:

    <%@%>

    Vezi formatul directivei, începe cu „<%@" and ends with "%>„. Cel mai bun mod este să puneți directiva în partea de sus a paginii dvs. Dar puteți pune o directivă oriunde într-o pagină. Încă un lucru, puteți pune mai mult de un atribut într-o singură directivă.

    Iată lista completă a directivelor:

    • @Pagină
    • @Maestru
    • @Control
    • @Import
    • @Implementări
    • @Inregistreaza-te
    • @Asamblare
    • @MasterType
    • @Output Cache
    • @PreviousPageType
    • @Referinţă

    Să discutăm câte ceva despre fiecare directivă.

    Când doriți să specificați atributele pentru o pagină ASP.NET, atunci trebuie să utilizați Directiva @Page. După cum știți, o pagină ASP.NET este o parte foarte importantă a ASP.NET, așa că această directivă este folosită în mod obișnuit în ASP.NET.

    <%@Page Language="C#" AutoEventWIreup="false" CodeFile="Default.aspx.cs" Inherits="_Default"%>

    Acum aveți câteva informații despre directivele @Page. Directiva @Master este destul de similară cu Directiva @Page. Singura diferență este că directiva @master este pentru paginile Master. Trebuie să rețineți că, în timp ce utilizați Directiva @Master, definiți proprietatea paginii șablon. Atunci orice pagină de conținut poate moșteni toate proprietățile definite în Pagina Master. Dar există unele proprietăți care sunt disponibile numai într-o Pagina Master.

    <%@Master Language="C#" AutoEventWIreup="false" CodeFile="MasterPage1.master.cs" Inherits="MasterPage"%>

    @Control

    @Control construiește controale pentru utilizator ASP.NET. Când utilizați directiva, definiți proprietățile care vor fi moștenite de controalele utilizatorului, iar aceste valori sunt atribuite controalelor utilizatorului

    <%@Control Language="C#" Explicit="True" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>

    După cum știți, trebuie să definiți spații de nume în clasa dvs. .cs înainte de a utiliza o clasă C# sau VB. Deci, Directiva @Import importă spații de nume. Această directivă acceptă doar un singur atribut „spațiu de nume” și acest atribut ia o valoare șir care specifică spațiul de nume care trebuie importat. Un lucru de care trebuie să rețineți este că Directiva @Import nu poate conține mai mult de o pereche atribut/valoare. Dar puteți folosi mai multe linii.

    <%@Import Namespace="System.Data"%>

    @Implementări

    Directiva @Implements face ca paginile ASP.NET să implementeze interfețele framework .Net. Această directivă acceptă doar o interfață cu un singur atribut.

    <%@Implements Interface="System.Web.UI.IValidator"%>

    @Inregistreaza-te

    Când creați un control utilizator și trageți acel control utilizator pe pagina dvs., veți vedea directiva @Register. Această directivă înregistrează controlul utilizatorului pe pagină, astfel încât controlul să poată fi accesat de către pagină.

    <%@ Register TagPrefix="MayTag Namespace="MyName.MyNameSpace" Assembly="MyAssembly"%>

    @Asamblare

    Directiva @Assembly atașează ansambluri la pagină sau un control utilizator ASP.NET, astfel toate clasele și interfețele de asamblare sunt disponibile pentru clasă. Această directivă acceptă cele două atribute Name și src. Atributul Name definește numele ansamblului, iar atributul src definește sursa ansamblului.

    <%@Assembly Name="MyAssembly"%>
    <%@Assembly src="MYAssembly.cs">

    @MasterType

    Directiva @MasterType conectează un nume de clasă la pagina ASP.NET pentru a obține referințe puternic tipizate sau membri conținuti în Pagina principală specificată. Această directivă acceptă cele două atribute Typename și virtualpath. Typename setează numele clasei derivate de la care să obțină membrii puternic tipați sau de referință, iar virtualpath setează locația paginii de pe care aceștia sunt preluați.

    <%@MasterType VirtualPath="/MasterPage1.master"%>

    @output cache

    Acesta controlează politicile de cache de ieșire ale unei pagini ASP.NET.

    <%@ OutputCache Duration ="180" VaryByParam="None"%>
    @Previouspagetype

    Această directivă specifică pagina din care provine orice postare pe mai multe pagini.

    @Referinţă

    Această directivă declară că o altă pagină sau controlul utilizatorului trebuie respectat împreună cu pagina sau controlul activ. Această directivă acceptă calea virtuală cu un singur atribut. Setează locația paginii sau controlul utilizatorului de la care va fi referită pagina activă.

    <%@Reference VirtualPayh="~/MyControl.ascx"%>

    Cuvinte finale

    Sper că veți obține niște cunoștințe de aici. Vă rugăm să comentați cum vă place acest articol. Comentariile tale sunt foarte valoroase pentru mine, pentru că doar tu îmi vei spune unde greșesc și ce îmbunătățiri trebuie să fac pentru a scrie un articol mai bun. Vă rugăm să comentați și să oferiți feedback-ul dvs.

    Ce este o carte de oaspeți?

    Desigur, aici vorbim despre cea mai tipică carte de oaspeți. În primul rând, acesta este un sistem care oferă utilizatorului posibilitatea de a introduce text, de a selecta o evaluare a unui anumit site și, de asemenea, de a specifica propriile date (nume, e-mail, http etc.). Este, de asemenea, un sistem de prezentare a datelor introduse de diverși utilizatori, cu posibilitatea de a naviga, de a trimite email-uri autorilor mesajelor. Variațiile sunt posibile și cu diferite setări și cu controlul vocabularului normativ.

    De ce avem nevoie

    Desigur, se presupune că cititorul este familiarizat cu elementele de bază ale programării ASP și SQL (familiaritatea cu primele părți ale acestui articol va fi suficientă pentru aceasta). În plus, avem nevoie de Microsoft SQL Server 7.0 sau 2000, ceva HTML sau editor de text (recomand să folosești Macromedia Dreamweaver UltraDev 4.0) și puțină răbdare.

    Crearea și pregătirea unei baze de date

    Pentru a organiza stocarea datelor introduse de utilizatori, aveți nevoie de un tabel în care puteți crea câmpuri pentru stocarea numelui utilizatorului, adresa de e-mail a acestuia, țara de reședință, adresa site-ului, adresa IP, valoarea evaluării utilizatorului site-ului pe o scară de cinci puncte, etc.:

    Pentru a integra cu ușurință sistemul în site-urile existente, se recomandă planificarea unui alt tabel pentru stocarea culorilor și a altor setări. Acest lucru vă va permite să modificați setările specificate în viitor fără a modifica parametrii corespunzători din textele sursă ale modulelor aplicației carte de oaspeți.

    • Rulați Configuratorul ODBC pentru surse de date - Start->Setări->Panou de control->Unelte de administrare->Surse de date ODBC.
    • Accesați fila System DSN și creați o nouă sursă de date făcând clic pe Adăugare...
    • În lista de drivere care apare, selectați driverul bazei de date - Microsoft SQL Server și faceți clic pe Următorul.
    • În linia Data Source Name, specificați numele bazei de date (în exemplul descris, Gustbook este numele prin care vă veți referi la aceasta în viitor).
    • În linia Server, specificați serverul la care se va face conexiunea și faceți clic pe Următorul.
    • Selectați modul de autentificare Cu SQL Server..., setați numele de utilizator și parola pentru a vă conecta la serverul SQL; definiți protocolul de comunicare server (Configurare client - butonul TCP/IP) și faceți clic pe Următorul de două ori, apoi faceți clic pe Terminare.
    • Veți vedea statistici despre acțiunile întreprinse și puteți utiliza butonul Testare sursă de date pentru a verifica sursa de date.
    • Ca rezultat, veți vedea o linie în lista surselor de date din sistemul dumneavoastră.

    Acum că baza de date este gata, puteți trece direct la crearea unei cărți de oaspeți.

    Integrarea sistemului într-un site web gata făcut

    Este clar că cartea de oaspeți în sine nu are sens. Judecă singur: cine are nevoie de un site conceput exclusiv pentru a colecta opiniile cititorilor. La urma urmei, pentru a aduna opinii despre ceva, trebuie mai întâi să prezinți acest lucru la judecata lor. Prin urmare, este necesar să se acorde o atenție deosebită problemelor legate de simplificarea încorporării sistemului în site-uri gata făcute.

    În special, pentru a facilita personalizarea sistemului pentru caracteristicile caracteristice ale unui anumit site, se recomandă (așa cum am menționat mai sus) să creați un tabel special pentru a stoca toate aceste preferințe pentru a introduce anumite valori specifice site-ului dvs. în ea. Avantajul evident al acestei abordări este că, pentru a încorpora sistemul într-un site deja terminat, nu trebuie să faceți modificări în codul sursă al modulelor, trebuie doar să modificați setările din tabelul corespunzător bazei de date.

    Imaginează-ți un exemplu de implementare a unui astfel de tabel: .

    După cum puteți vedea, există câmpuri pentru stocarea informațiilor despre numele și parola pentru accesarea modului de configurare a sistemului, despre culorile fundalului principal al mesajului utilizatorului, cadrele de sus și de jos (câmpurile Mid_Color, Top_Color, Bot_Color, respectiv) , despre culoarea și dimensiunea antetului formularului utilizat pentru introducerea datelor utilizator (câmpurile Form_Color și, respectiv, FormTitleSize), despre culoarea, dimensiunea și stilul fontului textului mesajului în sine, câmpurile de informații, precum și paginile din cartea de oaspeți în sine (câmpurile MessageFontColor, MessageFontSize, MessageFontFace, InfoFontColor, InfoFontSize, InfoFontFace, PageFontColor, PageFontSize și respectiv PageFontFace), comută câmpurile pentru a permite trimiterea automată a notificărilor de mesaje noi prin e-mail către persoana responsabilă (de exemplu, managerul sau administratorul site-ului), câmpurile pentru stocarea adresei de e-mail a persoanei responsabile, textul mesajului cu mulțumiri pentru mesajul lăsat de utilizator, cu lista nu sunt permise x cuvinte și un comutator pentru modul lor de filtrare (dacă acesta din urmă este activat, atunci cuvintele din lista de cuvinte nevalide vor fi înlocuite automat în textul mesajului cu asteriscuri și astfel se va controla normativitatea vocabularului textelor site-ului). exercitat).

    Dezvoltarea sistemului de integrare a cărții de oaspeți presupune organizarea unei interfețe Web pentru setarea tuturor parametrilor pe care i-am avut în vedere (câmpurile tabelului de administrare).

    Integrarea sistemului într-un site deja terminat în forma sa pură poate crea unele dificultăți atât în ​​perceperea textului sursă, cât și în viitor, dacă, de exemplu, trebuie să dezactivați temporar cartea de oaspeți pe un anumit site. Prin urmare, vom încerca să dezvoltăm un sistem în așa fel încât integrarea lui într-un șantier finit să nu fie dificilă. Pentru a face acest lucru, este necesar să formați un modul independent al sistemului și să îl includeți în textul site-ului principal, acolo unde este necesar. Deci, de exemplu, textul paginii dvs. de site ar putea arăta astfel:

    ASP pe un platou de argint (Partea - 15) – Carte de oaspeți

    După cum puteți vedea, în primul caz, directiva de a include o pagină cu o carte de oaspeți () este indicată la locul potrivit, iar în al doilea caz, pagina site-ului original este prezentată simplu sub forma a trei elemente incluse secvenţial: începutul, pagina de carte de oaspeţi şi sfârşitul. Utilizarea cutare sau cutare mod de organizare a structurii paginii site-ului dvs. este o chestiune de gust și depinde atât de structura site-ului original, cât și de gradul de complexitate al acestuia.

    Pagina principală a cărții de oaspeți (fișier Guest.asp)

    Aplicația prezentată va avea o singură pagină, care va servi atât pentru afișarea mesajelor utilizatorului, cât și pentru navigarea și introducerea de mesaje noi. În funcție de valorile parametrilor cheie, se va efectua una sau alta acțiune, iar pagina va fi într-o stare sau alta. În primul rând, va trebui să dezvoltați acea parte a acesteia, care va afișa mesajele utilizatorului și care va conține link-uri către partea care servește la adăugarea de mesaje noi.

    Mai întâi, să scriem câteva funcții pentru lucrul cu șiruri de caractere:

    1. Funcția de înlocuire a unui șir gol cu ​​un spațiu și un singur ghilimeleu cu unul dublu:<% Function ChkString(string) If string = "" then string = " " ChkString = Replace(string, """, """") End Function %>
    2. Funcția de verificare a vocabularului textului mesajului pentru normativitate. Dacă cuvintele se potrivesc cu cuvintele din lista de cuvinte nevalide, înlocuiți-le cu asteriscuri:<% Function ChkBadWords(String2) strBadWords = objRec2("BadWords") bwords = split(strBadWords, "|") For i = 0 to ubound(bwords) String2 = Replace(String2, bwords(i), string(len(bwords(i)),"*"), 1,-1,1) Next ChkBadWords = String2 end function %>
    3. Funcția de formatare a textului introdus de utilizator. Dacă este necesar (dacă există un steag corespunzător în baza de date), textul va fi verificat (filtrat) pentru normativitate:<% Function FormatStr(String) on Error resume next String = Server.HTMLEncode(String) String2 = Replace(String, CHR(13), "") String2 = Replace(String, CHR(10) & CHR(10), "

      ") String2 = Înlocuiește(Șir, CHR(10), "
      ") Dacă objRec2("BadOn") = Adevărat, atunci String2 = ChkBadWords(String2) End if FormatStr = String2 End Function %>

    4. Funcția de verificare a câmpului:<% Function ValidateField(sFieldValue, sFieldType) Valid = True Select Case LCase(sFieldType) Case "name" If Len(sFieldValue) = 0 Then Valid = False Case "message" If Len(sFieldValue) = 0 Then Valid = False End Select ValidateField = Valid End Function %>
    5. Procedura pentru adăugarea de mesaje noi (atenție la modul în care se calculează adresa IP a computerului de pe care a fost trimis mesajul):
    <% Sub Update strSql = "insert into Messages (Name, Country, Email, URL,IP,Message,Rating) values ("" strSql = StrSql & ChkString(Request.Form("name")) & "", "" strSql = StrSql & ChkString(Request.Form("Country")) & "", "" strSql = StrSql & ChkString(Request.Form("email")) & "", "" strSql = StrSql & ChkString(Request.Form("URL")) & "", "" strSql = StrSql & Request.ServerVariables("REMOTE_ADDR") & "", "" strSql = StrSql & ChkString(Request.Form("Message")) & "", "" strSql = StrSql & ChkString(Request.Form("Rating")) & "")" objConn.Execute (StrSql) %>

    După aceea, parametrii de culori, dimensiuni, fonturi de design sunt extrași și aplicați din tabelul corespunzător:

    "culoare="<%=objRec2("PageFontColor")%>"dimensiune="<%=objRec2("FormTitleSize")%>">Vă mulțumim pentru intrarea în cartea noastră de oaspeți!

    "culoare="<%=objRec2("PageFontColor")%>"dimensiune="<%=objRec2("PageFontSize")%>"> Faceți clic aici pentru a vizualiza intrarea dvs

    Acum, trimiteți un e-mail managerului sau administratorului pentru a vă anunța despre o nouă intrare în cartea de oaspeți, dacă este necesar:

    <% If Not(Request.Form("email"))="" AND objRec2("AutoEmail")=True then Name = Request.Form("name") Email = Request.Form("email") sFrom = objRec2("YourEmail") sTo=Email sSubject = "Спасибо, Ваша запись в нашей гостевой книге принята!" sMessage = "Дорогой(ая) " & Name & vbcrlf _ & vbcrlf _ & objRec2("ThankMessage") & vbcrlf _ & vbcrlf _ & vbcrlf Set objNewMail = CreateObject("CDONTS.NewMail") objNewMail.Send sFrom, sTo, sSubject, sMessage Set objNewMail = Nothing End If If objRec2("YouEmail")=True then Name = Request.Form("name") Home_Page = Request.Form("url") Email = Request.Form("email") Message = Request.Form("message") Country = Request.Form("Country") Address = Request.ServerVariables("REMOTE_ADDR") Rating = Request.Form("Rating") If Rating ="0" then Rating="No Rating" End If sFrom = objRec2("YourEmail") sTo= objRec2("YourEmail") sSubject = "Новое сообщение" sMessage = "Привет," & vbcrlf _ & "Новое сообщение поступило в гостевую книгу" & vbcrlf _ & vbcrlf _ & ":" & vbcrlf _ & vbcrlf _ & Message & vbcrlf _ & vbcrlf _ & "Детали сообщения:" & vbcrlf _ & "Ваше имя: " & Name & vbcrlf _ & "Email: " & Email & vbcrlf _ & "URL: " & Home_Page & vbcrlf _ & "Страна: " & Country & vbcrlf _ & "Рейтинг: " & Rating & vbcrlf _ & "Адрес: " & Address Set objNewMail = CreateObject("CDONTS.NewMail") objNewMail.Send sFrom, sTo, sSubject, sMessage Set objNewMail = Nothing End If End Sub %>

    Formular pentru introducerea de noi valori

    De asemenea, este recomandabil să implicați în procedură afișarea unui formular folosit pentru adăugarea de mesaje noi (rețineți că formularul este închis pe sine, adică modulul care îl conține servește ca reacție la acesta):

    <% Sub ShowForm(Sign) %>

    >
    "culoare="<%=objRec2("PageFontColor")%>"dimensiune="<%=objRec2("FormTitleSize")%>"> Lăsați o intrare în cartea noastră de oaspeți

    ">* Indică câmpurile care trebuie reținute

    colspan=2> "culoare="<%=objRec2("PageFontColor")%>"dimensiune="<%=objRec2("PageFontSize")%>"> Numele dumneavoastră: *
    "dimensiune=30> <% If dictFields(LCase("name")) Then Response.Write "Trebuie să introduceți un nume
    " Altfel răspuns. Scrie "
    " Încheiere dacă %>
    colspan=2> "culoare="<%=objRec2("PageFontColor")%>"dimensiune="<%=objRec2("PageFontSize")%>"> E-mail:
    "dimensiune=30>
    colspan=2> "culoare="<%=objRec2("PageFontColor")%>"dimensiune="<%=objRec2("PageFontSize")%>"> URL:
    "culoare="<%=objRec2("PageFontColor")%>"dimensiune="<%=objRec2("PageFontSize")%>"> http:// "dimensiune=30>
    colspan=2> "culoare="<%=objRec2("PageFontColor")%>"dimensiune="<%=objRec2("PageFontSize")%>"> Tara:
    "dimensiune=30>
    "culoare="<%=objRec2("PageFontColor")%>"dimensiune="<%=objRec2("PageFontSize")%>"> Cum apreciați site-ul nostru?
    "culoare="<%=objRec2("PageFontColor")%>"dimensiune="<%=objRec2("PageFontSize")%> ">Comentariile dumneavoastră: *
    "color="red" size="-2"><% If dictFields(LCase("message")) Then Response.Write "Вы не ввели сообщение
    " Altfel răspuns. Scrie "
    " Încheiere dacă %>
    <% End Sub %>

    Aceasta este urmată de funcția principală de afișare a unui număr fix de mesaje de utilizator (valoarea preluată din tabelul cu setări administrative):

    <% Sub Show NumPerPage=INT(objRec2("NumPerPage")) If Request.QueryString("page") = "" Then iPageCurrent = 1 Else iPageCurrent = CInt(Request.QueryString("page")) End If Set objRec = Server.CreateObject ("ADODB.Recordset") StrSql = "SELECT * FROM Messages ORDER BY ID DESC;" objRec.PageSize = NumPerPage objRec.CacheSize = NumPerPage objRec.Open StrSql,objConn,3,1,&H0001 iPages = objRec.PageCount TotalRows = objRec.RecordCount If iPageCurrent >iPages Apoi iPageCurrent = iPages Dacă iPageCurrent< 1 Then iPageCurrent = 1 If iPages = 0 Then Response.Write "Не найденно записей!" Else ObjRec.AbsolutePage = iPageCurrent %>

    "culoare="<%=objRec2("PageFontColor")%>"dimensiune="<%=objRec2("PageFontSize")%>"> Total în carte <%=TotalRows%> intrări pe <%=iPages%> pagina(e)

    <% iRecordsShown = 0 Do While iRecordsShown < NumPerPage And Not objRec.EOF Rating = ObjRec("Rating") If IsNull(Rating) or Rating="0" then Rating = "nr" Else Rating = ObjRec("Rating") End If If IsNull(ObjRec("URL")) then Link = "Не указан URL" Else Link = "http://" & ObjRec("URL") & "" End If Email = FormatStr(ObjRec("Email")) Name = FormatStr(ObjRec("Name")) %>
    "> "culoare="<%=objRec2("InfoFontColor")%>"dimensiune="<%=objRec2("InfoFontSize")%>"><%=ObjRec("DateID") %> "> "culoare="<%=objRec2("InfoFontColor")%>"dimensiune="<%=objRec2("InfoFontSize")%>">Evaluare site: .gif" height="14" width="65">
    "> "culoare="<%=objRec2("MessageFontColor")%>"dimensiune="<%=objRec2("MessageFontSize")%>"><%=FormatStr(ObjRec("Message"))%>
    "> "culoare="<%=objRec2("InfoFontColor")%>"dimensiune="<%=objRec2("InfoFontSize")%>"> <% If IsEmpty(Email) or Email=" " then Response.Write Name Else Response.Write "" & Nume Sfârșit dacă %> "> "culoare="<%=objRec2("InfoFontColor")%>"dimensiune="<%=objRec2("InfoFontSize")%>"><%=FormatStr(ObjRec("Country")) %> IP:<%= ObjRec("IP") %> "> "culoare="<%=objRec2("InfoFontColor")%>"dimensiune="<%=objRec2("InfoFontSize")%>"> <%=Link%>

    <% iRecordsShown = iRecordsShown + 1 objRec.MoveNext Loop if iPages >1 apoi %>

    "culoare="<%=objRec2("PageFontColor")%>"dimensiune="<%=objRec2("PageFontSize")%>"> Pagini: <% For I = 1 To iPages If I = iPageCurrent Then Response.Write "„&I&”" Altfel răspuns. Scrie " „&I&”„ Încheiați dacă următorul răspuns. Scrieți ”" Else Response.Write " " End If End If objRec.Close Set objRec = Nimic End Sub %>

    Fiți atenți la modul în care se formează și se implementează linkul pentru a vizualiza pagina următoare cu o astfel de „porțiune” de mesaje:

    Răspuns.Scrie" „&I&” "

    După cum puteți vedea, numărul paginii îi este transmis ca valoare a parametrului paginii, iar ulterior, dacă această valoare nu este egală cu 1, afișarea mesajelor nu începe de la primul mesaj, ci de la cel care va fi primul în contul de pe pagină cu numărul corespunzător specificat în parametrul:

    <% NumPerPage=INT(objRec2("NumPerPage")) If Request.QueryString("page") = "" Then iPageCurrent = 1 Else iPageCurrent = CInt(Request.QueryString("page")) End If %>Urmează textul sursă al modulului însuși, în care se realizează conexiunea la baza de date și se recuperează înregistrările (în exemplul descris, aceasta va fi singura înregistrare) din tabelul de setări administrative admin:<% Set objConn = Server.CreateObject ("ADODB.Connection") objConn.Open StrConn Set objRec2 = Server.CreateObject ("ADODB.Recordset") ConfigSql = "SELECT * FROM Admin;" objRec2.Open ConfigSql,objConn,0,1,&H0001 %>

    Apoi puteți stila titlul și etichetele principale ale paginii HTML:

    ASP pe un platou de argint partea 15 - Cartea de oaspeți DIY

    "culoare="<%=objRec2("PageFontColor")%>"dimensiune="<%=objRec2("PageFontSize")%>">

    Vezi cartea de oaspeti | Lăsați o înregistrare în cartea de oaspeți

    Și, în sfârșit, bucla principală pentru procesarea paginii dvs. principală și unica asp a modulului va arăta astfel:

    <% select case Request.QueryString("mode") case "post" Dim Field Dim dictFields Set dictFields = Server.CreateObject("Scripting.Dictionary") For Each Field in Request.Form If ValidateField(Request.Form(Field), Field) = False Then dictFields.Add LCase(Field), True End If Next If Request.Form.Count <>0 Și dictFields.Count = 0 Apoi apelați Update Else If Request.Form.Count<>0 Apoi End If ShowForm(„Semn”) End If case „show” Apel Afișează cazul Altfel Apel Afișează End Selectează %>

    Există doar două cazuri (cazuri) luate în considerare aici, corespunzătoare două funcții ale aplicației noastre web: adăugarea unei noi înregistrări în cartea de oaspeți (valoarea parametrului mod = „post”) și vizualizarea mesajelor din cartea de oaspeți (valoarea parametrului mod = „afișare”) .

    <% objRec2.Close Set objRec2 = Nothing s objConn.Close Set objConn = Nothing Response.Write "

    " %>

    Concluzie

    Am considerat încă o componentă funcțională a site-ului și l-am făcut imediat portabil. Rezultatul a fost un cod sursă destul de complex în ceea ce privește percepția. Deși un număr mare de parametri preluați din tabelul administrativ a făcut oarecum mai dificilă înțelegerea codului sursă al modulului, totuși, folosirea lor odată pentru totdeauna vă va scuti de a fi nevoit să editați codul atunci când se modifică. Sistemul dezvoltat de noi este destul de acceptabil în utilizare și, datorită modularității implementării sale și abordării implementării sale pe site-urile existente descrise în articol, poate fi folosit ca carte de oaspeți pe un site de aproape orice grad de complexitate .

    Desigur, ar trebui luată în considerare și interfața Web pentru editarea, adăugarea și ștergerea setărilor administrative (scheme), dar acest lucru va dura mult timp și, prin urmare, autorul va încerca să o acopere într-una dintre următoarele părți ale acestui articol.

    ComputerPress 11 "2001