PHP

PHP

Клиент - Сървър

            Browser
             |   ↑
  HTTP GET   |   | HTML
  index.php  |   | Content
             ↓   |
        Server (Apache)
          |        ↑
          |        |
          ↓        |
        PHP Interpreter
            |    ↑
 SELECT *   |    |
 FROM Users |    |
            ↓    |
           DB (MySQL)

PHP - XAMPP

Xampp съдържа Apache, PHP, MySQL и други неща

  1. Download XAMPP => Install *
  2. `C:/XAMPP/xampp-control.exe` => Пускате първите 2 (Apache и MySQL)
  3. При проблем с портовете - `Apache -> Config -> httpd.conf` => Сменяте `Listen 80` с друг порт
  4. Всеки файл `C:/XAMPP/htdocs/awesome.php` отговаря на `localhost/awesome.php` в браузъра

* Ако нямате права да инсталирате xampp просто използвайте portable версия

Online website

След време може да решите да си качите уебсайта в мрежата

Тогава ще са ви нужни няколко неща

  1. Domain name - име, чрез което да го достъпваме.

    `mywebsite.tk` - free; `mywebsite.com` - 23лева/година

  2. Hosting

    free - 000webhost.com freehosting.com

    paid - сравнения 1 и 2

  3. FTP manager - онлайн от хостинга, FileZilla или дори Windows Explorer ¿

  1. `This PC` -> `Map Network Drive` -> `Connect to a website...` -> `Next^2` -> `ftp://username@host/` -> `Next & Finish`

PHP файл

Резултат в браузъра

Променливи

Интересни Оператори

`==` и `!=`"Умно" равенство (`3 == "3"`)
`===` и `!==`Стриктно равенство (`3 !== "3"`)
`$a / $b`Деление
`$a % $b`Остатък при целочислено деление
`$a . $b`Конкатенация на стрингове

if

Функции

Цикли

Масиви

Зареждане на други файлове

include 'filename.php';   // основен начин
require 'filename.php';   // същото, но света гърми при грешка

spl_autoload_register(function($className){ // самозарежда всичко,
  include $className . '.php';              // което ни потрябва
});

PHP templates

Показваме ви това просто, за да знаете, че съществува. Не го правете - оставете PHP да връща данните на FE, а с JS ще генерирате съдържанието.

Сесии

По default сесията важи докато не затворите браузъра.

Добра идея е да refresh-вате или унищожавате сесиите след определено време.

Повече информация за сесиите в php

Бисквитки

Това, което всеки уебсайт ни спами, че използва.

Всяка бисквитка има expiration date - ако искате да премахнете бисквитка - просто я задайте наново с дата в миналото.

`$secure` казва да е само за https връзки, а `$httponly` казва да не е достъпна от javascript.

Хеширане

Ако работите с пароли - никога не ги съхранявайте в plain text - след хеширане ще е малко по-сигурно.

Хеширането взима вашата парола и след известни операции ви връща "хеш" - дълъг gibberish string, отговарящ на вашия input. Мислете за хеширането като за странна математическа функция.

`PASSWORD_DEFAULT` в момента е bcrypt алгоритъма - след време може да се смени. Ако сте виждали примери с md5, sha1 etc - забравете ги - отдавна не са сигурни.

При хеширането се добавя и "сол" - допълнителен стринг към паролата за алгоритъма за по-добра сигурност.

PHP 7+ генерира сол по default, така няма нужда да се занимаваме с това.

Други неща

echo $x, $y;            // basic print
print_r($x);            // readable recursive print
var_dump($x, $y...);    // complex recursive print

exit()/die()            // best way to connect to db - connect() or die()

array_map("cube",$arr); // returns array of cubes
implode(", ", $arr);    // joins the array values with the delimeter

$_SERVER;               // available everywhere
$_GET; $_POST;          // contain data from get/post requests

$text = <<<EOF
  Roses are {$colors['roses']},
  Violets are {$colors['violets']}.
  I know it is sad,
  but you have homework to do.
EOF;

ООП в PHP

Наследяване и Полиморфизъм

`A extends B`

Няма множествено наследяване.

Енкапсулация

Namespaces

Задача за упражнение

Направете таблица за умножение (1-9) използвайки PHP

Клетките от първия ред и колона трябва да са заглавни (`th`)

Не сме учили css, така че стиловете са по желание

Въпроси