Wprowadzenie


PHP (ang. PHP Hypertext Preprocessor) – obiektowy, skryptowy język programowania zaprojektowany do generowania dynamicznych stron internetowych. PHP najczęściej stosuje się do przetwarzania skryptów po stronie serwera WWW, ale może być on również używany z poziomu wiersza poleceń oraz w aplikacjach pracujących w trybie graficznym. / Wikipedia /

PHP ...
  • ... jest obiektowym, skryptowym językiem programowania
  • ... bazuje na składni języków C, Java oraz Perl
  • ... potrafi współpracować z znakomitą większością istniejących baz danych
  • ... jest wieloplatformowe
  • ... jest wydajnym rozwiązaniem
  • ... posiada wiele wbudowanych funkcji do rozwiązywania różnych popularnych zadań w sieci WWW
  • ... jest używane przez ok. 20 mln witryn WWW
Historia PHP w obrazku:
Historia PHP w obrazku idź do góry

"Hello World"


...
 7<body>
 8  <h1>Przykład skryptu PHP</h1>
 9  <p>
10    <?php echo("PHP Hello world!"); ?>
11  </p>
12  <p>Dzisiejsza data: <?php echo("Data: ".date("d/m/Y")); ?>
13  </p>
14</body>
...

[pokaż zawartość pliku] [uruchom] idź do góry

Bieżąca konifiguracja


...
 8<body>
 9  <h1>Informacja o konfiguracji bieżącej PHP</h1>
10  <hr>
11  <?php phpinfo(); ?>
12</body>
...

[pokaż zawartość pliku] [uruchom] idź do góry

Odczyt danych z pliku


...
 6<body>
 7  <h1>Odczyt danych z pliku</h1>
 8  <?php   
 9     $file_name="dane.txt";
10     $answer=file($file_name);
11    
12     echo "<table border=1>\n";
13     for($n=0; $n <= 3; $n++) {
14       echo "<tr>";
15        $elems=explode("|",$answer[$n]);
16        for($i=0; $i <= 3; $i++) {
17          echo "<td align=left>".$elems[$i]."</td>\n";
18        }
19        echo "<td><img src=spider".$elems[4].".gif ></td>\n";
20        echo "</tr>\n";
21     }
22     echo "</table>";
23  ?>
24</body>
...

[pokaż zawartość pliku] [uruchom] idź do góry

Wyświetlanie losowych obrazów


...
 8  <body>
 9    <h1>Losowe wyświetlanie rysunku</h1>
10    <a href="phpRandomImage.php">Przeładuj</a> stronę,<br /> 
11    żeby zobaczyć czy rysunek zostanie zmieniony...
12    <br />
13    <?php srand ((double) microtime() * 1000000);?>
14    <img src = "spider<?php printf(mt_rand(1,5))?>.gif" />
15  </body>

[pokaż zawartość pliku] [uruchom] idź do góry

Obsługa ciasteczek


 1<?php
 2  if (isset($_COOKIE["ciasteczko"])) {
 3     $value = $_COOKIE["ciasteczko"];
 4  } else {
 5     SetCookie("ciasteczko", "abc", time()+5);
 6     $value = brak;
 7  }
 8?>
 9<html>
...
16  <body>
17    <h1>Cookies</h1>
18    <p>Ciasteczko: <?php  echo $value; ?></p>
19  </body>
20</html>
[pokaż zawartość pliku] [uruchom] idź do góry

Obsługa sesji


 1<?php
 2  session_start();
 3  if (isset($_SESSION["count"]) )
 4     $_SESSION["count"]++;
 5  else
 6     $_SESSION["count"]=1;
 7?>
 8<html>
...
13  <body>
14    <h1>Obsługa sesji</h1>
15    <p><?php echo "Licznik: ".$_SESSION[count]; ?> .</p>
16  </body>
17</html>
[pokaż zawartość pliku] [uruchom] idź do góry

Autoryzacja


 1<?php
 2  if (!isset($_SERVER[PHP_AUTH_USER])) {
 3    header(WWW-Authenticate: Basic realm="Logowanie"); 
 4    header(HTTP/1.0 401 Unauthorized);
 5    echo Błąd przy logowaniu;
 6    exit;
 7  } else {
 8   echo "<p>Użytkownik: {$_SERVER[PHP_AUTH_USER]}</p>";
 9   echo "<p>Hasło:  {$_SERVER[PHP_AUTH_PW]}</p>";
10  }
11?>
[pokaż zawartość pliku] [uruchom] idź do góry

