29 października
Szkielet gry - pierwsze kroki
Trochę przeskoczę z tematami, miało być najpierw o dziedziczeniu i wyjątkach, ale stwierdziłem, że warto zacząć po prostu pisać grę. Dzisiaj będą pierwsze kroki. Po wielu przemyśleniach, stwierdziłem, że opiszę, jak zrobić grę strasznie zbliżoną bitefight. Na początku szkielet strony. Będzie on wyglądał mniej więcej tak:

Śliczne nieprawdaż? Prawdaż. Kolorem niebieskim oznaczony jest nagłówek - tam będą wszystkie informację które są standardowe (łącznie z miejscem na reklamę, ale to na samym końcu). Na żółtym polu będzie menu, ba pomarańczowym główna treść, a na zielonym stopka. Proste. Jednocześnie chciałbym zaznaczyć, że layout będzie napisany na divach a nie na tabelkach.
Skoro już mamy szkielet, to trzeba go uzupełnić treścią. Nie będę opisywał dokładnie jak robię layout - kurs ma być o PHP, a nie o obsłudze programu graficznego. Zrobimy teraz pierwszy formularz - umożliwi on nam rejestrację użytkowników. Na początek link w menu “Rejestracja”, a w treści umieszczamy pierwszy formularz, mniej więcej taki:
Zwykła konstrukcja w html. Z tymże ma parę istotnych rzeczy, na które należy zwrócić uwagę. W formularzu, atrybut action określa miejsce, do którego zostaną przesłane dane z formularza. Podaję się tutaj najzwyczajniej adres skryptu. Do tego atrybutu wrócimy jeszcze potem. Kolejnym atrybutem jest method. Może on mieć dwie różne wartości - post lub get. Określają one sposób, w jaki dane z formularzy zostaną przesłane. Metoda post przesyła dane ukrywając je przed oczami użytkownika, natomiast metoda get, dokłada zmienne do adresu. Przykładowy adres może wyglądać tak “index.php?mail=to_jest_mail&login=misiuziu” . Taki adres mówi następujące informację: adres skryptu to index.php, przesyłamy tam dwie zmienne, mail oraz login. Wartości tych zmiennych to odpowiednio to_jest_mail oraz misiuziu. Można też stworzyć kombinowanie z wysyłaniem jednocześnie zmiennych metoda post jak i get. Jak? Prosto :)
Jak widać zmienne z formularza wysyłane są metodą post. Jednak w adresie skryptu, do którego zostaną wysłane jest już zmienna - jakby nie patrzeć jest ona przekazywana metodą get.
Zajmijmy się naszym formularzem i danymi przez niego przesłanymi. Powiedzmy, że chcemy je wyświetlić (tak na dobry początek). Jak można się dostać do zmiennych?
Zmienne są przekazywane w odpowiednich tablicach. Zmienne post w tablicy $_POST , zmienne get w tablicy $_GET, zmienne get lub post w tablicy $_REQUEST. Można także używać zmiennych bezpośrednio korzystając z ich nazw, przy odpowiednich ustawieniach serwera. Jest to jednak nie wskazane - zmniejsza się w ten sposób bezpieczeństwo skryptów. Z założenia używam (i będę to robił w tym kursie) tablic $_GET i $_POST.
I fajnie, super mamy dane od użytkownika. Warto by było coś z nimi zrobić. Najrozsądniej było by je zapisać do bazy, jednak to zrobimy w następnej lekcji. Wyślijmy zatem maila do użytkownika, z linkiem aktywującym. Chcemy mieć pewność, że podane przez niego dane są prawdziwe (a konkretnie to mail). Żeby wysłać maila używamy funkcji mail.
Pierwsze co podajemy to adres maila, na którego chcemy wysłać. Następnie tytuł maila, treść oraz informacje dodatkowe. Funkcja zwróci true w przypadku sukcesu lub false w przypadku porażki. Można obsłużyć wypadek, gdy nie udało się wysłać maila, czyli:
Ważne jest również sprawdzanie, czy przesłane dane w zmiennych (post lub get) spełniają nasze kryteria, czyli czy ktoś nie podał jako maila słowa “dupa” (bo jak łatwo się domyślić, adresem maila to to nie jest). Tutaj z pomocą przychodzą wyrażenia regularne. Przykład, jak sprawdzić poprawność maila (samego ciągu):
Tak, wygląda to strasznie ale nie jest takie trudne jak się wydaje :) Funkcja preg_match szuka zadanego ciągu w zmiennej, zwraca true jeśli odnalazło ciąg lub false w przypadku porażki. Można także zapisać pierwszy znaleziony ciąg spełniający kryteria do zmiennej.
Przeanalizujmy samo sformułowanie. Podam przykłady sformułowań, oraz jaki ciąg spełnia zadane wyrażenie:
“abc” - ciąg zawierający w sobie ciąg “abc”
“/^ab” - ciąg zaczynający się od ciągu “ab” (np. “abecadło”, “ab”)
“upa$/” - ciąg kończący się ciągiem upa (np. dupa)
“/^[a-z]{2}$/” - ciąg zawiera w sobie dwie małe litery (np. “to”)
“/^[a-z]{2,6}$/” - ciąg zawiera w sobie od dwóch do sześciu małych liter (np. “to”, “toto”, “duupaa”)
“/^[0-9A-Z]{2,}$/” - ciąg zawiera cyfry i duże litery, przynajmniej 2 znaki (np. “007BOND007″)
“/^([a-zA-Z0-9])+$/” - ciąg zawiera małe i duże litery, plus oznacza, że znaki z zakresu występują raz lub więcej
“/^.łot$/” - kropka zastępuje dowolny znak (np. “młot”, “płot”)
“/^([a-zA-Z0-9\._-])*$/” - \. oznacza kropkę jako kropkę (przygarnij kropka!) a nie znak specjalny, w zakresie występują także podkreślenie i myślnik, gwiazdka oznacza, że podany zakres może wystąpić zero lub więcej razy
/^abc(dupa[0-9]*)?$/” - ciąg zaczyna się od abc, następnie raz lub wcale występuje wyrażenie w nawiasie (raz lub wcale - odpowiada za to znak zapytania), wyrażenie w nawiasie to ciąg dupa z dowolną ilością cyfr na końcu (np. “abcdupa0dupadupa00919″ , “abc”, “abcdupa”)
I to chyba najważniejsze przypadki. Co ważne, w zakresie małych i dużych liter nie ma polskich znaków. Pełny zakres znaków z polskimi ogonkami wygląda tak [a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ] .
Trochę dłuższy się zrobił post, więc teraz tylko ćwiczenia i do domu. Kody powyższych rzeczy udostępnię przy następnym poście (wraz z rozwiązaniami zadań).
Zadania.
1. Stworzyć formularz, który prześle więcej danych - hasło, powtórzone hasło, imię, nazwisko, nazwa postaci. Przesłać to wszystko metodą post, do skryptu, w którym jest formularz (czyli formularz w pliku index.php, obsługa formularza także w tym pliku).
2. Zwalidować dane. Mają odpowiadać ciągom przykładowym: hasło - ksieZC99Dhj (minimum 8 znaków), imię - Tomek, nazwisko - Kowalski-Nowakowski, nazwa postaci - Wielki Pogromca Smoków.
3*. Zakodować hasło i sprawdzić, czy powtórzone hasło jest takie same.
4*. Sprawdzić czy podana domena w mailu istnieje.
5*. Utworzyć treść maila, przesyłając wszystkie dane ładnie sformatowane. Kodowanie maila to utf-8.

Autor: Wysyłanie maila w utf8 - rozwiązanie | Kurs PHP - stwórz MMORPG dnia 29.10.09 o godz. 10:37
[...] dotyczy zadania numer 5 z tego posta. A więc zaczynamy. Najpierw trzeba dodać treść maila. $tresc=’ <html> [...]
Autor: oleQ dnia 29.10.09 o godz. 10:37
A moglbys podac caly kod rejestracji?
Jestem poczatkujacy, bardzo poczatkujacy ;D
I na przyklad kod “echo $_POST['mail'];” nie wiem gdzie wstawic ;)
Dzieki z gory,
Pozdrawiam
Autor: misiuziu dnia 29.10.09 o godz. 10:37
Mógłbym. Jeśli jednak jesteś początkujący to lepiej będzie dla Ciebie jak sam do tego dojdziesz. “echo $_POST['mail'];” wstawiasz tam, gdzie chcesz wyświetlić zmienna mail.