Active Server Pages,ActiveServerPages+,ASP,ASP+,aspx,VBScript,IIS,internet,intranet,programming,programowanie,XML,Extensible Markup Language,kurs,opis,HTML,Hypertext Markup Language,JScript,JavaScript,wyszukiwarka,znajdz,instrukcja,Stelmik,Stelmi,free,darmo,zadarmo,free,serwer,server,www,konta,PHP,perl,klient,uslugi,asp,sklep internetowy,sklepy internetowe,e-sklep,esklep,tworzenie stron internetowych,strony internetowe,strony www,tworzenie stron www,strony internetowe,web page,webpage,creating,Krzysztof Stelmach,Krzysztof,Stelmach,www.stelmach.info,www.asp.z.pl
 
Ledger Nano X - The secure hardware wallet
IP: 18.118.227.69 
 
 ASP / PRZESYŁANIE DANYCH
Szukaj:  
Czw, 18.04.2024r.
KURSY » języki - serwer » ASP » Przesyłanie danych
 

1. Wysyłanie danych do użytkownika

W tej części zostanie pokazane jak połączyć VBScript z HTML oraz jak umieścić rezultat wykonania kodu VBScript w dokumencie HTML wysłanym do przeglądarki (klienta). Posłużę się przykładem, który informuje o godzinie na serwerze oraz o ilości godzin w stosunku do dnia 01-01-2000. Przykład zawiera funkcje operujące na dacie i czasie.

