[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;
}

}

?>

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *