3. Programowanie obiektowe – funkcje klasy, gettery i this

W poprzedniej lekcji, utworzyliśmy klasę o nazwie Post, oraz jej prywatne zmienne. Brakuje nam tylko funkcji, które będą nadawać oraz pobierać wartości,  dla tych zmiennych. Utworzymy sobie tak zwane gettery i settery.

Gettery – cóż to i po co? Są to funkcje, które pozwalają pobrać z obiektu, który powstanie według klasy, wartości zmiennych. Przypominam, że klasa jest tylko planem obiektu, więc bezpośrednio z klasy, nic nie wyciągamy, raczej… chociaż w programowaniu, bywa różnie 🙂 Ale przejdźmy do konkretów:

Mamy taki oto kod, i trzeba dorobić gettery do zmiennych:

class Post{
private $nazwa;
private $tresc;
private $autor;
}

Musimy więc utworzyć trzy funkcje, dla każdej zmiennej osobno. Funkcje klasy też mogą być publiczne lub prywatne. Domyślenie jednak funkcje te są publiczne, więc nie musimy pisać słówka public przed function.

Gdy kodujesz i chcesz aby to ślicznie wyglądało, nazwą funkcji jest: get oraz nazwa zmiennej z dużej litery np, function getName(). My jednak w tej lekcji mamy polskie nazwy zmiennych, więc zamiast get napiszemy sobie „pobierz”.

Uwaga czas włączyć myślenie! Co musi robić funkcja, która ma nam wyciągnąć wartość zmiennej, z utworzonego obiektu? Pomyśl, pomyśl… Funkcja musi zwrócić wartość zmiennej. Jeśli funkcja coś zwraca, to używamy magicznego słówka, return.

„This” w programowaniu obiektowym

Nie zadziała to jednak tak łatwo jak myślisz. return $autor; w środku funkcji nie wystarczy. Oznaczałoby to, że chcemy zwrócić zmienną $autor, która byłaby zadeklarowana w środku, tej funkcji, My jednak chcemy wyciągnąć z obiektu ,jego zmienną. Tą która jest zadeklarowana na górze klasy. Służy do tego słówko $this->, po którym piszemy nazwę zmiennej. Oznacza ono, że odwołujemy się do zmiennej klasy.

Jak łatwo zapamiętać, co robi this?

This po prostu wskazuje na zmienną, która jest na górze klasy, a zmienne te deklarujemy właśnie tam. Wtedy wygląda to, z klasą… 🙂

Pomyśl teraz jak to powinno wyglądać… najpierw function potem nazwa, następnie nawiasy i klamry. Potrzebujemy też return, nowego słówka, czyli $this-> ze strzałką , oraz nazwy zmiennej, która jest na górze. Spróbuj to napisać 🙂

Rozwiązanie, czyli gettry dla klasy Post:

<?php
class Post{
private $nazwa;
private $tresc;
private $autor;

function pokazNazwe(){
return $this->nazwa;
}
function pokazTresc(){
return $this->tresc;
}
function pokazAutora(){
return $this->autor;
}

Settery, czyli funkcje ustawiające wartości zmiennych, przedstawię w następnej lekcji.  Pomyśl jednak sam, w jaki sposób powinny one działać. Funkcja taka musi nadawać wartość zmiennej klasy, która wprowadzona zostanie jako argument, czyli w nawiasy.

Była to kolejna lekcja, bardziej teoretyczna. Opisane sprawy jednak trzeba zrozumieć, zanim zacznie się je stosować. Często w nauce programowania obiektowego, tylko wspomina się o wskaźniku This, który „pokazuje o tam”.  Z taką wiedzą, nie jest się nawet w stanie, napisać prostego gettera. Zachęcam do napisania „setterów” analogicznie do getterów, bez pomocy google 🙂

2 Lekcja programowania obiektowego, klasa i zmienne

Dzisiaj zajmiemy się tematem, jakim w programowaniu obiektowym jest klasa. W poprzedniej lekcji klasą nazwałem plan, według którego powstanie obiekt. Obiekt ten, chociaż z zewnątrz wyglądał będzie jak zmienna, to w jego środku, znajdować się będą zmienne i funkcje. Uczyć będziemy się na klasie Post, którą opisałem wcześniej.

No to będzie się działo! Coś mi mówi że za tydzień, będziesz rzucał obiektami na prawo i lewo, zastanawiając się czy wiedzę tą, można jakoś wykorzystać, podczas rozwieszania prania na balkonie, gdyż te obiekty są takie fajne 🙂

Czas na konkrety…

Tworzenie klasy jest proste. Piszemy sobie słówko class później nazwę klasy, czyli np. Post a następnie, otwierasz i zamykasz kod klasy klamrami. Deklaracja klasy jest podobna do deklaracji funkcji, jednak nie mamy tutaj nawiasów po nazwie. Wynika to z tego, że bezpośrednio do klasy wkładać nic nie będziemy tak jak funkcji.

Wyglądać to będzie tak:

<?php

class Post{

//a tutaj będzie treść

}

?>

Mówiliśmy, że nasz post składał się będzie ze zmiennych $nazwa, $tresc i $autor. W klasie utworzymy je jako zmienne prywatne. Będą miały do nich dostęp, tylko funkcje klasy. Czyli jeśli utworzymy nowy post (czyli obiekt), według tej klasy, to jedyną możliwością edycji zmiennych tego obiektu, będzie użycie jednej z funkcji. Taką funkcją może być np. $mojPost->ustawAutora('autor777').  Napiszmy to:

class Post{

private $nazwa;
private $tresc;
private $autor;

}

Jak widać wyżej, słówko private, załatwiło sprawę. Zmienne będą dostępne tylko dla funkcji klasy. Możemy je też ustawić jako public, czyli publiczne albo protected – chronione. Użycie private, jest najbardziej zalecane i wygląda dobrze.

Na początku, gdy nie miałeś jeszcze dłuższej styczności z programowaniem, zalecam abyś budował klasy, w oparciu właśnie o zmienne prywatne. Nauczy Cię to dobrych nawyków.

Wspomniałem o zmiennych publicznych i chronionych. Zmienna publiczna to taka, do której mamy dostęp bez użycia funkcji. Bierzemy obiekt, piszemy strzałkę, potem nazwę zmiennej i ustawiamy jej wartość.

$mojPost->autor = 'Anastazja';

To w takim razie, czemu mam używać funkcji do nadawania wartości, jeśli tak jest łatwiej?

W tym wypadku nie można np. sprawdzić tego, czy nazwa autora, trafiająca do obiektu np. $mojPost jest poprawna. W funkcji ustawiającej autora możemy np. ustawić minimalną długość nazwy. Możemy też zmienić pierwszą literę na dużą.

Pisząc np. klasę która obsługuje przelewy,  lepiej abyś miał 100% pewność, że do zmiennej $numerKonta obiektu $przelew123, trafi poprawna wartość.

Kod, który napisałeś obecnie, działał będzie dopiero gdy w następnej lekcji, dodamy do niego funkcje. Nie wszystko na raz 🙂

1 Lekcja programowania obiektowego, piszemy bloga

Programowania obiektowego, będziemy uczyć się na łatwych, lecz ciekawych przykładach. Najważniejsze jest, aby zrozumieć, jak ono działa, i zacząć je stosować, w każdej możliwej sytuacji!

Czas na ostrą jazdę bez trzymanki. Wkraczamy abstrakcję, zmienne w zmiennych, funkcje które wychodzą ze zmiennych i inne cuda na kiju!Ale nie uciekaj…

…To proste!!!

Wiedzę tą radzę powoli przyswajać. Tak aby się dobrze poukładała. Zrób sobie kawę i zaczynaj!

Jeśli programujesz w innym języku niż php, ta lekcja, też jest dla Ciebie. W językach takich jak java, c++, python itp, działa to tak samo!

W poprzedniej lekcji, zacząłem pisać, coś o programowaniu obiektowym. Uznałem, że fajnie, abyś miał z tym styczność, od początku nauki. Unikniesz dzięki temu, dość bolesnej przesiadki z programowania strukturalnego, przydatnego gdy chcesz programować domofon, na programowanie obiektowe, które przydaje się, gdy rozwijasz jakiś mniejszy lub większy projekt.

Takim projektem może być blog. Jego budowę zaczniemy od pojedynczego postu, który wyświetlał będzie się na ekranie przeglądarki.

Teraz czas na krótkie wprowadzenie, czym to jest to programowanie obiektowe.

Pisząc obiektowo, jakąś część strony, zadawaj sobie pytania:

  • Z czego składa się …?
  • Co robi …?

My będziemy budować pojedynczy wpis na blogu, czyli post. 

  • Z czego składa się post?
  • Co robi post?

Pierwsze pytanie jest łatwe. Post składa się z tytułu, treści i autora. Oznaczałoby to pewnie stworzenie trzech zmiennych, do których można by, schować te dane.

Drugie pytanie… co robi post? Pomyślmy… Trzeba w nim zapisać jakieś dane (np. do zmiennych), a potem je pokazać użytkownikowi. Odczyt i zapis czyli to co zawsze. Tutaj jednak będzie ciekawiej…

Potrzebujemy więc trzech zmiennych, które przechowają nam dane, a także funkcje, które zapiszą dane do zmiennych i je pokażą. Musimy połączyć w jedną całość, te schowki na dane jakimi są zmienne, z funkcjami które będą je obsługiwać. Tak powstanie post.

Będzie to post którego schowamy sobie do jeszcze innej zmiennej… Programowanie obiektowe pozwoli nam, w jednym obiekcie, czyli zmiennej np. $slicznyPost, umieścić trzy inne zmienne, oraz  funkcje, które będą na nich pracować.

Na takim utworzonym już poście, będziemy pracować, używając  funkcji, które zawiera ten obiekt. Musimy więc stworzyć trzy funkcje ustawiające wartość zmiennej i trzy funkcje które pokazują ich zawartość. Można też stworzyć jedną dużą która ustawi wszystkie zmienne, ale to potem… 🙂

Aby zaspokoić twoją ciekawość pokażę Ci w jaki sposób, jeśli chodzi o składnię języka, będziesz używał funkcji, na obiekcie post.

$obiektTypuPost->ustawTresc("Tresc czyli wartość tekstowa, więc w apostrofach");

Jak widać, aby wywołać funkcję z obiektu, wystarczy użyć strzałki ->, a później użyć funkcji, jak w lekcjach poprzednich.

Jednak zanim będziesz tego używał, post ten musisz stworzyć. Ale jeszcze wcześniej… musimy mieć plan tego postu (nazywa się to klasa), który zawierał będzie zmienne i funkcje, których potrzebujemy. Zajmiemy się tym w następnej lekcji.

 

Mysql podstawowe komendy, zapytania, polecenia itp

Umieszczam tutaj podstawowe komendy mysql, dzięki którym, nawet bez znajomości języka sql poradzisz sobie z tworzeniem zapytań, bez których, pracując w php, za dużo nie wymyślisz.

Nie ucz się tych poleceń na pamięć. Gdy tworzysz coś, otwórz tą stronę i przekopiuj (lepiej przepisz) to co potrzebujesz. Z czasem, rozumiejąc ich składnię, będziesz je pisał, bez potrzeby zerkania do tej ściągi 🙂

Każde polecenie będzie opisane, tak abyś wiedział, cóż takiego się tutaj dzieje i dlaczego 🙂

Najczęściej używał będziesz zapytania, które pobiera wszystkie dane z danej tabeli. Mówisz więc bazie: wybierz wszystko z tabeli moja_tabela. Jak to wygląda w praktyce?

SELECT * FROM table_name      SELECT znaczy wybierz,  * oznacza wszystko, FROM z , gdyż baza musi wiedzieć, z jakiej tabeli wysłać nam dane. Na końcu dajesz nazwę tej tabeli.

Możesz też wybrać tylko interesujące Cie kolumny. Zamiast gwiazdki, wypisujesz ich listę po przecinku.

SELECT id,name,phone FROM table_name

Tworzenie tabeli:

Tego raczej szybko nie zapamiętasz. Piszesz polecenie CREATE TABLE później jej nazwę, a następnie w nawiasie, nazwy kolumn po przecinku. Koło każdej kolumny, spacjami oddzielone są typy danych i dodatkowe „parametry”.

CREATE TABLE moja_tabela (
id INT(5) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
imie VARCHAR(30) NOT NULL,
nazwisko VARCHAR(30) NOT NULL,
email VARCHAR(50)
)

Tłumaczenie z tego czegoś na polski… 🙂