Przykład.

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
<% @LANGUAGE = VBScript %>
<%
Option Explicit
Response.Expires = 0
Dim czasTeraz, czasZaGodzine, czasRoznica
czasTeraz = Time
czasZaGodzine = DateAdd("h", 1, czasTeraz)
czasRoznica = DateDiff("h", Now, #1/1/2000#)

%>
<HTML>
<BODY>
Witaj Użytkowniku.<BR>
Godzina na serverze: <% =czasTeraz %>.<BR>
Za godzinę czas na serwerze będzie: <% =czasZaGodzine %>.<BR>
<%
If czasRoznica > 0 Then
17:
18:
Response.Write "Jeszcze " & czasRoznica & " godzin "
Response.Write "do roku 2000.<BR>" & VbCrLf
19: ElseIf czasRoznica < 0 Then
20:
21:
Response.Write "Już " & Abs(czasRoznica) & " godzin minęło od "
Response.Write "rozpoczęcia roku 2000.<BR>" & VbCrLf
22: Else
23:
24:
Response.Write "Rok 2000 się właśnie rozpoczął.<BR>" & VbCrLf
Response.Write "<B>SZCZĘŚLIWEGO NOWEGO ROKU !</B><BR>" & VbCrLf
25:
26:
27:
28:
End If
%>
</BODY>
</HTML>

Kiedy zostanie otwarty ten plik w przeglądarce, na stronie pojawi się napis podobny do poniższego.

Witaj Użytkowniku.
Godzina na serwerze: 10:17:34 AM.
Za godzinę czas na serwerze będzie: 11:17:34 AM.
Już 8754 godzin minęło od rozpoczęcia roku 2000.

Jeśli podejrzy się źródło, zostanie wyświetlony następujący kod:

<HTML>
<BODY>
Witaj Użytkowniku.<BR>
Godzina na serwerze: 10:17:34 AM.<BR>
Za godzinę czas na serwerze będzie: 11:17:34 AM.<BR>
Już 8754 godzin minęło od rozpoczęcia roku 2000.<BR>
</BODY>
</HTML>

Teraz zostaną opisane poszczególne linie kodu. Pierwsza z nich to:

<% @LANGUAGE = VBScript %>

Dyrektywa @LANGUAGE została użyta w celu określenia języka skryptu dla pliku ASP. Ta komenda musi znajdować się w pierwszej linii przed jakimikolwiek innymi blokami kodu. Dyrektywa @LANGUAGE informuje IIS o użytym języku w skrypcie. Jej użycie nie jest konieczne, lecz zalecane, gdyż w razie zmiany w ustawieniach IIS dotyczących użytego języka w plikach *.asp, np. z VBScript na JScript, wszystkie pliki które będą zawierały komendy VBScript, a nie będą posiadały tej dyrektywy zwrócą błędy w składni.

Poniżej przedstawiona komenda VBScript nakazuje deklarację każdej użytej zmiennej z skrypcie, używając instrukcji Dim, Private, Public oraz ReDim.

Option Explicit

Komenda powinna się znajdować tuż po linii zawierającej dyrektywę @LANGUAGE. Po jej wpisaniu należy deklarować wszystkie zmienne przed ich użyciem. Takie rozwiązanie jest bardzo pomocne, gdy w skrypcie użyje się błędnie wpisanej zmiennej ponieważ w wyniku otrzyma się błąd w postaci: Variable undefined, w momencie wywołania go spod przeglądarki. W takim przypadku będzie wiadomo, że jakaś nazwa zmiennej została wpisana niepoprawnie. Zaoszczędzi to wielu godzin szukania błędu. Jeśli się stwierdzi, że skrypt działa poprawnie można tą linię usunąć, lecz w trakcie tworzenia i modyfikowania skryptu jest ona niemal nieodzowna. Na przykład jeśli w programie użyta zostanie zmienna nazwa i w jakimś miejscu, przez zupełny przypadek, wpisana zostanie zamiast nazwa np. nawza, wtedy przy braku tej komendy program potraktuje zmienną nawza jako nową zmienną, sformatuje ją, czyli ustali jej wartość na 0 lub ciąg o zerowej długości, a na stronie nie pojawi się zamierzona informacja przechowywana w zmiennej nazwa.

W czwartej linii znajduje się komenda

Response.Expires = 0

Informuje ona przeglądarkę po jakim czasie zawartość strony traci ważność. Wartość określana jest w minutach. W naszym przypadku wynosi ona zero. Jeśli jest potrzeba określenia daty upływu ważności należałoby wpisać na przykład następującą komendę:

Response.ExpiresAbsolute = #January 1, 2000 00:00:00#

W przypadku obu komend muszą one znaleźć się przed całą zawartością dokumentu formatu HTML oraz komendami Response.Write (chyba, że użyto komendy Response.Buffer = TRUE, ale o tym za chwilę). W przeciwnym wypadku przeglądarka pokaże błąd w postaci: Response object error (Header error). Błąd jest związany z tym, iż komenda Response.Expires została wysłana do przeglądarki po wcześniejszym przesłaniu nagłówka HTTP.

Instrukcja

Dim czasTeraz, czasZaGodzine, czasRoznica

deklaruje użyte w skrypcie zmienne. Są one od siebie oddzielone przecinkiem. Kolenjne linie:

czasTeraz = Time
czasZaGodzine = DateAdd("h", 1, czasTeraz)
czasRoznica = ("h", Now, #1/1/2000#)

określają wartości zadeklarowanych zmiennych. Pierwsza linia ustala wartość zmiennej czasTeraz na wartość aktualnej godziny serwera, druga ustawia wartość zmiennej czasZaGodzine na wartość zmiennej czasTeraz zwiększonej o jedną godzinę, zaś trzecia linia zapisuje do zmiennej czasRoznica wartość równą różnicy czasu aktualnego i daty 1/1/2000 określoną w godzinach. Jeśli bieżący czas jest przed datą 1/1/2000 to wartość czasRoznica jest dodatnia, zaś jeśli jest po tej dacie - zmienna przyjmuje wartość ujemną.
Zmienne mają już określone wartości, teraz należałoby je pokazać użytkownikowi w oknie przeglądarki. Do tego służy instrukcja

<% Respone.Write(tekst) %>

lub inna równoważna, użyta w przykładzie

<% =tekst %>

Linia 9, tj. %>, zamyka blok kodu VBScriptu.

Linie 10-14 zawierają kod HTML z wartościami zmiennych czasTeraz, czasZaGodzine oraz czasRoznica. W liniach 16-25 została użyta instrukcja warunkowa If. Instrukcja Response.Write wysyła do przeglądarki tekst. Może on zawierać zmienne i łańcuchy. Łączenie tekstu ze zmiennymi odbywa się za pomocą znaku &. Jeśli chcemy wysłać sygnał przejścia do następnej linii należy dołączyć stałą VbCrLf, np.

Response.Write "Wartość=" & wartosc & ".<BR>" & VbCrLf

Buforowanie

Bufor jest magazynem, który przechowuje dane przez pewien czas. Użycie buforowania pozwala na umieszczenie komendy Response.Expires za kodem HTML lub instrukcją Response.Write. Przykład przedstawiający buforowanie:

<% @LANGUAGE = VBScript %>
<%
Option Explicit
Response.Buffer = TRUE
Response.Expires = 60

%>
<HTML>
<BODY>
Witaj Użytkowniku.<BR>
Teraz widzisz wiadomość 1.
<%
Response.Clear
Response.Expires = 0

%>
<HTML>
<BODY>
To jest szybkowygasająca wiadomość.
<%
Response.Flush
%>
</BODY>
</HTML>
<%
Response.End
%>
Ta linia nigdy nie zostanie wysłana do przeglądarki.

Kiedy zostanie uruchomiony powyższy kod na ekranie przeglądarki pojawi się napis:

To jest szybkowygasająca wiadomość.

Dodatkowo przeglądarka zostanie poinformowana, że zawartość strony straci natychmiast ważność.
Linia zawierająca:

Response.Buffer = TRUE

sygnalizuje, że strona będzie buforowana na serwerze i nie zostanie wysłana odpowiedź do przeglądarki klienta dopóki wszystkie instrukcje z bieżącej strony ASP nie zostaną przesłane lub dopóki nie zostaną wywołane metody Flush lub End obiektu Response. Komenda Response.Buffer musi znajdować się przed kodem HTML lub instrukcją Response.Write.

Linia zawierająca:

Response.Expires = 60

określa czas utraty ważności strony po 60 minutach. Takie rozwiązanie jest użyteczne w przypadku, gdy zawartość strony jest zmieniana co maksymalnie dwie godziny.

Linie zawierające:

<HTML>
<BODY>
Witaj Użytkowniku.<BR>
Teraz widzisz wiadomość 1.

są przechowywane w buforze (Response.Buffer = TRUE), ale nie zostaną nigdy wysłane do przeglądarki, ponieważ bufor jest czyszczony komendą:

Response.Clear

Także w kolejnej linii, tj. Response.Expires=0, ustawione jest natychmiastowy upływ ważności strony.
Następnie, specjalna, szybkowygasająca wiadomość jest przechowywana w buforze. Należy zauważyć, że musisz zaopatrzyć stronę we wszystkie znaczniki takie jak <HTML> lub <BODY> po tym, jak wyczyszczony zostanie bufor. Jeśli wymagane jest wysłanie w trybie natychmiastowym zawartości bufora do przeglądarki należy wykorzystać następującą instrukcję:

Response.Flush

Kolejne linie:

</BODY>
</HTML>

zostają wysłane do przeglądarki i zamkną dokument HTML.
Inną metodą obiektu Response jest End. Komenda:

Response.End

nakazuje serwerowi WWW zakończyć przetwarzanie skryptu i wysłać bieżący rezultat. Wszystkie linie znajdujące się pod tą komendą nie zostaną wykonane (nie zostaną przesłane do przeglądarki).

Przekierowanie użytkownika do innej strony

Przekierowanie użytkownika do innej strony można zastosować w przypadku:

-autoryzacji - kiedy użytkownik nie jest zalogowany, może zostać przekierowany do strony, na której może się zalogować.
-formularza - kiedy formularz na stronie ASP jest wysłany sam sobie i następuje sprawdzenie poprawności wprowadzonych danych. Jeśli dane są niepoprawne, wtedy zostaje wysłany komunikat o błędzie wraz z oryginalną formą formularza. Jeśli formularz został wypełniony poprawnie, wtedy użytkownik zostaje przekierowany do innej strony.

W celu dokonania przekierowania należy wywołać metodę Redirect obiektu Response. Przykład:

Response.Redirect "/katalog/nowastrona.asp"

lub równoważne

Response.Redirect("/katalog/nowastrona.asp")

Uwaga! Żadne dane wyjściowe nie mogą znaleźć się przed metodą Redirect.

Formatowanie ustawień regionalnych

Postać daty w różnych standardach wygląda odmiennie, czy to dla użytkowników anglojęzycznych, czy niemieckich. Domyślne ustawienia regionalne serwera są odpowiedzialne za jej wygląd. Ustawienia te można zmieniać korzystając z właściwości LCID obiektu Session. Poniżej została przedstawiona tabela z wartościami dla różnych ustawień regionalnych.

Nazwa regionu LCID Data i czas
angielski (australijski) 3081 26/01/99 2:37:46
angielski (kanadyjski) 4105 26/01/99 2:37:46 AM
angielski (UK) 2057 26/01/99 02:37:46
angielski (amerykański) 1033 1/26/99 2:37:46 AM
francuski (standard) 1036 26/01/99 02:37:46
niemiecki (standard) 1031 26.01.99 02:37:46
japoński 1041 99/01/26 2:37:46
rosyjski 1049 26.01.99 2:37:46
hiszpański (współczesny) 3082  

2. Odbieranie danych od użytkownika

Zmienne środowiskowe

Czasem jest potrzeba uzyskania informacji na temat typu przeglądarki klienta, adresu IP, itp. W tym celu można posłużyć się grupą ServerVariables obiektu Request. Przykładem wykorzystania (odczytania) zmiennej środowiskowej jest poniższy zapis:

sciezkaURL = Request.ServerVariables("SCRIPT_NAME")

W przykładzie do zmiennej sciezkaURL zostanie zapisana rzeczywista ścieżka wykonywanego skryptu.
Teraz zostaną omówione ważniejsze zmienne środowiskowe:

SCRIPT_NAME - rzeczywista ścieżka do wykonywanego skryptu
CONTENT_LENGTH - informacje jakie zostały wysłane od klienta (użytkownika) przy pomocy metody POST do serwera
ALL_RAW - wszystkie nagłówki HTTP wysłane od przeglądarki wywołane uruchomieniem skryptu
HTTP_HeaderName - nazwa nagłówka HTTP
HTTP_USER_AGENT - nazwa przeglądarki, jej wersja i system operacyjny
HTTP_ACCEPT_LANGUAGE - preferowane języki
HTTP_REFERER - adres strony, która wywołała bieżący skrypt (stronę)
REMOTE_ADDR - adres IP klienta
SERVER_NAME - nazwa domeny serwera (np. www.nazwa.com), wykorzystywana w przypadku wielu domen na jednym serwerze
QUERY_STRING - zawartość wypełnionego i wysłanego formularza

Formularze

a) Metoda GET

Użycie metody GET sprawi, że wszystkie dane umieszczone w wypełnionym formularzu zostaną dołączone do adresu URL i będą odczytywalne od strony serwera poprzez użycie grupy Request.QueryString. Przykładowy adres po wysłaniu formularza, którego metodą jest GET, może wyglądać następująco:

http://www.nazwa.com/plik.asp?pole1=wartosc1&pole2=wartosc2&pole3=wartosc3

Wartością zwróconą poprzez wywołanie komendy Request.QueryString("pole2") będzie wartosc2.

b) Metoda POST

