Порядок трансляции переменных — КиберПедия 

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

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

2020-03-31 139
Порядок трансляции переменных 0.00 из 5.00 0 оценок
Заказать работу

 

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

Например, пусть у нас есть параметр 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_gioba l s в глобальные переменные попадают также значения переменных окружения. Записываются они в соответствии со схемой ENVIRON-MENT-GET-POST-COOKIE (EGPC). Иными словами, переменные окружения в режиме register_gioba l s перекрываются даже GET -данными, и злоумышленник может «подделать» любую из них, передав соответствующую переменную query_string при запуске сценария.

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

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


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

 

Хранение информации о данных регистрации осуществляется в базе данных MySQL. Пример включает в себя три скрипта. В первом, auth.php, происходит регистрация пользователей. Второй скрипт, members_on l y.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_on l y.php.

Листинг members_on l y.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>


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

 

Создать 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 name”month2[]”size=4 multiple>

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


ЗАКЛЮЧЕНИЕ

 

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

 


ЛИТЕРАТУРА

 

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

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

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

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


Поделиться с друзьями:

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

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

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.052 с.