Wysyłanie mail'a


 1<html>
...
 6  <body>
 7    <?php
 8      mail("XXX@cs.put.poznan.pl", "Test PHP", 
 9           "Test z godziny: ".strftime("%H:%M:%S"));
10    ?>
11    <h1> List został wysłany do adresata</h1>
12  </body>
13</html>
[pokaż zawartość pliku] [uruchom] idź do góry

Dynamicznie generowany obraz


 1<?php
 2  header("Content-type: image/png");
 3  $im = ImageCreateFromPNG("source.png"); 
 4  $cl = ImageColorAllocate($im, 0, 80, 0);
 5  ImageTTFText($im, 40, 0, 20, 100, $cl, 
 6       "verdana.ttf", 
 7       strftime("%d/%m/%Y"));
 8  $cl = ImageColorAllocate($im, 0, 0, 200);
 9  ImageTTFText($im, 50, 30, 100, 490, $cl, 
10       "verdana.ttf", 
11       strftime("%H:%M:%S"));
12  ImagePng($im);
13  ImageDestroy($im);
14?>
[pokaż zawartość pliku] [uruchom]
Zobacz jak wygląda obraz źródłowy . idź do góry

eWidokówka


 1<?php
 2
 3  if (isset($_POST["IMAGE"])) { 
 4       $IMAGE=$_POST[IMAGE]; 
 5  } else {
 6       $IMAGE = "postcardHawaii.jpg";
 7  };

 8  if (isset($_POST[TITLE])) {
 9       $TITLE=$_POST[TITLE];
10  } else {
11       $TITLE = "Pozdrowienia"; 
12  }
13  
14  if (isset($_POST[CONTENT])) {
15       $CONTENT=$_POST[CONTENT];
16  } else {
17       $CONTENT = Twój misiek :); 
18  }
19
20  header("Content-type: image/jpeg");
21  $im = ImageCreateFromJPEG($IMAGE); 
22  $cl = ImageColorAllocate($im, 255, 255, 0);
23  ImageTTFText($im, 40, 0, 20, 60, $cl, 
24          "verdana.ttf", 
25          strftime($TITLE));
26  $cl = ImageColorAllocate($im, 255, 22, 162);
27  ImageTTFText($im, 20, 10, 300, 300, $cl, 
28          "verdana.ttf", 
29          strftime($CONTENT));
30  ImageJpeg($im);
31  ImageDestroy($im);
32?>
[pokaż zawartość pliku]
[uruchom] idź do góry

Dostęp do bazy PostgreSQL z linii poleceń


user@host> psql -h nazwa_serwera -U nazwa_użytkownika -d nazwa_bazy_danych
  Password: **** 
  ...
  Wyświetl pomoc na temat poleceń PostgreSQL
  dbname=> \?
  ...
  Wyświetl listę obiektów dostępnych w bazie danych 
  dbname=> \d
  ...
  Wyświetl opis tabeli PRACOWNICY 
  dbname=> \d pracownicy
  ...
  Wyświetl zawartość tabeli PRACOWNICY 
  dbname=> select * from pracownicy;
  ...
  Wyświetl zawartość tabeli PRACOWNICY spełniającą określone warunki
  dbname=> select * from pracownicy where zarobki > 3000;
  ...
  Wstaw nowe dane do tabeli PRACOWNICY
  dbname=> insert into pracownicy(imie,nazwisko,rok_ur,zarobki)
           values ('Jan','Nowak',1966,3500);
  ...
  Modyfikuj dane z tabeli PRACOWNICY spełniające określone warunki
  dbname=> update pracownicy set nazwisko='Nowak' where imie='Jacek';
  ...
  Usuń dane z tabeli PRACOWNICY spełniające określone warunki
  dbname=> delete from pracownicy where zarobki > 10000;
  ...
  wykonaj skrypt SQL zapisany w pliku "skrypt.sql"
  dbname=> \i skrypt.sql
  ...
  Zakończ pracę
  dbname=> \q
Więcej informacji można znaleźć na stronie www.postgresql.org.pl idź do góry

Select


 1<html>
...
 6  <body>
 7    <h1>Wynik zapytania:</h1>
 8    <?php
 9      if (isset($_POST["SORT"])) { 
10        $SORT=$_POST[SORT]; 
11      } else {
12        $SORT =  nazwisko ;
13      };
14    
15      if (isset($_POST[SORT_TYPE])) {
16        $SORT_TYPE=$_POST[SORT_TYPE];
17      } else {
18        $SORT_TYPE =  asc ; 
19      }
20    
21      $db = pg_Connect ("host=XXX dbname=XXX user=XXX password=XXX");
22      $res = pg_exec ($db, "
23          select * from pracownicy 
24          order by $SORT $SORT_TYPE");
25    
26      $num = pg_numrows($res);
27    
28      echo "<table border=1>";
29      for($i=0; $i<$num; $i++)
30      {
31        echo "<tr>";
32        echo "<td>".pg_result($res, $i, "imie")."</td>";
33        echo "<td>".pg_result($res, $i, "nazwisko")."</td>";
34        echo "<td>".pg_result($res, $i, "rok_ur")."</td>";
35        echo "<td>".pg_result($res, $i, "zarobki")."</td>";
36        echo "</tr>\n";
37      }
38      echo "</table>";
39      pg_freeresult($res);
40      pg_close($db);
41    ?>
42  </body>
43</html>
[pokaż zawartość pliku] [uruchom] idź do góry

Insert


...
 7  <body>
 8    <h1>Dodawanie nowych rekordów</h1>
 9    <?php
10      if (isset($_POST[IMIE])) {
11        Uzyskaj połączenie z bazą danych
12        $db = pg_Connect ("host=XXX dbname=XXX user=XXX password=XXX");
13        Rozpocznij transakcję
14        pg_exec($db, "begin");
15        Wstaw rekord do bazy (Sql INSERT command)
16        $res = pg_exec ($db, "
17        insert into pracownicy (imie,nazwisko,rok_ur,zarobki) 
18        values($_POST[IMIE], $_POST[NAZWISKO],$_POST[ROK_UR],$_POST[ZAROBKI])");

19        if (!$res) { 
20          echo "Błąd aktualizacji bazy danych!"; 
21        } else { 
22          echo "OK"; 
23        }
24        Zatwierdź transakcję
25        pg_exec($db, "commit");
26        Zacznij połączenie z bazą danych
27        pg_close($db);
28        echo "<hr>\n";
29        echo "</body>\n</html>\n";
30        exit;
31      }
32    ?>

33    <form method="post" action="phpInsertDB.php">
34      <table>
35        <tr><td class="label">Imię:</td>
36            <td><input type="text" name="IMIE"></td>
37        </tr>
...
51      </table>
52    </form>
53  </body>
...

[pokaż zawartość pliku] [uruchom] idź do góry

Delete


 1<html>
...
 7  <body>
 8    <h1>Usuwanie rekordów</h1>
 9    <?php
10      if (isset($_POST[NAZWISKO])) { 
11        Uzyskaj połączenie z bazą danych
12        $db = pg_Connect ("host=XXX dbname=XXX user=XXX password=XXX");
13        Rozpocznij transakcję
14        pg_exec($db, "begin");
15        Usuń rekord z bazy danych (Sql DELETE command)
16        $res = pg_exec ($db, "
17          delete from pracownicy 
18          where nazwisko=$_POST[NAZWISKO]");

19        if (!$res) { 
20          echo "Błąd aktualizacji bazy!"; 
21        } else { 
22          echo "OK"; 
23        }

24        Zatwierdź transakcję
25        pg_exec($db, "commit");
26        Zamknij połączenie z bazą danych
27        pg_close($db);

28        echo "<hr>\n";
29        echo "</body>\n</html>\n";
30        exit;
31      }
32    ?>

33    <form method="post" action="phpDeleteDB.php">
...
43    </form>
44  </body>
45</html>
[pokaż zawartość pliku] [uruchom] idź do góry

Zadania


  1. Rozbudować przykład wyświetlający zawartość tabeli PRACOWNICY o możliwość podświetlania danych wg zadanych kryteriów
  2. Rozbudować przykład wyświetlający zawartość tabeli PRACOWNICY o możliwość filtrowania danych wg różnych kolumn
  3. Przygotować formularz do edycji danych w tabeli PRACOWNICY
  4. Przygotować tabelę, umożliwiającą edycję, usuwanie i sortowanie danych
  5. Przygotować prosty system pocztówek elektronicznych (generowanie obrazu, wysłanie powiadomienia do adresata)
idź do góry