  • UNSIGNED – wartość nieujemna
  • AUTO_INCREMENT , używa się tego w przypadku id. Każdy użytkownik, produkt w bazie musi mieć swój numer id.  Tak jak ty masz pesel. Mysql samo nadaje mu ten numer i jest to po prostu następna liczba, po poprzedniej. Np. pierwszy produkt ma id = 1 a następny id = 2. Easy
  • PRIMARY KEY klucz główny, w przypadku mysql nadaj to wartości id i będzie ok. Jak chcesz więcej o tym wiedzieć, to wpisz sobie w google.

Teraz podstawowe typy danych:

  • VARCHAR( tutaj wpisujesz liczbe znaków ) – jest to pole tekstowe dla krótkiego tekstu np. loginu użytkownika. Maksymalna liczba znaków to 255.
  • TEXT typ danych dla kolumny zwierającej duży tekst. Maksymalnie zmieści się tam z 65 tys. znaków.
  • INT liczba w zakresie <-2 147 483 648 ;2 147 483 647> Czyli może być dość spora.
  • SMALLINT liczba w zakresie <-32 768 do 32 767> Tutaj szału nie ma ale czasem, więcej do szczęścia, nie trzeba.
  • TIME Czas w formacie HH:MM:SS
  • DATE Data w formacie : RRRR-MM-DD

INSERT INTO czyli dodawanie wierszy do tabeli. Używasz tego np. jak tworzysz nowy post na blogu:

INSERT INTO posts (id, title, text)
VALUES ('', 'Podstawy sql', 'Treść kursu')

Prościej: Mówi to bazie : wstaw do tabeli o nazwie posts i kolumnach takich a takich wartości te, które masz w ostatnim nawiasie.  Niby skomplikowane, ale łatwe 🙂

Dodawanie kolumn do istniejącej tabeli:

ALTER TABLE nazwa_tabeli
ADD nazwa_nowej_kolumny typ_danych

 

7. PHP i MYSQL – obiektowo łączymy się z bazą

Jak dzięki php połączyć się z bazą danych mysql? Co to jest zapytanie? Tego właśnie dowiesz się dzisiaj. Zobaczysz też, że programowanie obiektowe, to dość ciekawa sprawa 🙂

Łączenie się z bazą w php jest proste, jednak w większości poradników jest to tak opisane, że wydaje się to, skomplikowaną czynnością. Większość dotyczy też, przestarzałych metod tworzenia połączenia. Chcemy wywołać je, więc stwórzmy zmienną, w której będzie ono schowane.

$polaczenie;

Teraz trzeba do zmiennej $polaczenie włożyć połączenie z bazą. Aby je utworzyć skorzystamy z Mysqli. Jest to takie obiektowe rozszerzenie, któremu podajemy dane logowana do bazy a ono wykonuje, całą robotę za nas.

Napiszmy więc tak:

$polaczenie = new mysqli('serwer bazy', 'login', 'hasło', 'nazwa bazy'); 

Przed mysqli mamy słówko new. W programowaniu obiektowym, tworzy ono nowy obiekt. Prosta sprawa. Po new napisaliśmy mysqli. Oznacza to że obiekt ten będzie właśnie  takim czymś typu mysqli, któremu do nawiasów podajemy dane, według których ma się stworzyć.

Dane te podajesz jak do funkcji, która ma kilka argumentów, czyli po przecinku. Są one w apostrofach, gdyż są tekstem.

Cóż to jest to mysqli? Jest to klasa czyli coś w rodzaju schematu, według którego, tworzy się obiekt. Zawiera ona zmienne i funkcje, które otrzymuje nasz obiekt ($polaczenie), dzięki czemu można mu podać jakieś elementy, np. login i hasło do bazy, a potem korzystając z funkcji, dokonywać różnych operacji. Jeśli tego nie rozumiesz, to się nie przejmuj. O programowaniu obiektowym, będę pisał w innej lekcji.

Dzięki temu, że w połączenie siedzi sobie wygodnie, w zmiennej $polaczenie, możemy wywoływać na nim funkcje które są w klasie mysqli.  Zostało ono skonfigurowane, gdyż juz podczas tworzenia, dostało wszystkie potrzebne dane, aby dostać się do bazy. Możesz wykonać już zapytanie od bazy. Aby to zrobić, użyjesz funkcji query(), którą wywołasz ze zmiennej $polaczenie. Aby to zrobić użyjesz operatora, który wygląda jak strzałka.

Wykonajmy więc zapytanie:

$polaczenie = new mysqli('serwer bazy', 'login', 'hasło', 'nazwa bazy');

$rezultat_zapytania = $polaczenie->query("Tutaj wpisz treść zapytania");

$polaczenie->close();  //Zamknij połączenie na końcu.

Jeśli masz już stworzoną bazę, to wpisz jej poprawne dane do połączenia. W przypadku, gdy pracujesz na  xamppie, danymi będą: Serwer : localhost , login: root , hasła nie ma (zostawiasz same apostrofy), a bazę musisz sobie sam zrobić.

Wejdź do phpmyadmin (localhost/phpmyadmin/), znajdź zakładkę Bazy danych, stwórz nową, poszukaj w jaki sposób utworzyć tabele itp. Tam musisz sam pokombinować i się pobawić. W google też możesz poszukać pomocy.

Dodaj kilka tabelek. Dzięki temu jako zapytanie w apostrofach, możesz wpisać np. „show tables”. Zapytanie pobierze wtedy z bazy informację, jakie tabele się w niej znajdują. Odpowiedź trafi do zmiennej $rezultat_zapytania. Wyświetl ją funkcją „print_r()” i popatrz co jest w środku.

Zapytanie czyli co to takiego? Jest to polecenie które wysyłamy bazie. Mówimy jej np. pokaż wiersz z tabeli użytkownicy, gdzie login to admin i hasło to admin1.  Oczywiście piszemy to w języku sql 🙂 Pisanie takich zapytań jest proste i przychodzi z czasem. Dodam tutaj też stronkę na której będą podstawowe zapytania, które na początku nauki, będziesz kopiował.

 

 

 

[PHP] Include, require, czyli: po co wklejać plik do… pliku – 6 lekcja php dla początkujących.

Include i require czyli ponowne wykorzystanie kodu w php.

Załóżmy, że potrzebujemy wyświetlić tytuł i nagłówek strony, na każdej podstronie. Wypisać dwa zdania już potrafisz. W php napisalibyśmy to tak.

<?php
echo "Jestem szykownym tytułem";
echo "Jestem nagłówkiem";
?>

:

Mamy stronę która składa się z 30 innych ślicznych podstron i  teraz załóżmy, że na każdej stronie musielibyśmy wypisać ten sam nagłówek. Przekopiowaliśmy ten tekst 30 razy, trochę się naklikaliśmy, ale działa. Jednak teraz przyszło nam do głowy, że nagłówek trzeba zmienić. I co teraz? Znowu trzeba by go zmienić w 30 miejscach! A co by było, jeśli strona miałaby tych podstron 500 a nie 30?

Rozwiązaniem tego problemu może być funkcja include(). Służy ona do wklejania kodu innego pliku, wewnątrz pliku na którym obecnie pracujesz. Dzięki temu nagłówek i tytuł strony umieścisz w jednym pliku, a jego zawartość otwierana będzie przez resztę stron.

Utwórz plik index.php i za pomocą php wypisz na ekran przeglądarki tekst „moja strona”.

index.php:

<?php
echo "Moja strona!";
?>

A ten kod, zapisz do pliku naglowek.php, znajdującym się w tym samym folderze co index.php .

<?php
echo "Jestem szykownym tytułem";
echo "Jestem nagłówkiem";
?>

Teraz nagłówek chcesz otworzyć, w pliku index.php Użyj więc funkcji include(); . Wpisujesz do niej ścieżkę do pliku nagłówkowego. Plik ten jednak jest w tym samym folderze co index, więc wystarczy jego nazwa. Pomyśl jak to powinno wyglądać. Pamiętasz o apostrofach? Przypominam, że nazwa jest wartością tekstową. A dla tekstu nie ma litości, apostrof być musi!

Wykonaj to teraz sam. Jeśli działa, ciesz się, nie przepisałeś tego! Jeśli nie działa to postaraj zrozumieć się dla czego! Gotowe rozwiązanie będzie na samym końcu tej lekcji,

Wróćmy jednak do tematu. Jest jeszcze funkcja require() . Robi ona to samo, jednak jeśli include() nie znajdzie pliku, wyrzuci  na ekran mały błąd. Jeśli zrobi to require(), będzie to duży błąd. Zatrzyma on działanie strony.

Rada dla niezdecydowanych: Zapamiętaj to tak! require() używaj jeśli otwierany plik jest ważny. Robisz stronę, która obsługuje przelewy? Jeśli zabraknie jakiegoś pliku, a strona dalej będzie działać i zarządzać pieniędzmi, możesz mieć poważny problem. Tworzysz jednak stronkę która oferuje darmowe kartki świąteczne. Użyłeś include(). Jakiegoś pliku brakuje jednak kartki dalej się wysyłają. Był mało istotny, a na działaniu strony nie spoczywa wielka odpowiedzialność.

Kod index .php , który miałeś sam wymyślić:

<?php

include("naglowek.php");
echo "Moja strona!";
?>

:

Przećwicz to!* Wymyśl sobie stronkę która zrobisz w 20 minut. Niech składa się z treści w pliku index.php , i elementów które będziesz doklejał. Będą nimi nagłówek, menu (może być bez linków) i stopka. Nie musi to wyglądać profesjonalnie. Dodaj coś od siebie.  Umiesz coś zrobić w css? Pobaw się, pokoloruj stronkę. Pokaż samemu sobie, że dzięki kreatywności i odrobinie wiedzy, potrafisz coś zrobić 🙂 Możesz dodać jakiś formularz, kilka zmiennych. Przecież już to umiesz!

 

*Tak zrób to zanim przejdziesz do następnej lekcji Nauka programowania zaczyna się gdy tworzysz coś sam!

 

 

[PHP] Funkcje w programowaniu – 5 lekcja php dla początkujących.

Dzisiaj dowiesz się, jak w programowaniu, działają funkcje.

Funkcji pozwalają na uporządkowanie kodu. Zapisujemy w nich takie malutkie skrypty, których np. będziemy wiele razy używać.   Zacznijmy jednak od funkcji, której użyjemy tylko raz i tylko dla naszego pięknego formularza z lekcji poprzedniej.

Oto on: 

<form method="post">
Login:<br />
<input type="text" name="wpisanyLogin"><br />
Hasło:<br />
<input type="text" name="wpisaneHaslo"><br />

<input type="submit" value="Submit">
</form>

<?php

if(!empty($_POST)){

/*empty() Jeśli dalej nie ogarniasz co się tutaj stało to zacznij rysować leniwe ósemki.
*/

print_r($_POST);

}

?>

Korzystałeś z funkcji, zanim poznałeś czym są. Użyłeś empty(), która sprawdza czy obiekt jest pusty a także funkcji print_r(). Jak widzisz, są one bardzo przydatne.

Dobra, koniec gadania czas napisać funkcję! Zacznijmy od jej budowy. Jak już się dowiedziałeś aby użyć funkcji piszesz jakieś słowo, które jest jej nazwą i dwa nawiasy. Najczęściej mówi ono, co wykonuje dana funkcja. W nawiasy te wkładasz funkcji obiekt na który ma ona pracować, A teraz prościej… Załóżmy, że mamy funkcje piekarnik() i obiekt $ciasto. Chcesz włożyć ciasto do piekarnika tak? Otwierasz drzwiczki piekarnika (nawias), wkładasz ciasto i zamykasz (nawias…). Tak to zapamiętaj.

A teraz, zbudujmy sobie funkcje logowania. Będzie to funkcja zaloguj() do której włożymy naszą tablicę z danymi które wpisał użytkownik. Aby ją utworzyć piszemy:

function zaloguj($dane) {

} //między klamrami umieszczasz treść naszego mini skrypciku

Jak widać, wystarczyło napisać function później jej nazwę, a potem nawias w którym jest jakaś zmienna $dane. Nie ma znaczenia jak się ta zmienna nazywa. Pod taką nazwą, w środku funkcji, będzie znajdować się to co trafiło do niej. Gdy wrzucasz coś do funkcji np. tablicę $_POST, jest ona kopiowana i zapisywana do $dane. Tak w uproszczeniu to działa. Weźmy funkcję empty(). Nie wiadomo, jak będzie nazywać się obiekt, który będzie ona sprawdzać, a w środku funkcji trzeba się będzie do niego jakoś odwołać.

Zbudujmy sobie czysto teoretycznie taką funkcję:

function empty($obiekt){

//tutaj miedzy klamrami wykonują się dziwne rzeczy które sprawdzają czy $obiekt jest pusty np.  if który porównuje $obiekt do wartości pustej

if($obiekt==""){  //jak widać odwołuję się do nazwy która jest w nawiasach
return true; //return oznacza że po wykonaniu funkcji zwróci ona  w tym wypadku true
}
else{
return false; //Po wykonaniu wywołana funkcja znika a zostaje tylko to co zwróciła
}

}

Chcemy sprawdzić czy użytkownik wpisał poprawne hasło. Musimy teraz:

