Pola ukryte. Mechanizm sesji. Połączenie z bazą danych.
php_9_1.php
|
Przekazywanie informacji pomiędzy stronami za pomocą pola ukrytego. Plik pierwszy.
Pokaż kod PHP
Plik: "php_9_1.php"
1 <html> 2 <head> 3 <title>Przekazywanie danych (strona 1 z 4)</title> 4 <meta http-equiv="content-type" content="text/html;charset=UTF-8"> 5 </head> 6 <body> 7 8 <form method="GET" action="php_9_2.php"> 9 Imię: <input type="text" name="imie"> 10 <br><input type="submit" value="Dalej"> 11 </form> 12 13 </body> 14 </html>
Zwiń
|
|
php_9_2.php
|
Przekazywanie informacji pomiędzy stronami za pomocą pola ukrytego. Plik drugi.
Pokaż kod PHP
Plik: "php_9_2.php"
1 <html> 2 <head> 3 <title>Przekazywanie danych (strona 2 z 4)</title> 4 <meta http-equiv="content-type" content="text/html;charset=UTF-8"> 5 </head> 6 <body> 7 8 Odebrano:<br> 9 Imię: <?php echo $_GET["imie"];?> 10 <form method="GET" action="php_9_3.php"> 11 Nazwisko: <input type="text" name="nazwisko"> 12 <input type="hidden" name="imie" value=<?php echo $_GET["imie"];?> > 13 <br><input type="submit" value="Dalej"> 14 </form> 15 16 </body> 17 </html>
Zwiń
|
|
php_9_3.php
|
Przekazywanie informacji pomiędzy stronami za pomocą pola ukrytego. Plik trzeci.
Pokaż kod PHP
Plik: "php_9_3.php"
1 <html> 2 <head> 3 <title>Przekazywanie danych (strona 3 z 4)</title> 4 <meta http-equiv="content-type" content="text/html;charset=UTF-8"> 5 </head> 6 <body> 7 8 Odebrano:<br> 9 Imię: <?php echo $_GET["imie"];?><br> 10 Nazwisko: <?php echo $_GET["nazwisko"];?> 11 <form method="GET" action="php_9_4.php"> 12 Adres: <input type="text" name="adres"> 13 <input type="hidden" name="imie" value=<?php echo $_GET["imie"];?> > 14 <input type="hidden" name="nazwisko" value=<?php echo $_GET["nazwisko"];?> > 15 <br><input type="submit" value="Dalej"> 16 </form> 17 18 </body> 19 </html>
Zwiń
|
|
php_9_4.php
|
Przekazywanie informacji pomiędzy stronami za pomocą pola ukrytego. Plik czwarty (ostatni).
Pokaż kod PHP
Plik: "php_9_4.php"
1 <html> 2 <head> 3 <title>Przekazywanie danych (strona 4 z 4)</title> 4 <meta http-equiv="content-type" content="text/html;charset=UTF-8"> 5 </head> 6 <body> 7 8 Odebrano:<br> 9 Imię: <?php echo $_GET["imie"];?><br> 10 Nazwisko: <?php echo $_GET["nazwisko"];?><br> 11 Adres: <?php echo $_GET["adres"];?> 12 13 </body> 14 </html>
Zwiń
|
|
php_9_5.php
|
Przekazywanie informacji pomiędzy stronami za pomocą mechanizmu sesji. Plik pierwszy (odpowiednik pliku php_9_1.php).
Pokaż kod PHP
Plik: "php_9_5.php"
1 <html> 2 <head> 3 <title>Przekazywanie danych (strona 1 z 4)</title> 4 <meta http-equiv="content-type" content="text/html;charset=UTF-8"> 5 </head> 6 <body> 7 8 <form method="GET" action="php_9_6.php"> 9 Imię: <input type="text" name="imie"> 10 <br><input type="submit" value="Dalej"> 11 </form> 12 13 </body> 14 </html>
Zwiń
|
|
php_9_6.php
|
Przekazywanie informacji pomiędzy stronami za pomocą mechanizmu sesji. Plik drugi (odpowiednik pliku php_9_2.php).
Pokaż kod PHP
Plik: "php_9_6.php"
1 <?php 2 session_start(); 3 ?> 4 <html> 5 <head> 6 <title>Przekazywanie danych (strona 2 z 4)</title> 7 <meta http-equiv="content-type" content="text/html;charset=UTF-8"> 8 </head> 9 <body> 10 11 Odebrano:<br> 12 Imię: <?php echo $_GET["imie"];?> 13 <?php 14 $_SESSION["imie"]=$_GET["imie"]; 15 ?> 16 17 <form method="GET" action="php_9_7.php"> 18 Nazwisko: <input type="text" name="nazwisko"> 19 <br><input type="submit" value="Dalej"> 20 </form> 21 22 </body> 23 </html>
Zwiń
|
|
php_9_7.php
|
Przekazywanie informacji pomiędzy stronami za pomocą mechanizmu sesji. Plik trzeci (odpowiednik pliku php_9_3.php).
Pokaż kod PHP
Plik: "php_9_7.php"
1 <?php 2 session_start(); 3 ?> 4 <html> 5 <head> 6 <title>Przekazywanie danych (strona 3 z 4)</title> 7 <meta http-equiv="content-type" content="text/html;charset=UTF-8"> 8 </head> 9 <body> 10 11 Odebrano:<br> 12 Imię: <?php echo $_SESSION["imie"];?><br> 13 Nazwisko: <?php echo $_GET["nazwisko"];?> 14 <?php 15 $_SESSION["nazwisko"]=$_GET["nazwisko"]; 16 ?> 17 <form method="GET" action="php_9_8.php"> 18 Adres: <input type="text" name="adres"> 19 <br><input type="submit" value="Dalej"> 20 </form> 21 22 </body> 23 </html>
Zwiń
|
|
php_9_8.php
|
Przekazywanie informacji pomiędzy stronami za pomocą mechanizmu sesji. Plik czwarty (ostatni) (odpowiednik pliku php_9_4.php).
Pokaż kod PHP
Plik: "php_9_8.php"
1 <?php 2 session_start(); 3 ?> 4 <html> 5 <head> 6 <title>Przekazywanie danych (strona 4 z 4)</title> 7 <meta http-equiv="content-type" content="text/html;charset=UTF-8"> 8 </head> 9 <body> 10 11 Odebrano:<br> 12 Imię: <?php echo $_SESSION["imie"];?><br> 13 Nazwisko: <?php echo $_SESSION["nazwisko"];?><br> 14 Adres: <?php echo $_GET["adres"];?> 15 16 </body> 17 </html>
Zwiń
|
|
php_9_4_1.php
|
Licznik odświeżeń strony oparty o sesję.
Pokaż kod PHP
Plik: "php_9_4_1.php"
1 <?php 2 session_start(); 3 4 if(isset($_GET['reset'])==true) 5 { 6 // Usuwa wszystkie zmienne sesyjne 7 $_SESSION = array(); 8 // Aby usunąć sesję, usuwamy także ciasteczko sesyjne. 9 if (isset($_COOKIE[session_name()])) 10 { 11 setcookie(session_name(), '', time()-42000, '/'); 12 } 13 // Niszczymy sesję 14 session_destroy(); 15 } 16 else 17 { 18 if (!isset($_SESSION['count'])) 19 { 20 $_SESSION['count'] = 1; 21 } 22 else 23 { 24 $_SESSION['count']++; 25 } 26 } 27 ?> 28 29 <?php 30 if(isset($_SESSION['count'])==false) 31 echo "Stronę otworzono 0 razy"; 32 else 33 echo "Stronę otworzono ".$_SESSION['count']." razy"; 34 ?> 35 36 <form method="GET" action="php_9_4_1.php"> 37 <input type="submit" value="Odśwież" name="reload"> 38 <input type="submit" value="Resetuj" name="reset"> 39 </form>
Zwiń
|
|
php_9_10.php
|
Pobieranie informacji z bazy danych.
Przyjmujemy, że baza nazywa się terminarz i zawiera jedną tabelę o nazwie wydarzenia. Tabela może zostać wygenerowana poniższym skryptem.
Pokaż kod PHP
Plik: "terminarz_simple/index.php"
1 <?php
2 //poczenie z baz danych
3 $host="localhost";
4 $user="root";
5 $password="";
6 $database="terminarz_simple";
7
8 $con=mysql_connect($host,$user,$password) or die("Unable to connect to ".$host);
9 mysql_select_db($database,$con) or die("Unable to select database ".$database);
10
11 //Wykonanie akcji wynikajcych z podjtych
12 //wczesniej przez uzytkownika dziaa
13 //AKCJA 1: dodanie nowego wydarzenia
14 if(isset($_GET["action_insert_wydarzenie"])){
15 $query="INSERT into wydarzenia (nazwa,opis,data,czas,kategoria,wykonano,cyklicznosc) values
16 ('".$_GET["nazwa"]."','".$_GET["opis"]."','".$_GET["data"]."','".$_GET["czas"]."','".$_GET["kategoria"]."','".$_GET["wykonano"]."','".$_GET["cyklicznosc"]."')";
17 $result=mysql_query($query,$con);
18 if(!$result)
19 die("Query failed".mysql_error());
20 }
21
22 //formularz
23 $s=
24 '
25 <form method="get" action="index.php">
26 Nazwa:<input type="text" name="nazwa"><br />
27 Opis:<br />
28 <textarea rows="10" cols="40" name="opis"></textarea><br />
29 Data:<input type="text" name="data"><br />
30 Czas:<input type="text" name="czas"><br />
31 Kategoria:<input type="text" name="kategoria"><br />
32 Wykonano:<input type="text" name="wykonano"><br />
33 Cykliczno:<input type="text" name="cyklicznosc"><br />
34 <input type="submit" value="Dodaj" name="action_insert_wydarzenie"><br />
35 <hr />
36 ';
37 echo $s;
38
39 //wypisanie zawartoci tabeli
40 $query="SELECT * FROM wydarzenia";
41 $result=mysql_query($query,$con);
42 if(!$result)
43 die("Query failed".mysql_error());
44 if(mysql_num_rows($result)>0){
45 while($rekord=mysql_fetch_array($result)){
46 echo $rekord["id"]." ";
47 echo $rekord["nazwa"]."</br>";
48 echo $rekord["opis"]."</br>";
49 echo $rekord["data"]."</br>";
50 echo $rekord["czas"]."</br>";
51 echo $rekord["kategoria"]."</br>";
52 echo $rekord["wykonano"]."</br>";
53 echo $rekord["cyklicznosc"]."</br>";
54 echo "<hr />";
55 }
56 }
57 ?>
Zwiń
Pokaż kod SQL Pobież plik SQL
Plik: "terminarz_simple/terminarz_simple.sql"
1 -- phpMyAdmin SQL Dump 2 -- version 3.2.0.1 3 -- http://www.phpmyadmin.net 4 -- 5 -- Host: localhost 6 -- Czas wygenerowania: 14 Sty 2012, 20:56 7 -- Wersja serwera: 5.1.36 8 -- Wersja PHP: 5.3.0 9 10 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; 11 12 13 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 14 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 15 /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 16 /*!40101 SET NAMES utf8 */; 17 18 -- 19 -- Baza danych: `terminarz_simple` 20 -- 21 22 -- -------------------------------------------------------- 23 24 -- 25 -- Struktura tabeli dla `wydarzenia` 26 -- 27 28 CREATE TABLE IF NOT EXISTS `wydarzenia` ( 29 `id` int(11) NOT NULL AUTO_INCREMENT, 30 `nazwa` varchar(256) COLLATE utf8_polish_ci NOT NULL, 31 `opis` text COLLATE utf8_polish_ci NOT NULL, 32 `data` date NOT NULL, 33 `czas` time NOT NULL, 34 `kategoria` varchar(64) COLLATE utf8_polish_ci NOT NULL, 35 `wykonano` tinyint(1) NOT NULL, 36 `cyklicznosc` varchar(64) COLLATE utf8_polish_ci NOT NULL, 37 PRIMARY KEY (`id`) 38 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=4 ; 39 40 -- 41 -- Zrzut danych tabeli `wydarzenia` 42 -- 43 44 INSERT INTO `wydarzenia` (`id`, `nazwa`, `opis`, `data`, `czas`, `kategoria`, `wykonano`, `cyklicznosc`) VALUES 45 (1, 'Wydarzenie testowe 1', 'Takie sobie wydarzenie testowe', '2012-01-12', '10:10:00', 'Test', 0, 'co tydzien'), 46 (2, 'Wydarzenie testowe 2', 'Takie sobie inne wydarzenie testowe', '2012-01-14', '12:12:00', 'brak', 1, 'codziennie');
Zwiń
|
|
php_9_9.php
|
Mechanimz logowania na przykładzie formu dyskusyjnego (przykład dotyczy zasadniczo tylko mechanizmu logowania a nie kompletnego forum).
Pokaż kod PHP
Plik: "php_9_9.php"
1 <?php
2 session_start();
3
4 include('utils9.php');
5
6 if(isset($_GET['ActionLogout'])==true)
7 {
8 //Realizuje wylogowanie
9 // Usuwa wszystkie zmienne sesyjne
10 $_SESSION = array();
11 // Aby usun sesj, usuwamy take ciasteczko sesyjne.
12 if (isset($_COOKIE[session_name()]))
13 {
14 setcookie(session_name(), '', time()-42000, '/');
15 }
16 // Niszczymy sesj
17 session_destroy();
18 firstPage();
19 }
20 else if(isset($_GET['ActionLogin'])==true)
21 {
22 //Proba logowania
23 //Sprawdzam czy ktos taki istnieje
24
25 $query=
26 "SELECT
27 osoba.imie as imie, osoba.nazwisko as nazwisko, osoba.id as uid, rola.id as rid, rola.rola as rola
28 FROM
29 osoba,rola
30 WHERE
31 osoba.rola_id=rola.id AND login='".$_GET['login']."' AND haslo='".$_GET['haslo']."';";
32
33 $result = query($query);
34
35 if(mysql_num_rows($result)==1)
36 {
37 //tak, ktos taki istnieje
38 $row = mysql_fetch_array($result);
39 $_SESSION['imie']=$row['imie'];
40 $_SESSION['nazwisko']=$row['nazwisko'];
41 $_SESSION['rola']=$row['rola'];
42 $_SESSION['uid']=$row['uid'];
43 $_SESSION['rid']=$row['rid'];
44 firstPageOK($row['imie'],$row['nazwisko'],$row['rola']);
45 }
46 else
47 {
48 //nie, nie ma takiej osoby
49 firstPageLoginError();
50 }
51 }
52 else if(isset($_SESSION['uid'])==true)
53 {
54 //Uzytkownik zalogowany
55 //Strona powitalna
56 firstPageOK($_SESSION['imie'],$_SESSION['nazwisko'],$_SESSION['rola']);
57 }
58 else
59 {
60 //Uzytkownik nie jest znany (jest anonimowy)
61 //Strona powitalna
62 firstPage();
63 }
64 ?>Zwiń
Pokaż kod SQL Pobież plik SQL
Plik: "baza9.sql"
1 -- phpMyAdmin SQL Dump
2 -- version 2.11.6
3 -- http://www.phpmyadmin.net
4 --
5 -- Host: localhost
6 -- Czas wygenerowania: 17 Kwi 2009, 12:10
7 -- Wersja serwera: 5.0.51
8 -- Wersja PHP: 5.2.6
9
10 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
11
12 --
13 -- Baza danych: `forum`
14 --
15
16 -- --------------------------------------------------------
17
18 --
19 -- Struktura tabeli dla `osoba`
20 --
21
22 DROP TABLE IF EXISTS `osoba`;
23 CREATE TABLE IF NOT EXISTS `osoba` (
24 `id` int(11) NOT NULL auto_increment,
25 `imie` varchar(20) NOT NULL,
26 `nazwisko` varchar(30) NOT NULL,
27 `login` varchar(20) NOT NULL,
28 `haslo` varchar(30) NOT NULL,
29 `rola_id` int(11) NOT NULL,
30 PRIMARY KEY (`id`),
31 KEY `rola` (`rola_id`)
32 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
33
34 --
35 -- Zrzut danych tabeli `osoba`
36 --
37
38 INSERT INTO `osoba` (`id`, `imie`, `nazwisko`, `login`, `haslo`, `rola_id`) VALUES
39 (1, 'adminI', 'adminN', 'admin', 'adminH', 1),
40 (2, 'Piotr', 'Fulmaski', 'pf', 'pf', 2);
41
42 -- --------------------------------------------------------
43
44 --
45 -- Struktura tabeli dla `rola`
46 --
47
48 DROP TABLE IF EXISTS `rola`;
49 CREATE TABLE IF NOT EXISTS `rola` (
50 `id` int(11) NOT NULL auto_increment,
51 `rola` varchar(20) NOT NULL,
52 PRIMARY KEY (`id`)
53 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
54
55 --
56 -- Zrzut danych tabeli `rola`
57 --
58
59 INSERT INTO `rola` (`id`, `rola`) VALUES
60 (1, 'admin'),
61 (2, 'user'),
62 (3, 'noname');
63
64 --
65 -- Ograniczenia dla zrzutw tabel
66 --
67
68 --
69 -- Ograniczenia dla tabeli `osoba`
70 --
71 ALTER TABLE `osoba`
72 ADD CONSTRAINT `osoba_ibfk_1` FOREIGN KEY (`rola_id`) REFERENCES `rola` (`id`);
Zwiń
Pokaż kod PHP pliku pomocniczego
Plik: "utils9.php"
1 <?php
2 function wiadomosciOK($rola=NULL)
3 {
4 }
5
6 function formularzOK($rola=NULL)
7 {
8 }
9
10 function firstPage()
11 {
12 firstPageHeader();
13 wiadomosci();
14 formularz();
15 }
16
17 function firstPageLoginError()
18 {
19 firstPageHeaderError();
20 wiadomosci();
21 formularz();
22 }
23
24 function firstPageOK($imie,$nazwisko,$rola)
25 {
26 firstPageHeaderOK($imie,$nazwisko,$rola);
27 wiadomosciOK($rola);
28 formularzOK($rola);
29 }
30
31 function firstPageHeader()
32 {
33 echo
34 '
35 <form method="GET" action="php_9_9.php">
36 Login <input type="text" value="" name="login">
37 Haso <input type="text" value="" name="haslo">
38 <input type="submit" value="Login" name="ActionLogin">
39 </form>
40 <hr>
41 ';
42 }
43
44 function firstPageHeaderError()
45 {
46 echo
47 '
48 <font color="red" size="3">Bdny login i/lub haslo!</font>
49 <hr>
50 <form method="GET" action="php_9_9.php">
51 Login <input type="text" value="" name="login">
52 Haso <input type="text" value="" name="haslo">
53 <input type="submit" value="Login" name="ActionLogin">
54 </form>
55 <hr>
56 ';
57 }
58
59 function firstPageHeaderOK($i,$n,$r)
60 {
61 echo "Osoba zalogowana: <b>".$i." ".$n."</b> rola: <b>".$r."</b>";
62 echo
63 '
64 <form method="GET" action="php_9_9.php">
65 <input type="submit" value="Logout" name="ActionLogout">
66 </form>
67 <hr>
68 ';
69 }
70
71 function query($query)
72 {
73 $host="localhost";
74 $user="root";
75 $password="";
76 $database="forum";
77 $con=mysql_connect($host,$user,$password)
78 or die("Unable to connect to msql server: ".$host);
79
80 mysql_select_db($database,$con)
81 or die("unable to select database ".$database);
82
83 //echo $query;
84 $result = mysql_query($query, $con);
85
86 if (!$result)
87 {
88 die("Query failed: " . mysql_error());
89 }
90
91 return $result;
92 }
93 ?>Zwiń
|
|
|