W przeciwieństwie do metody GET, metoda POST nie dołącza danych z formularza do adresu URL. Dane od strony serwera są odczytywane przy pomocy zbioru Request.Form.

Przykład odczytania zawartości pola tekstowego z formularza, który używa metody POST. Fragment dokumentu HTML:

<FORM ACTION="plik.asp" METHOD="POST">
Podaj imię: <INPUT TYPE="Text" NAME="imie"><BR>
Podaj nazwisko: <INPUT TYPE="Text" NAME="nazwisko"><BR>
<INPUT TYPE="Submit" NAME="submit" VALUE="Wyslij">
</FORM>

Odczytanie pola z imieniem odbywa się poprzez wpisanie komendy:

Request.Form("imie")

zaś odczytanie pola z nazwiskiem:

Request.Form("nazwisko")

Podobnie dzieje się w przypadku metody GET, z tą różnicą, że zamiast Request.Form wpisać należy Request.QueryString. Przydatne funkcje:

Trim(łańcuch) - wycina wszystkie spacje znajdujące się na początku łańcucha do momentu napotkania innego znaku
isNumeric(dana) - zwraca wartość TRUE jeśli dana jest liczbą, w przeciwnym wypadku zwraca wartość FALSE
CInt(liczba) - konwertuje liczbę na liczbę całkowitą
CLng(liczba) - konwertuje liczbę na liczbę całkowitą długą
CStr(łańcuch) - konwertuje łańcuch na łańcuch (ciąg znaków)
isDate(dana) - zwraca wartość TRUE jeśli dana jest datą, w przeciwnym wypadku zwraca wartość FALSE
Replace(łańcuch, ciąg1, ciąg2) - zamienia każdy ciag1 na ciag2 napotkany w łańcuchu
 
do góry ^ 
Jesteś 4450964 odwiedzającym
 
 
Copyright © 2003-2024 Krzysztof Stelmach, Wszelkie prawa zastrzeżone.
 
System reklamy Test