II - Podstawy Programowania
1. Wymagania
By ukończyć drugą cześć poradnika potrzebny jest nam serwer wirtualny bądź dedykowany w internecie lub serwer typu "Krasnal" czy "WebServ" zainstalowany na komputerze. Dość dobre na początek serwery dostępne za darmo (czy też tanio) w internecie to http://www.boo.pl czy też http://www.lua.pl.
2. Od czego zacząć?
Każdy z serwerów podanych powyżej ma dostęp do bazy danych mysql w, której przechowywane będą dane (jeśli nie umiecie jej uruchomić zapraszam do przeczytania poradnika danego serwera bądź do mnie na PW). Gdy odpalimy serwer wchodzimy do folderu htdocs w, którym przechowywane są strony. Utwórzmy plik index.php i uruchommy go za pomocą notatnika czy innego edytora html/php. Następnie powinniśmy połączyć się z bazą danych. W tym celu wpisujemy następującą komendę:
<?php
$dbh = mysql_connect("localhost", "login do bazy danych", "hasło do bazy danych");
?>
Login oraz hasło to przeważnie (początkowo): root bez hasła. Chyba, że w phpmyadmin ustawiliśmy inaczej. Dla przykładu login: root bez hasła będzie to wyglądało następująco:
<?php
$dbh = mysql_connect("localhost", "root", "");
?>
Połączyliśmy się już z bazą danych. Nie wybraliśmy jednak jeszcze żadnej istniejącej bazy. W tym celu wchodzimy do phpmyadmina i tworzymy bazę.
Ok... mamy już bazę danych o nazwie np. nazwa_bazy. Wypadało by się z nią teraz połączyć. Wpisujemy w tym celu:
$db = mysql_select_db("nazwa_bazy");
<?php
$dbh = mysql_connect("localhost", "root", "");
$db = mysql_select_db("nazwa_bazy");
?>
Połączyliśmy się już z bazą danych za pomocą funkcji mysql_connect a następnie wybraliśmy bazę używając polecania mysql_select_db. Możemy teraz dodawać do niej tabele oraz je edytować. W kolejnym kroku opiszę jak zrobić prosty skrypt logowania.
3. Logowanie?
Żadna gra nie istniała by bez skryptu logowania. Jest to najprostszy skrypt, który przyjdzie wam napisać przy tworzeniu gry. Zastanówmy się nad nim chwilkę. Powinien po wpisaniu przez gracza loginu oraz hasła sprawdzać czy są one poprawne. Jeśli tak, powinien tworzyć sesję i przekierowywać użytkownika do innej strony.
Otwórzmy więc nasz plik index.php i napiszmy go w taki sposób (później opiszę co jest czym):
<?php
session_start();
$dbh = mysql_connect("localhost", "root", "");
$db = mysql_select_db("nazwa_bazy");
if(isset($_POST['ok']) AND isset($_POST['login']) AND isset($_POST['pass'])){
$login = $_POST['login'];
$pass = $_POST['pass'];
$mysql = mysql_fetch_array(mysql_query("select `ID` from `konta` where `login` = '$login' AND `password` = '$pass' limit 1"));
if($mysql != NULL){
$_SESSION["login"] = $login;
header("Location: index2.php");
}
else {
echo 'Wystąpił błąd podczas logowania!';
}
}
else {
?>
<form action='' method='POST'>
Login: <input type='text' name='login'>
Password: <input type='text' name='pass'>
<input type='submit' name='ok' value='Zaloguj'>
</form>
<?php
}
?>
No dobra... trochę dużo kodu ale zaraz go ogarniemy linijka po linijce. Zanim jednak do tego dojdzie musimy stworzyć tabelę z trzema polami w bazie danych, którą wcześniej utworzyliśmy. Wybieramy w tym celu naszą bazę.
Powinno nam się wtedy pokazać kolejne okienko z 3ma wierszami. Jako nazwę pierwszego wpisujemy "ID" jako typ wybieramy "tinyint". 2 pola niżej nazywamy kolejno "login" oraz "password". Dajemy im typ "text". Dodatkowo gdy przewiniemy stronę bardziej na prawo w pierwszym wierszu MUSIMY zaznaczyć pierwsze kółko pod znaczkiem - z rozwijanego pola wybieramy "auto_increment". Oznacza to, że po dodaniu kolejnego rekordu do tej tabeli pole ID będzie zmieniało swoją wartość o 1 (automatycznie).
Przyszedł więc czas żeby objaśnić o co chodzi (linijka po linijce) w powyższym kodzie.
session_start(); - musimy to dodawać na początku każdej strony (na samym początku zaraz pod <?php, jeśli chcemy by strona obsługiwała sesje a co za tym idzie logowanie użytkownika.
$dbh = mysql_connect("localhost", "root", "");
$db = mysql_select_db("nazwa_bazy");
- podłączenie do bazy już wcześniej omawiane
if(isset($_POST['ok']) AND isset($_POST['login']) AND isset($_POST['pass'])){ - sprawdzenie czy wszystkie pola formularza zostały wypełnione.
$mysql = mysql_fetch_array(mysql_query("select `ID` from `konta` where `login` = '$login' AND `password` = '$pass' limit 1")); - pobieranie oraz przedstawianie wartości w formie tabeli z bazy danych. Pobierze to wartość ID z tabeli konta tylko i wyłącznie wtedy jeśli login będzie równy zmiennej $login a hasło będzie równe zmiennej $pass.
f($mysql != NULL){
$_SESSION["login"] = $login;
header("Location: index2.php");
} - jeśli istnieje taki użytkownik to przekieruj go do strony index2.php
<form action='' method='POST'>
Login: <input type='text' name='login'>
Password: <input type='text' name='pass'>
<input type='submit' name='ok' value='Zaloguj'>
</form>
- zwykły HTML'owski formularz do logowania
Wow! Zrobiliśmy pierwszy skrypt do logowania!
Tworzenie pliku index2.php
Utwórz teraz plik index2.php. Musimy w nim sprawdzić czy użytkownik jest zalogowany. Jeśli jest, to program powinien pokazać "Witaj $login". Jeśli nie: "Przykro nam. Nie jesteś zalogowany.". No to... do roboty.
<?php
session_start();
if(isset($_SESSION['login'])){
$login = $_SESSION['login'];
echo 'Witaj '.$login.'!';
}
else {
echo 'Niestety, nie masz praw do przeglądania tej strony!';
}
?>
Proste nie? O co tu chodzi? session_start() jak już mówiłem musi być wpisane zaraz po rozpoczęciu pliku w celu obsługi sesji a co za tym idzie zalogowania gracza.
Warunek if(isset($_SESSION['login'])){ sprawdza czy dana osoba jest zalogowana (ustanowienie sesji "login" odbyło się w pliku index.php.
Dalej wyświetlane są przywitanie dla osoby zalogowanej i nie.
Aby przetestować skrypt do bazy danych należy dodać swój login oraz hasło orz odpalić przeglądarkę i włączyć stronę http://localhost/index.php