Занятия

Изучение веб-технологий: PHP, JS, Java

Занятия

Сообщение ChebotarevAA MEPhI » 16 май 2011, 02:01

На занятии 10 мая мы проходили основные моменты:

1. Создание рабочего места;
2. (PHP) Создание php-файла, встраивание php-кода в html;
3. (PHP/HTML) Создание формы авторизации;
4. (PHP) Типы данных в php;
5. (HTML/JavaScript) XSS-атаки.


1. Создание рабочего места
1.1 Для создания рабочего места для начала идеально подойдет связка Apache+MySQL+PHP, чтобы избежать сейчас потерю времени на установку этих модулей, советую начать с Denwer'а (http://www.denwer.ru), если вы используете, например, Mac OS, советую использовать XAMPP (http://www.apachefriends.org/ru/xampp.html).
После установки Денвера чтобы запустить сервис, нужно нажать ярлык "Start", после чего появится виртуальный диск (Z) и вы сможете начать работать.

Для работы с Денвером загружайте файлы в папку test1.ru/www, чтобы открыть файл с именем, например, "form.php", лежащий в test1.ru/www требуется ввести в адресной строке браузера test1.ru/form.php.

1.2 Для удобной работы с кодом используйте notepad++ (http://notepad-plus-plus.org/). Запомните, сохраняя файлы в кодировке UTF-8 не забывайте указывать в меню "Кодировка" UTF-8 без BOM (о BOM читайте в разделе Юникод на http://www.ru.wikipedia.org). Для пользователей Mac OS стоит загрузить TextMate.

1.3 Установите браузер Firefox и, для начала, плагин Firebug

2. (PHP) Создание php-файла, встраивание php-кода в html;
Для создания php файла достаточно открыть новый файл в блокноте и сохранить с расширением .php, например, index.php
По структуре php-документ может ничем не отличаться от html-документа, содержать наборе тегов <html>,<head>,<body>... для встраивания php-кода в подобный документ требуется использовать ограничители <?php - как "открывающий" и ?> - как "закрывающий". Внутри этих ограничителей будет располагаться ваш php-код. Так же в php-коде возможно делать комментарии:
Код: выделить все
<?php
// - одннострочные
/* мно-
го стро-
/* чные
?>
ChebotarevAA MEPhI
 
Сообщений: 15
Зарегистрирован: 06 мар 2011, 20:56

Re: Занятия

Сообщение ChebotarevAA MEPhI » 21 май 2011, 21:18

3. (PHP/HTML) Создание формы авторизации;
Формы авторизации используются, например, для входа в личный кабинет на сайте, либо для удаления базы данных этого же сайта злоумышленником, если не защитить свою форму и сайт в целом. Ниже приведен пример создания простейшей формы авторизации:
1) Создадим файл form.php, в котором будет храниться форма, если вы работаете в Денвере, то сохраните form.php в папку;
2) Вставим в него следующий код:
test1.ru/www.
Код: выделить все
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
   <title>Authorisation form</title>
   <meta http-equiv="content-type"
      content="text/html;charset=utf-8" />
</head>

<body>
<form action="form.php" method="post">
   Login: <input type="text" name="login" />
   Pass:  <input type="password" name="pwd" />
          <input type="submit" value="Go" />
</form>
<?php
$a = $_POST['login'];
$b = $_POST['pwd'];

echo "Your login is: $a <br />";
echo 'Your password is: '.$b;
?>
</body>
</html>

3) Сохраним файл в кодировке UTF-8
4) Проверим что получилось, зайдя в браузер и написав в адресной строке test1.ru/form.php, должно получиться нечто такое:


В HTML используется тег <form> для создания диалоговых форм, атрибут action="" предназначен для указания скрипта (файла, содержащего программу), который будет обрабатывать данные, отправляемые формой. Атрибут method="" нужен для указания каким из методов будут передаваться данные, напомню: post, get.

Методы post, get определяют как мы будем передавать данные, будет ли видно их при передаче в адресной строке или нет. $_POST, $_GET - переменные массивов, которые хранят в себе данные, отправляемые методами post и get соответственно.

Данные в форму заносятся пользователем в поля, создаваемые тегом <input />, который имеет порядка 20 атрибутов (http://htmlbook.ru/html/input)

При нажатии кнопки "Go" наша форма отправит данные на сервер, которые запишутся в массив $_POST.

Далее следуют переменные $a и $b.
Запись $a = $_POST['login']; означает, что в переменную $a будет записано поле из массива $_POST с именем 'login'.

Вывод значения переменных, а так же html-кода осуществляется с помощью функции echo, заметье разницу при использовании одинарных и двойных кавычек, переменные можно записывать внутри двойных кавычек и браузер при выводе информации поймет что это php-переменная, а при использовании одинарных - не поймет и приходится использовать конкатенацию (http://habrahabr.ru/blogs/php/38754/).
ChebotarevAA MEPhI
 
Сообщений: 15
Зарегистрирован: 06 мар 2011, 20:56

Re: Занятия

Сообщение ChebotarevAA MEPhI » 21 май 2011, 21:51

4. (PHP) Типы данных в php;

В PHP существуют 3 типа данных:
- скалярные;
- смешанные;
- специальные.

Четыре скалярных типа:
- boolean (логический); $a = true;
- integer (целый); $b = 5;
- float (с плавающей точкой); $c = 5.4;
- string (строковый). $d = "Сушка".

Два смешанных типа:
- array (массив); $e = array("a", "b", "c");
- object (объект). $f = new ClassName.

Два специальных типа:
- resource (ресурс); $g = mysql_connect(...);
- NULL. $h = NULL.
ChebotarevAA MEPhI
 
Сообщений: 15
Зарегистрирован: 06 мар 2011, 20:56

Re: Занятия

Сообщение ChebotarevAA MEPhI » 21 май 2011, 21:51

5. (HTML/JavaScript) XSS-атаки.

XSS (англ. Сross Site Sсriрting — «межсайтовый скриптинг») — тип уязвимости интерактивных информационных систем в вебе.

Самый простой пример уязвимости сайта покажем на форме, созданной в предыдущем посте. Он заключается в использовании текстового поля, как возможности вставлять туда свой собственный код.

Рассмотрим детально тег <input type="text" name="login" /> данный тег имеет так же атрибут value="". В этот атрибут записывается вводимый пользователем текст (код) в текстовую строку и передается серверу при отправке формы.

Например, у нас есть текстовое поле <input type="text" name="login">, мы вводим в него 123, получаем <input type="text" name="login" value="123">. А если мы введем в него ">? Получится, что мы закроем тег <input /> извне, до его реального завершения: <input type="text" name="login" value="">"> и на странице отобразится - ">, отсюда понятно, что будет, если ввести следующий код:
"><h1>Hello</h1><a href= "123
ChebotarevAA MEPhI
 
Сообщений: 15
Зарегистрирован: 06 мар 2011, 20:56

Re: Занятия

Сообщение KozinAV MEPhI » 26 май 2011, 22:40

24 мая были освещены следующие темы:
1. Обработка html-формы. Получение переданных параметров с помощью $_REQUEST['parametr_name'];
Код: выделить все
<form>
<input name="text_input" value="">
</form>

<?php
if ($_REQUEST['text_value'] != "") { //проверка на пустоту
$text_value = $_REQUEST['text_value'];
}
?>

2. Блок ветвления if/else.
Код: выделить все
$a = 1;
if ($a == 1) {
echo "a equals 1";
else {
echo "a not equals 1";
}

3. Создание массивов.

Код: выделить все
//создание динамического массива
$array[] = 1;
$array[] = 2;
echo $array[1]; //выведет "2"

//создание ассоциативного массива (другое название - словарь)
$array2 = array("key1"=>"value1", "key2"=>"value2");
echo $array2["key2"]; //выведет "value2"

4. Работа с файлом.
Код: выделить все
<?php
$filename = "users.txt";
$text = "some text";
//открытие файла на чтение, дозаписывание в конец файла, если файл не существует, он создастся
$f = fopen($filename, "a+");
$result = fwrite($f, $text);
fwrite($f, "\n"); //символ переноса строки
fclose($f); // закрытие файла
?>

5.Валидация формы с помощью JavaScript.
Код: выделить все
<script type="text/javascript">
function checkForm() {
//получаю содержимое полей
var name = document.getElementById("name").value;
var surname = document.getElementById("surname").value;
if (name == "" || surname == "") {
alert ("Ошибка! Поле name или surname пусто!");
return false;
}
var e_mail = document.getElementById("e_mail").value;
var dot = ".";
var at = "@";
var at_pos = e_mail.indexOf(at);
var dot_pos = e_mail.indexOf(dot);
if (at_pos == -1 || dot_pos == -1){
  alert("Ошибка! Поле e-mail должно выглядеть как mail@site.com")
  return false;
}
return true;
}      
</script>

Финальный скрипт прикреплён во вложении.
Вложения
index.php.zip
Финальный скрипт
(2.01 KiB) Скачиваний: 900
KozinAV MEPhI
 
Сообщений: 1
Зарегистрирован: 26 май 2011, 22:16

Re: Занятия

Сообщение ChebotarevAA MEPhI » 13 июн 2011, 16:19

Занятие 31 мая.

На этом занятии мы рассмотрели мини-модель сайта, а именно из чего состоит сайт. Основные компоненты сайта:

- База данных, в которой хранится любая информация сайта (обычно это любая часто обновляемая информация, контент (содержимое));
- php-скрипты, отвечающие за серверную часть;
- js-сценарии, отвечающие за работу сайта на стороне клиента;
- странички, сверстанные и наполненные контентом.
ChebotarevAA MEPhI
 
Сообщений: 15
Зарегистрирован: 06 мар 2011, 20:56


Вернуться в Веб-программирование

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4