php - кафедры Кибернетики

Download Report

Transcript php - кафедры Кибернетики

Тема 5. Средства реализации
серверной логики.
Тема 6.PHP
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Содержание темы
• Принципы работы web-сервера, интерфейс
CGI, передача информации CGI-сценарию
• Реализация серверной логики с помощью
скриптов
• Установка и настройка PHP в Apache
• Встраивание PHP в HTML
• Добавление динамического содержимого,
базовый синтаксис
• Повторное использование кода
• Типы данных. Константы
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Содержание темы
• Использование массивов
• Стандартные функции PHP
• Управляющие конструкции
• HTML-формы, обработка форм. Хранение и
получение данных
• Функции работы с файлами
• Функции и области видимости
• Реализация сеансов
• Работа с СУБД
• Графика
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Принцип работы web-сервера с динамическим содержанием страниц
CGI (Common Gateway Interface) - набор правил и
соглашений для взаимодействия сервера и
приложений; реализовано на различных платформах.
Принцип работы веб-сервера:
механизм сервера, реализующий CGI, перенаправляет
вывод приложений веб-серверу, тот – браузеру
пользователя.
Приложение
Веб-сервер
Браузер
CGI
Стандартный вывод
МИФИ, Кафедра «Кибернетика»
Интернет-протокол
http://cyber.mephi.ru
Основы CGI
1.
2.
3.
4.
Этапы работы CGI-программы (сценария):
получения данных, переданных пользователем;
обработка;
вывод результата;
завершение.
#include <stdio.h>
#include "cgi-lib.h"
int main() {
llist input;
1. read_cgi_input(&input);
2. do_anything();
3. printf("Content-Type: text/html\r\n\r\n <html><head>\n");
printf("<title>My Test Page</title>\n</head>\n<body>\n");
printf("Hello, %s. You are\n",cgi_val(input,"name"));
printf("</body> </html>\n");
4. }
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Основы CGI
CGI-сценарий может быть написан и в
командном файле Windows:
cgi.bat
@echo off
1. set my_var=%1
2. set my_var=%my_var% .endparam
3. echo Content type: text/html
echo .
echo .
echo Hello! Request param: %my_var%
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Основы CGI
CGI-сценарий (программа) получает доступ ко
всем переменным окружения ОС, в том числе
• специфическим переменным конкретного вебсервера
• переменным с полями HTTP-запроса
• переменным соединения (например,
защищенного соединения SSL)
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Переменные окружения HTTP-полей запроса
• HTTP_HOST – имя виртуального хоста
• HTTP_USER_AGENT – программное
обеспечение клиента (версия браузера)
• HTTP_ACCEPT – список типов содержимого,
поддерживаемого клиентом
• HTTP_ACCEPT_LANGUAGE – языки в порядке
предпочтения
• HTTP_CONNECTION – keep-alive/close
• HTTP_REFERER – адрес с которого перешли на
страницу
• ...
«Похожи» на параметры (заголовки) HTTPзапроса : User-Agent, Accept, Cookie, …
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Переменные Apache
•
•
•
•
•
•
AUTH_TYPE
CONTENT_LENGTH
REMOTE_ADR
REMOTE_USER
QUERY_STRING
...
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
CGI vs PHP. История развития PHP
PHP и другие специальные средства разработки
веб-страниц вытесняют cgi-программы (скрипты).
Php и MySql– постоянно развивающиеся средства
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Встраивание PHP в HTML
• Стандартные теги
<?php
... code
?>
• Сокращенные теги
<?
... code
?>
<?= $variable ?>
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Базовый синтаксис PHP
• Нечувствительность к пробелам (но нельзя
вставлять пробелы внутрь “<?php”, имен и
ключевых слов
• Выделение блоков кода { . . . } , можно
вложенное
• PHP – язык, похожий на C
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Добавление динамического содержимого
<html><head><title>WELCOME</title></head>
<body>Welcome to server
<?php echo $_SERVER['SERVER_SOFTWARE']; ?><br>
<a href="/secretlink.php">Enjoy this link</a>
</body>
</html>
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Комментарии в PHP
• // Single line comment
• # Single line comment
• /* Multi-line
comment
*/
• Пример документирования функции в комментариях
/**
* Documentation Example
*
* @param string $bar
*/
function foo($bar) { }
• Комментарии // и # заканчиваются символом новой
строки или ?>.
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Повторное использование кода в PHP
• Серверные включения
• Особенности использования include и require.
– Динамическое включение во время выполнения
•include "data_connect.inc.php";
– Включение до выполнения
•require "data_connect.inc.php";
• Инструкции include_once и require_once.
Включение только один раз
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Типы данных
• Простые (scalar)
boolean
int (10;-13)(0666;0100)(0xFF;-0x100)
float (0.12;-1234.43;2E7;1.2e2)
Разрядность чисел зависит от платформы реализации
string
• Сложные (composite)
Arrays
Objects
• Специальные
NULL
resource
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Переменные в PHP
• Безтиповые
• Начинаются с $
• Наименование содержит цифры, латинские
буквы и подчеркивание


регистрозависимое
начинается с буквы или подчеркивания
• Переменная может содержать имя другой
переменной
$name = ’myvar’;
$$name = ’демо’;
echo $myvar;
// напечатется ’демо’
• isset ($namevar)- проверка существования и
not NULL
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Константы
• Могут содержать только простые типы
• Define(varname, value)
• Примеры
define(’EMAIL’, ’[email protected]’);
echo EMAIL; //печать ’[email protected]’
define(’USE_XML’, true);
if (USE_XML) {... } //
• Символьные константы: ' ' и " "
• Управляющие комбинации: \r, \n, \", \\ и др.
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Массивы
• Могут содержать практически любые значения,
включая другие массивы
• Могут иметь ключи




числовые
автосчетчик
символьные
смешанные
• Способы задания


array()
[]
• Функции работы с массивами



array_merge()
count()
...
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Массивы
• Ключ по умолчанию 0, 1, 2, …
$a = array (10, 20, 30);
• Символьный ключ
$a = array (’a’ => 10, ’b’ => 20, ’ce’ => 30);
• Неупорядоченный массив
$a = array (5 => 1, 3 => 2, 1 => 3,);
• Пустой массив
$a = array();
• []
$ar[] = 22; // автоматически присвоен ключ 0
$ar[’bb’] = 25;
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Способ просмотра массива и других переменных
<pre><?php
$a = array ('a' => 'apple', 'b' => 'banana',
'c' => array ('x', 'y', 'z'));
print_r ($a); ?></pre>
Array
(
[a] => apple
[b] => banana
[c] => Array
(
[0] => x
[1] => y
[2] => z
)
)
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Глобальные массивы _GET и _POST
• Использование GET
– вызов
http://example.org/index.php?list=user&order=1
– обработка в PHP
echo $_GET[’list’];
• Использование POST
– вызов (html или PHP)
<form action="index.php" method="POST">
<input type="text" name="user" />
<input type="password" name="pass’ />…</form>
– обработка в PHP
echo $_POST[’user’];
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Cookie
setcookie("User","Petr",time()+86400);
name
Имя
value
Хранится на компьютере клиента. Не
храните важную информацию здесь!
expire
Время актуальности в Unix-формате
Если пропущено – доя конца сессии (до
закрытия окна браузера)
time()+60*60*24*30
(30 дней)
Путь (+поддиректории) на сервере, где
данное cookie доступно
'/‘ – весь домен,
По умолчанию – текущая
директория
path
Домены сервера, где данное cookie
domain доступно
Secure
Httponly
Если TRUE, то устанавливается только
при HTTPS
Обратиться $_COOKIE[‘user']
.example.com – все
поддомены
The default is FALSE.
Если TRUE, то cookie не доступно by
скриптам, как JavaScript.
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Функции в PHP
• Возврат значения
function hello()
{
return "Hello World";
}
• Возврат ссылки на переменную/ресурс
function &query($sql)
{
$result = mysql_query($sql);
return $result;
}
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Функции в PHP
• Аргументы по значению
function hello($who) {. . .}
• Значения по умолчанию
function hello($what, $who = "World"){}
• Аргументы по ссылкам
function hello(&$who) {. . .}
• С произвольным числом аргументов
function hello() {}
– func_num_args()
– func_get_arg()
– array_shift()
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Функции в PHP
• Способы обращение к переменным,
определенным вне функции
– global $a, $b;
– $GLOBALS[’a’]
• Более 120 «стандартных»
расширений php
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Управляющие конструкции
• C-подобные конструкции
– if (expression1) {
} elseif (expression2) {
} else {
}
– switch (){ case : ; break; default:}
– while () { }
– do {} whjile ()
– for ($i = 0; $i < 10; $i++) { }
• Функция обработки ошибок
– set_error_handler(’myErrorHandler’)
myErrorHandler ($errNo, $errStr, $errFile,
$errLine, $errContext)
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Обращение к СУБД
Соединение с СУБД (подключение)
Выбор (открытие) базы данных
Запрос к БД
Обработка результатов
…
…
…
5. Закрытие
• Возможна одновременная работа с несколькими
БД
• Встроенные (специальные) функции работы с
СУБД и использование ресурсов ОС
1.
2.
3.
4.
3.
4.
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Обращение к СУБД
$hostname = "localhost";//databasehostname
$usernamedb = "root";// database username
$passworddb = "";
// database password
$dbName = "PKtest"; // database name
1.$dblink = mysql_connect($hostname,
$usernamedb, $passworddb) or die ("Could not
connect");
2.mysql_select_db ($dbName) or die ("Could
not select database");
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Обращение к СУБД
$SQLstring="SELECT f1,f2,name From MyTable
order by name ASC";
3.$result=MYSQL_QUERY(SQLstring);
echo "<table border=2>";
4.while ($row= mysql_fetch_array($result,
MYSQL_ASSOC))
{
echo '<tr><td>Name: '. $row["name"]. '</td>
<td>' . $row["f1"].'</td> <td>' .
$row["f2"] .'</td><tr>';
}
echo "</table>";?>
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Обращение к СУБД (MS Access)
ОБЪЕКТЫ
<?php $db = 'C:\\Program Files\\Microsoft
Office\\Office\\Samples\\borei.mdb';
$conn = new COM('ADODB.Connection')
1.- 2.$conn->Open("DRIVER={Microsoft Access
Driver (*.mdb)};DriverId=25;FIL=MS
Создание
Access; DBQ=$db");
объекта
$sql = "SELECT
*
FROM
\"Доставка\"
3.$rs = $conn->Execute($sql);
echo "<table border=1>";
МИФИ, Кафедра «Кибернетика»
";
Создание
Вызов метода
объекта
http://cyber.mephi.ru
Обращение к СУБД (MS Access)
echo "<table border=1>";
4.while (!$rs->EOF){
echo "<tr>";
for ($i=0; $i<=2; $i++){
echo "<td>".$rs->Fields[$i]->value.</td>";
}
Обращение к
$rs->movenext();
свойству
echo "</tr>";
}
5.$rs->Close(); $conn->Close();
Уничтожение
$rs = null; $conn = null;
объекта
?> </table>
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Обращение к СУБД (MS Access)
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Классы (определение)
class foo {
private $bas;
public var1 = "Test"; // String
public var3 = array (1, 2, 3);
function __construct()
{
. . .
}
. . .
}
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Графическая библиотека GD
• Установка
– входит в поставку php
– для активации – подключить в php.ini строку:
extension=php_gd2.dll
1. Создать «пустое» изображение с помощью
$img=ImageCreateTrueColor($x,$y))
2. Установить формат header("Content-type:
image/png");
3. Определить палитру $white =
imagecolorallocate($img, 255, 255, 255);
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Графическая библиотека GD
4. Рисовать с помощью графических примитивов
ImageSetPixel( ) ImageLine( )
ImageFilledRectangle( ) ...
5. Вывести изображение imagepng($img);
6. Очистить объект imagedestroy($img);
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Графическая библиотека GD
header("Content-type: image/png");
$img = ImageCreateTrueColor(350,200);
$white = ImageColorAllocate($img,255,255,255);
$grey = …; $black = … ;
ImageFilledRectangle($img,0,0,350,199,$white);
draw_grid($img, 0,0,15,20,20,10);
$text = 'Testing... Dept. 22';
$font = 'C:\\WIN2K\\Fonts\\arial.ttf';
ImageTtftext($img, 20, 20, 11, 121, $grey,
$font, $text);
ImageTtftext($img, 20, 20, 10, 120, $black,
$font, $text);
ImagePng($img);ImageDestroy($img);
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Использование дополнительных библиотек
для деловой графики
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Работа с файлами (ресурсами)
•
file – доступ к обычным локальным файлам
•
http – доступ к удаленным ресурсам через HTTP
•
ftp – доступ к удаленным ресурсам через FTP
• compress.zlib – доступ к сжатым данным через
библиотеку zlib compression library.
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Работа с обычными файлами
• Упрощенный вызов (за один вызов)
– string file_get_contents ( string filename
[, bool use_include_path [, resource
context [, int offset [,int maxlen]]]])
– int file_put_contents ( string $filename,
mixed $data [, int $flags [, resource
$context]] )
Значения $flag: FILE_USE_INCLUDE_PATH/ FILE_APPEND/
LOCK_EX/FILE_TEX/FILE_BINARY
• Традиционный вызов (C-подобный)
– fopen( ) fread( )/fwrite( )  fclose( )
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Работа с другими ресурсами
• $file = fopen (’http://www.phparch.com’);
• $file =
file_get_contents("http://localhost/",
false, $http_options);
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Два мира – два сервера
LAMP
PHP/Perl/Python
IIS
Linux
Linux
© Microsoft
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
WAMP
PHP/Perl/Python
Linux
© Microsoft
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Бесплатная редакция Microsoft SQL
© Microsoft
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
WASP
PHP/Perl/Python
Linux
© Microsoft
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
WISP
PHP/Perl/Python
IIS
Linux
© Microsoft
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
FastCGI – поддержка php в IIS
The IIS Team is eager to announce the official release
of Microsoft FastCGI Extension for IIS 6.0 as a free
download.
For the first time, we are providing hosters and PHP
developers full support for a stack of technology that
enables reliable, scalable PHP hosting on production
Internet Information Services 6.0 (IIS 6) Web servers.
(Note: The FastCGI module is built in to Windows Server
2008.)
© Microsoft
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Microsoft и PHP
PHP на Windows просто
больше возможностей!
http://www.iis.net/php
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
WISPA!
IIS
Linux
© Microsoft
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Ресурсы интернет
www.php.net/manual
http://www.phpclasses.org/
• .
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
PHP-редактор
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Демо: установка WAMP
1. Загрузить с http://wampserver.com/ и запустить из установку
WampServer. Рекомендуется выбрать все установки по
умолчанию.
2. Запустить сервер WampServer. После успешного запуска
появится значок на панели задач .
Если не запускается сервер Apache (значок желтый
),
отключить сервер IIS (щелчок правой кнопкой по "Мой компьютер
-> Управление -> Службы и приложения -> Службы -> Вебпубликации -> Остановить ) и запустить сервер apache еще раз.
3. Щелкните левой кнопкой мыши по значку сервера и выберете
http://localhost/, в открывшейся странице поочередно запустите
для ознакомления ссылки phpinfo(), phpmyadmin и sqlitemanager
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
Демо: Калькулятор
ДЕМО
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru
СПАСИБО ЗА ВНИМАНИЕ !
Вопросы
МИФИ, Кафедра «Кибернетика»
http://cyber.mephi.ru