Tablice w PHP Jak odczytać coś od użytkownika? POST vs. GET Walidowanie po stronie serwera Prosta CAPTCHa

Podobne dokumenty
Aplikacje internetowe. Informacja o języku PHP. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne.

Można inicjować tablicę inną tablicą np. $owoce = array( Jabłko, Gruszka, Banan ); $owoce_kopia = $owoce; Jeśli chcemy stworzyć tablicę zawierającą

PHP: bloki kodu, tablice, obiekty i formularze

HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do śledzenia użytkownika

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Stałe definiuje się używając funkcji define. Przykład: define( PODATEK, 22); define( INSTALACJAOS, 70); define( MS, Microsoft );

FORMULARZE. G. Przęczek

Wprowadzenie do języka JavaScript

Aplikacja internetowa = program działający w środowisku przeglądarki internetowej. Aplikacje i/lub dynamiczne strony internetowe:

Lekcja 7 Tablice. Definiowanie tablicy

HTML ciąg dalszy. Listy, formularze

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

Formularze HTML. dr Radosław Matusik. radmat

Wykład 03 JavaScript. Michał Drabik

FORMULARZE Formularz ma formę ankiety, którą można wypełnić na stronie. Taki formularz może być np. przesłany pocztą elektroniczną .

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

LABORATORIUM 2 WSTĘP DO SIECI TELEINFORMATYCZNYCH TABELE I FORMULARZE

Bazy Danych i Usługi Sieciowe

Ćwiczenie 7 - Formularze

Systemy internetowe Wykład 3 PHP

SSK - Techniki Internetowe

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Zajęcia 10 obsługa formularzy w PHP

Elementem tablicy może być każdy typ zmiennej (z innymi tablicami i obiektami włącznie). Tablica dwuwymiarowa, zawiera dwa indeksy, np.