  • W naszej funkcji, w środku między klamrami, umieścić poprawny login i hasło (np. zmienne)
  • Użyć naszej funkcji zaloguj i wrzucić do niej to co przyfrunęło protokołem POST
  • W środku funkcji, porównać kopię danych które wprowadził użytkownik do tych oto zmiennych

Przemyśl to, zrób sobie rysunek na kartce, wypij kawę, cokolwiek. Połącz te trzy fakty w jedną… funkcję!

Po włożeniu do funkcji elementu $_POST , wewnątrz odwoływać będziemy się do kopii, tak jak już pisałem. Prawdopodobnie nazwanie tego kopią mogłoby wywołać jakiś teoretyczny spór, jednak w praktyce tak to działa i nic na to nie poradzę 🙂 . Zamiast $_POST['wpisaneHaslo'], użyjemy $dane['wpisaneHaslo'].

<form method="post">
Login:<br />
<input type="text" name="wpisanyLogin"><br />
Haslo:<br />
<input type="password" name="wpisaneHaslo"><br /> <!--Zminiłem typ pola na PASSWORD-->

<input type="submit" value="Submit">
</form>

<?php

if(!empty($_POST)){

$rezultat = zaloguj($_POST);
if($rezultat){ //sprawdzam czy to co zwróciła funkcja jest wartością true
echo "Tajemna strona";
}
else{
echo "Error";
}

}

function zaloguj($dane){
$login = "admin"; //Poprawne dane schowałem sobie do zmiennych
$haslo = "admin1";
//zmienne porównałem if-em z dwoma warunkami, && oznacza logiczne "i", czyli oba warunki muszą być spełnione, proste 🙂
if($dane['wpisanyLogin'] == $login && $dane['wpisaneHaslo'] == $haslo){
return true;
}
else{
return false;
}

}

?>

[PHP] Zróbmy sobie formularz logowania – 4 lekcja php dla początkujących.

Nie wiem czy umiesz html-a czy też nie, jednak jeśli chcesz być programistą aplikacji internetowych to jego minimalna znajomość będzie konieczna. Jednak jeśli zupełnie go nie ogarniasz, załatwimy to teraz w 5 minut. Lepiej jednak, abyś z html-a się doszkolił.

Tym razem na samej górze pliku umieścimy troszkę kodu z html. Będzie tworzył nasz formularz. Nie ucz się tych znaczków z html na pamięć. Gdy chcesz stworzyć formularz wpisz w google: „html form example” i na jego podstawie, uruchamiając logiczne myślenie na 2 minuty, tworzysz to czego ci trzeba. Gdy będziesz się już tym bawił z 3 tygodnie, to napiszesz to z pamięci.

<form method="post">  <!--Deklaracja formularza który będzie wysłany metodą POST-->
Login:<br />
<input type="text" name="wpisanyLogin"><br /> <!--Deklaracja  tekstowego pola formularza o nazwie wpisanyLogin-->
Hasło:<br /> <!--taki o to znaczek br / przenosi nas do następnej linii-->
<input type="text" name="wpisaneHaslo"><br /> <!--Deklaracja pola formularza o nazwie wpisaneHaslo-->

<input type="submit" value="Submit"> <!--Pole formularza typu magiczny przycisk do wysyłania wszystkiego wyżej-->
</form>

Zacznijmy od początku. Pytasz pewno… Co się tutaj dzieje? Zacznijmy od tego że jest to łatwe! 🙂 Chcesz stworzyć formularz ? Piszesz <form> . Ma być wysłany metodą post? Dopisz :method = "post" . Cóż jest to ten tajemniczy POST?  To metoda którą będziesz wysyłał dzisiaj dane i tyle!  Pola formularza tworzysz przez <input> Wybierasz im typ type="" i nazwę name="". Uwaga! Teraz ważna informacja! Poprzez nazwę, (namepola, w skrypcie php, będziemy się odwoływać, do tego co wysłał nam użytkownik formularzem.

Chcemy zobaczyć co wysłał nam użytkownik formularzem. prawda? Możemy je przejrzeć taką o to magiczną funkcją print_r(). Najlepiej zapisz ją gdzieś. Będziesz jej używał za każdym razem gdy masz w programie jakieś dziwne „coś” i nie wiesz cóż to takiego, ukryte jest w środku.

Funkcji jeszcze pewnie nie używałeś. Zapamiętaj, że jeśli chcesz jej coś podać to dajesz jej to między nawiasy np. print_r($tajemnaZmienna). Funkcja wtedy kopiuje sobie to co schowane jest w $tajemnaZmienna, robi z tym różne dziwne rzeczy a potem zwraca to czego chcemy. W tym wypadku będze to struktura tajemnej zmiennej 🙂

Ale wróćmy do formularza. Potrzebujemy zobaczyć to co zostało wysłane protokołem POST. Będzie to schowane w tablicy o nazwie $_POST. No fajnie, ale cóż to takiego jest ta tablica? Zmienną porównałem do teczki, w której chowamy jedną kartkę. Tablica będzie szafką z szufladami. Każda szuflada wygląda tak samo, jednak ma przyklejoną kartkę z nazwą, albo numerkiem. Do takich szufladek, możemy wkładać, takie rzeczy jak do zmiennych. W tym wypadku będzie to szafka o nazwie $_POST z szufladami o nazwach: wpisanyLogin oraz wpisaneHaslo.

Sprawdźmy czy jest tak rzeczywiście korzystając z funkcji print_r();

<form method="post">  <!--Deklaracja formularza który będzie wysłany metodą POST-->
Login:<br />
<input type="text" name="wpisanyLogin"><br /> <!--Deklaracja  tekstowego pola formularza o nazwie wpisanyLogin-->
Haslo:<br /> <!--taki o to znaczek br / przenosi nas do następnej linii-->
<input type="text" name="wpisaneHaslo"><br /> <!--Deklaracja pola formularza o nazwie wpisaneHaslo-->

<input type="submit" value="Submit"> <!--Pole formularza typu magiczny przycisk do wysyłania wszystkiego wyżej-->
</form>

<?php

if(!empty($_POST)){

/*empty() to funkcja, która sprawdza, czy nasza szafka (tablica) o nazwie $_POST jest pusta. Jeśli tak jest to zamienia się ona w wartość true. Jednak my chcemy, aby if wykonał się jeśli nie jest ona pusta. Temu przed empty() jest wykrzyknik. Jest on zaprzeczeniem.  Do if-a trafi false. Przemyśl to, zrób sobie kawę, przemyśl drugi raz i przetestuj sam.

*/

print_r($_POST);

}

?>

Do danych które wysłał użytkownik możesz odwołać się pisząc np:

$_POST['wpisanyLogin'];

Chcesz wypisać zawartość? Napisz przed tym echo:

echo $_POST['wpisanyLogin'];

Jest to odwołanie do elementu tablicy $_POST, który nazywa się ‚wpisanyLogin’. Zwykłe kwadratowe nawiasy i apostrofy bo nazwa jest wartością tekstową. Banał.

Wersja wytłumaczona na przykładzie szafki:

$nazwaSzafki['napisNaSzufladzie'];

Możesz też wrzucić to do nowej zmiennej o nazwie login. Pomyśl jak.

Rozbuduj ten formularz analogicznie do przykładu. Dodaj pola adres, imię, nazwisko czy też numer buta. A Potem if-em porównaj rozmiar buta z jakąś wartością i wyświetl komunikat, że sklep nie sprzedaje butów dla wielkoludów. Ten skrypt nie musi mieć głębszego sensu. Musisz go po prostu przećwiczyć!

Operatory do porównywania wartości:<><=,>=.

Sprawdź sam jak to działa. Formularz ten rozbudujemy dokładniej w lekcji następnej w której rozszerzę temat tablic.

[PHP] .Konstrukcje warunkowe if else, 3 lekcja php dla początkujących.

Przejdźmy do porównywania wartości. Na stronach często widujesz np. pole hasło oraz pole „powtórz hasło”. Dużo razy
zapobiegło to ponownej rejestracji w serwisie, prawda?
Zastanów się co trzeba zrobić, aby stworzyć taki oto przydatny skrypt, który nie pozwoli wpisać różnych haseł.

Wiemy już że hasło i powtórzenie hasła trzeba gdzieś najpierw zapisać. Tak, masz rację trzeba je wprowadzić do zmiennych.
Oczywiście na prawdziwej stronie będzie formularz z którego pobierzemy te hasła.
Najpierw podstawy. Jeśli chodzisz na siłownię, to dobrze wiesz, że nie zaczyna się od podnoszenia np, sztangi o wadze 100kg,
tylko czegoś znacznie mniejszego. Tyczy się to każdej dziedziny, niestety często o tym zapominamy. Aby zrobić coś trudnego,
trzeba zacząć od czegoś banalnego. Wiem dobrze, że chciałbyś od razu napisać skrypt własnego facebooka, bloga lub czegoś takiego.
Możesz to zrobić szukając jakiegoś tutoriala na youtube. Następnie przepisywał będziesz kod z ekranu przez 10h jednak dalej nie będziesz umiał nic.
Poprawi się tylko twoja zdolność przepisywania tekstu i możliwe, że prędkość pisania na klawiaturze.

Teraz wracamy do naszego porównywania haseł. Utworzymy sobie dwie zmienne:

$hasło1 = 'abc123';
$hasło2 = 'abc1234'; 

Aby je porównać wykorzystamy konstrukcję  if()

Jest to kolejna bardzo ważna, ciągle używana w programowaniu rzecz.

Zacznijmy od tego, że operatorem którym będziemy porównywać wartości jest np. podwójny znak równości ==
Jeśli pomiędzy dwoma zmiennymi go ustawimy np. $haslo1 == $haslo2 i zmienne te są takie same, otrzymamy wartość true.
Jeśli hasła będą różne zwrócona zostanie wartość  false .

Wiesz już jak porównać dwie wartości, przejdźmy do naszego if-a.

Konstrukcja if (jeżeli) wygląda następująco:

if(tutaj wpisujesz warunek){ // np. $haslo1 == $haslo2
//linie kodu napisane tutaj,
//wykonają się jeżeli,
//warunek w nawiasie zostanie spełniony, czyli zwróci wartość true.
}else{
//to co wpiszesz tutaj wykona się gdy warunek nie jest spełniony
}
//a to co wpiszesz tutaj wykona się później 🙂 

No to napiszmy konstrukcję warunkową aby porównać nasze dwa hasła.

if($haslo1 == $haslo2){
echo "Podałeś poprawne hasła";
}
else{
echo "Wpisane hasła różnią się od siebie";
} 

Nie będę Cie uczył wszystkich operatorów porównania. Zapamiętaj jednak, że porównujemy wartości podwójnym znakiem ==  a nie pojedynczym. Znaku = używamy np. gdy zmiennej chcemy przypisać jakąś wartość np.  $mojaLiczba = 777;
Fajnie też abyś wiedział czym jest operator !=. Oznacza on dosłownie „nie równa się”.
Użyjmy go sprawdzając hasła. Najlepiej napisz taką samą konstrukcję warunkową. A później przejdź do czytania dalej.

Oto nasz mały programik:

<?php
$hasło1 = 'abc123';
$hasło2 = 'abc1234';

if($haslo1 != $haslo2){
echo "Wpisane hasła różnią się od siebie";
}
//kod programu zawierający np. zapis do bazy danych nowego użytkownika.
?> 

Porównanie ($haslo1 != $haslo2) zwróciło nam wartość true, gdyż hasła są różnie, dzięki temu konstrukcja warunkowa w klamrach,
mogła zostać wykonana. Zauważ też, że ominąłem konstrukcję else Zrobiłem to po to abyś wiedział że możesz tak zrobić.
Czyli mamy warunek: jeśli hasła są różne, pokaż komunikat, jeśli są takie same, rób swoje.

Przejdźmy do klamer {} , nawiasów itp. Nie będę Ci pisał jak to można zapisać na 101 możliwych sposobów.
Podam Ci coś łatwego.
Jeśli to zapamiętasz to nie będziesz ciągle się gubił pisząc coś własnego. Zapamiętaj, że jeśli otwierasz nawias, klamrę,
apostrof, to musisz go zamknąć. W przypadku konstrukcji warunkowej klamry pokazują, w jakim obszarze znajdują się instrukcje.
Przykład:   if(true){ echo "Wykonałem się"; } Klamry i nawiasy są naturalnym elementem bez których nie miałoby prawa to działać :).
Po if() mamy dwie klamry, po else też dwie i w sumie tyle. Piszę to abyś nie przepisywał ich bezmyślnie np. z tutoriali.

Chcesz pisać sprawnie takie konstrukcje?
Wymyśl 20 różnych warunków i je zapisz. Zajmie Ci to może 2 kwadranse a przynajmniej będziesz już coś umiał.
Bez przećwiczenia tych informacji, raczej nie nauczysz się nic konkretnego.

[PHP] Co to jest zmienna? 2 lekcja php dla zupełnie początkujących.

W ostatniej lekcji wyobrażałeś sobie mój drogi czytelinku, zmienne jako teczki. Temat zmiennych jednak trzeba rozszerzyć
znacznie bardziej. $zmienna to nic innego, jak pojemnik na dane, który posiada jakąś mniej lub bardziej ładną nazwę.
Może przechowywać tekst:

$zmiennaTekstowa = "mój tekst";

Może też przechowywać liczbę

$zmienna = 3;

I jest jeszcze dość ważna sprawa. Wartość zmiennej można…Uwaga tutaj będzie niespodzianka! Zmieniać!

<?php //To zawsze musi być i tyle! Tylko na początku pliku!

$liczba = 1;
echo $liczba;  // Wyświetli się zawartość zmiennej $liczba czyli 1
$liczba = 3;
$liczba = 5;
echo $liczba; //A tutaj zgadnij co się wyświetli, albo sprawdź jeśli sobie nie ufasz

//po sleszach możesz pisać komentarz do kodu. Jest on ignorowany przez serwer.

?> //o tym też nie zapominaj

Zauważ, że w przypadku tekstu musi się on znajdować w apostrofach pojedynczych np. 'tekst' lub podwójnych "tekst" .
To tak jakbyś kogoś cytował. Tak to zapamiętaj.
Liczby zapisujesz bez " ". Widziałeś aby ktoś zapisywał liczby w apostrofach? Tutaj wszystko jest logiczne.
Deklarację zmiennej kończysz średnikiem, dając serwerowi do zrozumienia, że to koniec linii i ma się zająć czymś innym.

Na początku swojej przygody z programowaniem, będziesz zapominał wpisywać średniki,  jednak po około 2 tygodniach,
wejdzie Ci to w nawyk 🙂

Zmienne w php same dostosowują się do typu zawartości, którą do nich wkładasz. Jest to dość miłe ułatwienie pracy.
Głównie temu język php nie jest polecany na początek.  No i co z tego :D.

Na zmiennych możemy wykonywać działania matematyczne, jeśli są liczbami. Jest to dość prosta sprawa i intuicyjna.
Zróbmy tak, zapiszmy liczby do zmiennych a później wypiszmy wynik dodawania. Domyślasz się jak to będzie wyglądało?

 

<?php
$liczba1 = 4;
$liczba2 = 3;
echo $liczba1+$liczba2;

?>

W ten sam sposób możesz je odejmować, mnożyć, dzielić i robić inne rzeczy o których narazie nie musisz i nie chcesz wiedzieć.

Wynik dodawania pokazanego wyżej możesz też zapisać do innej zmiennej np.

$suma = $liczba1 + $liczba2;

i teraz możesz wyświetlić sumę czyli piszesz

echo $suma;
Zmienne tekstowe:

Zmienne takiego typu łączymy kropką. echo $tekst1.$tekst2  , i po sprawie. Stwórz zmienne imię i nazwisko. Wpisz do nich to co uważasz za mniej lub bardziej stosowne, połącz je razem i wyświetl. Potem pomyśl co zrobić jeśli chcemy mieć miedzy nimi spacje podczas wyświetlania. Apostrofy się przydadzą.

Temat zmiennych musisz mieć dobrze przećwiczony.
Testuj różne kombinacje, dodawaj, odejmuj, dziel. Rób z nimi cokolwiek. Najskuteczniejszą metodą nauki programowania
jest wymyślanie sobie jakichkolwiek prostych zadań do zrobienia. Zrób zmienną $produkt1 i $produkt2, przypisz im cenę,
zsumuj, dodaj podatek vat i wypisz na ekran. Umiesz coś policzyć? Zrób program który to robi.
Ogranicza Cię tylko Twoja wyobraźnia.
To właśnie na takich przykładach nauczysz się podstaw. Bez nich kontynuacja nauki, będzie tylko bezmyślnym przepisywaniem
kodów z tutoriali. Zapamiętaj to!