Formularze Pobierają dane od użytkownika strony i wysyłają je do przetworzenia na serwerze (gdzie potrzebne są skrypty,któredaneprzetworzą najczęściej

Instrukcje dołączania plików

Na początku utworzymy formularz w czystym języku HTML i przetestujemy go za pomocą przeglądarki WWW.

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Podstawy technologii WWW

Laboratorium 1 Wprowadzenie do PHP

Podstawy JavaScript ćwiczenia

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Komponent Formularz. Rys. 1. Strona programu Joomla - Rys. 2. Instalacja komponentu

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Informatyka II. Laboratorium Aplikacja okienkowa

TABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych.

dokumentacja Edytor Bazy Zmiennych Edytor Bazy Zmiennych Podręcznik użytkownika

Dane - pobieranie, przekazywanie i przechowywanie. dr Beata Kuźmińska-Sołśnia

echo $tablica[2]; // Wyświetlony zostanie napis "Wpis numer 2";

Wprowadzenie do Internetu Zajęcia 5

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Podstawy Programowania C++

Bazy danych TERMINOLOGIA

Zmienne i stałe w PHP

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Modele danych walidacja widoki zorientowane na model

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Umieszczanie kodu. kod skryptu

Dokumentacja SMS przez FTP

Aplikacje internetowe

Zaawansowane aplikacje internetowe

Tablice. Jones Stygar na tropie zmiennych

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Obiektowe bazy danych

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

obecnie tabeli nie stosuje się do budowy struktury witryny (stosuje się za to pozycjonowanie elementów i warstwy) faktycznie wymagają

Aplikacje internetowe - laboratorium

Komunikacja między klientem, a skryptem PHP, oraz operacje na plikach

Dokument hipertekstowy

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

1 Podstawy c++ w pigułce.

Formularze. 1. Formularz HTML

Aplikacje WWW - laboratorium

Instrukcja korzystania z usługi 2SMS. Wersja 2.0 [12 stycznia 2014] bramka@gsmservice.pl

Krótki kurs JavaScript

TIN Techniki Internetowe zima

Aplikacje WWW - laboratorium

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

WinSkład / WinUcz 15.00

Języki programowania wysokiego poziomu. PHP cz.2.

ZMIENNE. Podstawy PHP

Podstawy technologii WWW

Wysyłanie pliku na serwer. Plik na serwerze.

82 => 'iweifj', 'js7d' => 367, 'dfd' => $jakas_tablica, 73 => $obiekt;

INSTRUKCJA UŻYTKOWNIKA PROGRAMU VAT2011 VER 1.0

Bazy Danych i Usługi Sieciowe

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Ćwiczenie 1. Wprowadzenie do programu Octave

Kurs walut. Specyfikacja projektu. Marek Zając

7. Pętle for. Przykłady

14. POZOSTAŁE CIEKAWE FUNKCJE

Programowanie w języku Python. Grażyna Koba

Ćwiczenie: JavaScript Cookies (3x45 minut)

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Metody numeryczne Laboratorium 2

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Transkrypt:

Tablice w PHP Jak odczytać coś od użytkownika? POST vs. GET Walidowanie po stronie serwera Prosta CAPTCHa

Krótkie przypomnienie formularzy Ogólny schemat prostego formularza:

Atrybuty formularza (<form>) accept - typy zawartości MIME akceptowane przez serwer (opcjonalny) accept-charset - zestaw znaków akceptowanych przez serwer (opcjonalny) action - rodzaj akcji podejmowanej po naciśnięciu przycisku typu submit (wymagany) enctype - sposób kodowania wysyłanych informacji, np. enctype="text/plain" (opcjonalny) method - metoda wysyłania danych na serwer (opcjonalny), wartości: get, post. name - unikatowa nazwa formularza (opcjonalny) target - okno docelowe, do którego wysyłany jest efekt działania skryptu obsługującego formularz (opcjonalny)

Atrybuty elementu input accept (dla type="file") - określa akceptowaną przez serwer listę typów dokumentów MIME, (opcjonany). accesskey - przypisuje klawisz szybkiego dostępu do elementu formularza (opcjonalny). alt (dla type="image") - określa alternatywny tekst opisujący grafikę dla przeglądarki mającej problem z wyświetleniem pola (opcjonalny). checked (dla type="{checkbox, radio}")- ustala początkowe zaznaczenie pola radio lub checkbox (opcjonalny). disabled - wyłącza pole (opcjonalny). maxlength (dla type="{file, password, readonly, text} ") - ustala maksymalną długość tekstu, który można wprowadzić w polu (opcjonalny). name (oprócz type="reset") - nadaje polu unikatową nazwę (wymagany). readonly (oprócz type="{reset, readonly}") - blokuje możliwość zmieniania zawartości pola (opcjonalny). size (dla type="{file, password, readonly, text}") - określa szerokość wyświetlanego pola (opcjonalny). src (dla type="image") - podaje położenie grafiki dla przycisku (opcjonalny). type - określa rodzaj pola (wymagany), wartości: button, checkbox, file, hidden, image, password, radio, reset, submit, text. tabindex [="liczba"] określa kolejność wyboru elementu przyciskiem tabulacji (opcjonalny). value - określa początkową, domyślną wartość danego pola (niewymagany).

Przykładowy formularz

POST Tablica $_POST Dowolna długość tekstu przesyłanego. Wysyłanie odbywa się w nagłówkach protokołu HTTP Użytkownik nie widzi wewnętrznej reprezentacji pól. Brak cache owania przez serwery proxy Po kliknięciu wstecz wartości zostają Konieczne kliknięcie wyślij aby wysłać dane Metoda ta służy także do uploadowania plików. Tablica $_GET GET Ograniczenie ilości przesyłanych danych. Wysyłanie poprzez adres strony. Użytkownik widzi reprezentację: "skrypt.php?imie=wartosc&naz wisko=wartosc". Proxy cache uje zapytania Po kliknięciu wstecz dane znikają Wystarczy wejść na odpowiednio przetworzony adres Brak możliwości uploadu

Dostęp do zmiennych formularza Założenie: Pole formularza, którego wartość chcemy odczytać nosi nazwę nick. W skrypcie PHP można uzyskać dostęp do zawartości każdego pola formularza na 3 sposoby: Traktując nazwę pola jako zmienną o identycznej nazwie: echo( $nick ); Na serwerze musi być włączona opcja register_globals. Domyślnie jest ona wyłączona! Wykorzystując zmienne superglobalne $_GET, $_POST, $_REQUEST: echo $_POST["nick"]; Wykorzystując styl rozwlekły: echo( $HTTP_POST_VARS[ nick ] ); Można go wyłączyć nadając odpowiednią wartość dyrektywnie register_long_arrays.

Dostęp do zmiennych formularza Magiczny kod: Print_r - displays information about a variable in a way that's readable by humans

Ćwiczenia Proszę stworzyć formularz (przesyłany metodą POST) zawierający pola nick, adres e-mail, numer gg, adres www, treść komentarza. Jako adres action proszę podać stworzoną przez siebie stronę, która wyświetli podany komentarz i będzie korzystać z kolorystyki bloga. Następnie proszę wpisać jakieś dane testowe do formularza i za pomocą przycisku typu submit sprawdzić czy wszystkie dane zostały przesłane poprawnie.

Tablice Tablica zmienna przechowująca zbiór lub sekwencję wartości. Tablice przechowujące inne tablice to tablice wielowymiarowe. W PHP są 2 typy tablic: Tablice indeksowane numerycznie Tablice asocjacyjne (indeks to np. ciąg znaków) Tablice numeryczne domyślnie mają indeksy (klucze) zaczynające się od 0, ale może to być łatwo zmienione. Tablice indeksowaną numerycznie można utworzyć na kilka sposobów. Jeśli chcemy utworzyć tablicę zawierającą określone wartości może skorzystać z konstrukcji array(). Przykład: $owoce = array( Jabłko, Gruszka, Banan );

Inicjowanie tablic Można inicjować tablicę inną tablicą np. $owoce = array( Jabłko, Gruszka, Banan ); $owoce_kopia = $owoce; Jeśli chcemy stworzyć tablicę zawierającą jakąś sekwencję wygodnie jest skorzystać z funkcji range(). Przykład: $liczby = range(1, 10); $nieparzyste = range(1, 10, 2); $litery = range ( A, Z ); Można inicjować tablice bezpośrednio z pliku czy bazy danych. Ale o tym kiedy indziej Można tworzyć elementy i całe tablice w locie np. $owoce = array( Jabłko, Gruszka, Banan ); //indeks od zera $owoce[3] = Brzoskinia ; //Idę jeść Oczywiście elementu tablicy wartość odczytujemy podając nazwę tablicy i indeks w nawiasach klamrowych. Można też tak: $owoce[] = Morela ; //Wtedy zostanie wzięty największy dotąd użyty indeks i powiększony o jeden (w naszym przypadku będzie to 3 + 1 = 4)

Dobieranie się do elementów tablicy Pętla for? for ($i = 1: $i<count($owoce); $i++) echo $owoce[$i]." "; Pętla foreach? foreach (wyrażenie_tablicowe as $wartość) instrukcja; foreach (wyrażenie_tablicowe as $klucz => $wartość) instrukcja; Przykład: foreach ($owoce as $owc) echo Wartość: $owc\n"; foreach ($owoce as $klucz => $owc) echo Indeks: $klucz; Wartość: $owc\n";

A może by tak tablica asocjacyjna? Tablice asocjacyjne definiujemy używając operatora =>. Przykład: $owoce = array( Jabłko => 2, Gruszka => 3.5, Banan => 1.7); Wówczas aby dostać się do wartości trzeciego elementu (sprawdzić ile kosztują banany) należy napisać: echo($owoce[ Banan ]); Aby przejrzeć elementy tablicy asocjacyjnej można skorzystać z pętli foreach() albo używając funkcji each() oraz list(). Przykład: while ($element = each($owoce)){ echo $element['key']; //lub $element[0]; echo $element['value']; //lub $element[1]; } Each zwraca bieżący element tablicy (a raczej parę klucz wartość jako tablicę) i ustawia wskaźnik bieżącego elementu tablicy na następny jej element. Mała uwaga: Wskaźnik bieżącego elementu tablicy zostaje na jej końcu, więc trzeba wywołać funkcję reset($wyrażenie_tablicowe), aby go przestawić na początek. while(list($owoc, $cena) = each($owoce)) echo $owoc - $cena \n ; Poniższy kod daje ten sam efekt, ale funkcja list() została użyta by rezultat działania funkcji each() zamienić na dwie logicznie brzmiące zmienne.

Operatory tablicowe- powtórka Nazwa Przykład Rezultat + Unia $x + $y Zwraca tablicę zawierającą wszystkie elementy tablic $x i $y == Równość $x == $y Zwraca true jeśli $x i $y mają te same pary kluczy i wartości === Identyczność $x === $y Zwraca true jeśli $x i $y mają te same pary kluczy i wartości, ułożone w tej samej kolejności!= Nierówność $x!= $y Zwraca true jeśli $x i $y nie są sobie równe <> Nierówność $x <> $y Zwraca true jeśli $x i $y nie są sobie równe!= Nieidentyczność $x!== $y Zwraca true jeśli $x i $y nie są identyczne Uwaga dla Unii: Jeśli elementy z $y mają takie same klucze jak niektóre elementy już obecne w $x to nie zostaną one dodane (nadpisane).

Tablice wielowymiarowe $owoce = array ( array('jb', 'Jabłko', 2), array('gr', 'Gruszka', 3.5), array('bn', 'Banan', 1.7)); Albo tak: $owoce = array ( array('kod' => 'Jb', 'Nazwa' => 'Jabłko', 'Cena' => 2), array('kod' => 'Gr', 'Nazwa' => 'Gruszka', 'Cena' => 3.5), array('kod' => 'Bn', 'Nazwa' => 'Banan', 'Cena' => 1.7)); Albo tak: $owoce = array(array()); //nie wymagane ale dobrze mieć $owoce[0][1] = "Bn"; $owoce[0][2] = "Banan"; $owoce[0][3] = 1.7; Oczywiście nie ma ograniczenia na liczbę wymiarów Kto wymyśli rozsądny przykład tablicy 10cio wymiarowej?

Sortowanie tablic 1. Funkcja sort(). $owoce = array( Jabłko, Morela, Gruszka, Banan ); sort($owoce); I już mamy tablicę posortowaną leksykograficznie. Funkcja sort zwraca uwagę na wielkość liter: A < Z < a Można też sortować liczby w tablicy: $owoce = array(100, 2, 100, 6); sort($owoce); Ale sort ma też drugi parametr opcjonalny, który może przyjmować następujące wartości: SORT_REGULAR domyślne zachowanie SORT_NUMERIC porównaj elementy numerycznie SORT_STRING porównaj elementy jak łańcuchy znaków SORT_LOCALE_STRING porównaj elementy jak łańcuchy znaków wykorzystując systemowe ustawienia języka i porównywania znaków (locale). Po co ten parametr? Jak porównujemy np. 13 i 3 to pod względem numerycznym 3 < 13, a pod względem leksykograficznym 13 < 3.

Sortowanie tablic 2 Niestety sort() nie zachowuje przyporządkowania do konkretnych kluczy tj.: $owoce[5] = "Bn"; $owoce[7] = 1.7; $owoce[8] = "Banan"; sort($owoce); Da w wyniku uporządkowanie: 0 Banan; 1 Bn; 2-1.7 Dlatego do sortowania tablic asocjacyjnych (lub tam, gdzie nam zależy na zachowaniu przyporządkowania kluczy) należy stosować dwie inne funkcje: asort($wyrażenie_tablicowe) - sortuje według wartości elementów ksort($wyrażenie_tablicowe) - sortuje według kluczy Wszystkie przedstawione funkcje sortują elementy tablic jednowymiarowych rosnąco. Ale mają swoje odpowiedniki zawierające literę r w nazwie, sortujące w porządku malejącym. Są to: rsort($wyrażenie_tablicowe) arsort($wyrażenie_tablicowe) krsort($wyrażenie_tablicowe) Ich działanie jest analogiczne do przedstawionych wcześniej braci.

Sortowanie tablic wielowymiarowych Aby posortować tablice wielowymiarowe należy zdefiniować funkcję porównującą. Funkcja przyjmuje 2 parametry (dwa elementy, które będziemy porównywać ze sobą) i powinna zwrócić: Wartość 0 jeśli te elementy są równe. Wartość ujemną jeśli pierwszy element jest mniejszy od drugiego. Wartość dodatnią jeśli pierwszy element jest większy od drugiego. Przykładowa funkcja porównująca sortująca po wartościach drugiego wymiaru tablicy: function porownaj($x, $y) { if($x[1] == $y[1]) return 0; else if ($x[1] < $y[1]) return -1; else return 1; } Następnie wywołujemy funkcję usort($wyrażenie_tablicowe, funkcja_porównująca ) ;

Własne kryteria sortowania c.d. Oczywiście funkcja usort() może służyć do sortowania tablic jednowymiarowych o skomplikowanej strukturze wedle kryteriów podanych przez użytkownika. Literka u w funkcji usort() odnosi się do słowa użytkownik ponieważ to użytkownik określa funkcję porównującą. Funkcje asort() i ksort() również mają swoje odpowiedniki umożliwiające podanie kryteriów sortowania przez użytkownika w postaci funkcji uasort() i uksort(). Należy zauważyć, że bardzo łatwo można przerobić funkcję porównującą tak, aby dane były uporządkowane w odwrotnym porządku (malejąco). Pytanie do Sali: Co należy zrobić?

Funkcje i operacje na tablicach Funkcja shuffle($wyrażenie_tablicowe) Ustawia losowo kolejność elementów w tablicy. Funkcja array_reverse($wyrażenie_tablicowe) Zwraca kopię tablicy o tych samych elementach co tablica podana jako parametr, ale w odwrotnej kolejności. Ładowanie danych z pliku do tablicy $owoce = file("$_server[ DOCUMENT_ROOT ]/zamowienia.txt"); for($i = 0; i < count($owoce); i++) $linia = explode("\t", $owoce[$i]); Funkcja file() ładuje cały plik do tablicy. Każdy wiersz pliku staje się jednym elementem tablicy. Funkcja explode(string separator, string ciąg, [int limit]), dzieli wiersz na poszczególne pola (przy założeniu, że wartości w pliku są rozdzielone znakami tabulatora).

Inne operacje na tablicach Poruszanie się wewnątrz tablicy. Każda tablica posiada wewnętrzny wskaźnik pokazujący aktualny element tablicy. Gdy zostaje stworzona nowa tablica, wskaźnik wskazuje na pierwszy element tablicy. Funkcja current($nazwa_tablicy) zwraca element, na który aktualnie wskazuje wewnętrzny wskaźnik. each($nazwa_tablicy) pobiera aktualny element i przesuwa wskaźnik o jeden do przodu. next($nazwa_tablicy) najpierw przesuwany jest wskaźnik, a potem zwracana jest wartość aktualnego (następnego) elementu. reset($nazwa_tablicy) ustawia wskaźnik na pierwszy element tablicy. end($nazwa_tablicy) przesuwa wskaźnik na koniec tablicy. prev($nazwa_tablicy) przesuwa wskaźnik o jeden element wstecz, po czym zwraca aktualny element.

Inne operacje na tablicach c.d. Liczenie elementów tablicy Funkcje count($nazwa_tablicy) i sizeof($nazwa_tablicy) zwracają liczbę elementów tablicy. Jeśli jako parametr zostanie podana tablica pusta to funkcja zwróci wartość zero. array_count_values($nazwa_tablicy) oblicza ile niepowtarzalnych wartości występuje w danej tablicy, oraz zwraca tablicę asocjacyjną zawierającą tabelę częstości występowania każdej wartości. Konwersja tablic na zmienne skalarne Funkcja extract($wyrażenie_tablicowe, [int typ_ekstrakcji],[string przedrostek]) pobiera tablicę i tworzy zmienne skalarne o nazwach jak klucze w tablicy. Przykład: $owoce = array( Jabłko => 2, Gruszka => 3.5, Banan => 1.7); extract($owoce); Stworzy 3 zmienne o nazwach $Jabłko, $Gruszka, $Banan. Typ_ekstrakcji określa sposób postępowania podczas kolizji nazwa (gdy zmienna o danej nazwie już istnieje). Można zdefiniować przedrostek, który zostanie dodany do nazwy zmiennej, gdy wystąpi kolizja.

Ćwiczenia 2 Proszę zaprojektować captche graficzną w następującej formie: 1 2 3 4 5 6 7 8 9 Użytkownik powinien podać numer komórki w której znajduje się czerwona buźka. Należy wykorzystać tablice przy realizacji tego zadania http://www.whatpoll.com/funny-captchas

Ćwiczenia domowe 1. Do swojego bloga dołóż formularz kontaktowy w którym użytkownik będzie mógł wysłać wiadomość e-mail. Do wysyłania maila służy funkcja mail(): http://pl.wikibooks.org/wiki/php/wysy%c5%82anie_emaili 2. Wykonaną CAPTCHę oraz formularz komentarzy dołóż do swojego bloga. Zintegruj je ze sobą tak aby użytkownik przy podawaniu komentarza musiał poprawnie rozwiązać CAPTCHę. Jeśli się uda jego komentarz się pojawi na następnej podstronie, jeśli nie powrócisz do strony głównej.