Самоучитель по креативному веб-дизайну. Книга 4, стр.14
print() . В результате
мых товаров.
Глава 10. РНР4 52 9
здания
ца с перечнем
База
всеми операциями с данными в базе данных SQL и организует
(выбранного из длинного
РНР содержит встроенные
но и редактировать данные, хранящиеся в нескольких
зах данных, в частности
Самоучитель по креативному веб-дизайну. Книга 4, стр.15
Независимо от типа
Для создания базы
ги. В качестве
CREATE DATABASE hwdtt;
Синтаксис оператора
CREATE
После
53 0 Глава 10. РНР4
час
низованных в виде
Самоучитель по креативному веб-дизайну. Книга 4, стр.16
лей и паролей каждая строка в таблице
пароль, при этом
роль — в другом столбце одной и той же строки.
USE hwdtt;
CREATE TABLE webSiteUsers
Синтаксис
CREATE
(
последнего столбца>]) Ц
Очевидно,
сать с помощью
INSERT
INSERT
Синтаксис
INSERT
VALUES{значение1,значение2,…fзначение!*);
SELECT
Для
ки, в которых имя пользователя и пароль
SELECT
WHERE
Глава 10. РНР4 53 1
Если
рос возвращает значение «0м, которое означает, что в таблице не содержится
В следующем
Вывод на Web-странице результатов запроса в базу данных SQL в HTML-таблице
вить соединение с СУБД с помощью
базой
правки
PHP-сценарию передавать на выполнение
Самоучитель по креативному веб-дизайну. Книга 4, стр.17
mysqi_fetch_array(), которая считывает
ПРАКТИК Ш
Предположим,
Web-странице
содержащейся в базе
mysqi connect () следующего вида:
$link = mysql
$db
той же системе, что и Web-сервер) или строку с IP-адресом
ные два параметра, $db_user и $db_pass,
теля и пароль,
вателя $db_user=»root» И паролем $db_j>ass=»",)
В функции mysqi_connect () PHP-процессор присваивает соединению с
СУБД
53 2 Глава 10. РНР4
попытка установить соединение не удалась. Поскольку время от времени случа —
ются ошибки, с помощью оператора if проверьте
в случае необходимости выведите на экран сообщение об ошибке. Если попытка
установки соединения
if (!mysql
{
//Операторы,
//базы данных
}
else
{
//Обработка
}
Сервер
пользоваться. В приведенном
$iin k — идентификатор соединения с базой
но выполненной
верить данные, возвращаемые PHP-функцией (в данном примере функцией
mysqi seiect_db()),
пешно. Функция mysqi_seiect_db() возвращает tru e при
После успешной установки соединения с СУБД MySQL и выбора
кцию mysqi query
$resul t = mysql
В приведенном примере, в котором
products, параметр
ORDER BY description. Как и ранее,
соединения с базой
mysqi_connect (), вызов которой находится в начале сценария. Функция
mysqi_query () возвращает fals e (если СУБД по какой-то причине не смогла выполнить переданный ей SQL-оператор) или указатель на место,
Для считывания
выбрал из таблицы
mysqi fetch_array о для
Глава10.РНР4 533
// Определить
$fields = mysql_num fields ($result) ;
// Начать определение HTML-таблицы
echo «»;
// Вывести на экран названия столбцов в виде заголовков HTML-таблицы
echo «
for ($i = 0; $i
{
echo «» . mysql fieldjiame($result, $i) . «»;
$fieldType[$i] = mysql_field type($result, $i) ;
}
echo «
«;
// Вывести в HTML-таблице результаты запроса
while
{
echo «
for ($i = 0; $i
{
if ($fieldType[$i] <> «string»)
els e
echo «
echo «$array[$i]
«;
}
echo «
«;
}
echo «» ;
Полный
ной редакции
любого запроса. Сценарий выводит на экран
щаются в строки таблицы.
Использование
При создании Web-сайта с доступом
не могут
Самоучитель по креативному веб-дизайну. Книга 4, стр.18
они часто произносят. К сожалению,
сочетания также
пользователем.
С помощью
534 Глава 10. РНР4
членов сайта и во избежание частых звонков с просьбой
ПРАКТИКУМ
на рис.
Как указано в тексте в нижней
Самоучитель по креативному веб-дизайну. Книга 4, стр.19
Для генерации
function generatePassword()
{
// Выбрать
mt_srand ((double)microtime() * 1000000);
$passwordLength = mt_rand (5, 8) ;
Глава10.РНР4 535
// Установить
// ASCII-коды 48-57 включительно — символы от 0 до 9
// ASCII-коды 65-90 включительно — символы от А до Z
// ASCII-коды 97-122 включительно — символы от а до z
$lowerBound = 48;
$upperBound = 122;
// Исключить специальные символы
$excludeSymbols =
array(‘:’,';•,’•.,•?•,,•@’,•[•,chr(92),']! ,’А’,’ ‘,’ч ‘) ;
// Создать случайный пароль
$i=0;
$password = «» ;
while ($i
{
mt_srand ((double)microtime() * 1000000);
$letter = chr
if (!in
{
$password.= $letter;
$i++;
}
} ‘..’ •
return $password;
}
Далее
системное время и (случайно сгенерированный) пароль в таблицу usemames
базы данных сайта.
При входе посетителя на сайт
дит имя пользователя и пароль в таблице базы данных, он «активизирует»
содержащийся в PHP-сценарии
да на сайт
Web-страницы с формами и PHP-сценариями, описанными в этом совете, на —
ходятся в файле
ства РУССКОЯЗЫЧНОЙ редакции
Использование РНР и MySQL
В совете «Использование РНР и дискового
доступа к Web-сайту» выше в этой главе вы научились
помощью РНР и текстового
53 6 / ‘ Глава 10. РНР4
• При каждом добавлении в файл
• Удаление и редактирование
ле выполняется
• Сетевые
ке удалить
целью
сто просмотреть содержимое файла и узнать
За счет
Самоучитель по креативному веб-дизайну. Книга 4, стр.20
ПРАК ИКУМ
Для использования таблицы MySQL в качестве
CREATE TABLE siteAccessList
{username VARCHAR(30) PRIMARY KEY
password VRACHAR(15) NOT NULL) ;
Приведенный
а атрибут
Глава10.РНР4 . 537
INSERT
INSERT INTO siteAccessList
INSERT
(Чтобы незарегистрированные пользователи сайта не могли
Самоучитель по креативному веб-дизайну. Книга 4, стр.21
После ввода
$db_host = «localhost»;
$db_user = «root»;
$db_pass = «»;
$dbjname = «hwdtt» ;
// Установить соединение с СУБД MySQL
$link = mysql
// Выбрать базу данных с таблицей siteAccessList
mysql_select db ($db name, $link) ;
// Сформировать запрос и передать его на выполнение СУБД
$query = «SELECT
«WHERE username = \»$username\» «. «AND password = \»$password\»";
$result = mysql
// Определить количество строк в результатах
// имя/пароль присутствует в файле,
//в точности 1 строку. В противном
// обнаружит,
if (mysql_num_rows ($result) == 0)
header («Location: ChptlOTipllAccessDenied. php»);
else
header («Location: ChptlOTipllLoginSuccessful. php»);
?>
После
сценарий вызывает функцию
Содержащую СПИСОК ЧЛеНОВ Сайта (В Приведенном
ет СУБД
сайт. После вызова в сценарии функции mysqqi_query о, передающей запрос на исполнение
Функция mysqi num_rows()
СУБД в результате
538 Глава 10. РНР4
mysql query () . ЕСЛИ фуНКЦИЯ mysqljrmm_rows () В Операторе if-els e ВОЗВраща —
ет значение «1″ , посетитель
если функция возвращает значение «0м, сценарий
к содержимому
поскольку
Web-страница с формой входа на сайт и PHP-страница с сценарием входа на
сайт, описанные в этом совете, находятся в файле chptiOTipii. zip, который можно выгрузить из сайта
(http://www. diasoft. kiev. ua).
Исключение
Для передачи результатов
ваться методами GET
ния пар имя/значение в конец
Предположим, например, что
посетителя
жем, с именем
па к сайту. До входа на сайт переменная $s_usemame не содержит значения (т. е.
не определена),
session_start() ;
i f (!isset($s_username))
{
header(«Location: http://www. NVBizNet. com/HWDTT/
LoginScreen. htm»);
exit ;
{
?>
К сожалению,
страницы, которая находится в разделе
менной $s_username равным «Konrad»:
http://www. NVBizNet. com/HWDTT/Loggedln. php? s username=Konrad
Глава 10. РНР4 53 9
Поскольку при проверке в начале
ПРАКТИКУМ
Самоучитель по креативному веб-дизайну. Книга 4, стр.22
этом молено с помощью
if ($HTTP_SERVER_VARS["argcM] != 0)
{
header(«Location: $PHP_SELF»);
exit;
}
?>
За счет
Использование РНР и MySQL для отслеживания
положения посетителя на Web-сайте
о посетителях
сайтов, совместимые с рекомендациями
Самоучитель по креативному веб-дизайну. Книга 4, стр.23
Если провайдер не включит
определенным
CREATE TABLE UsageLog
(visitor_I P TEXT,
page_URL TEXT,
54 0 Глава 10. РНР4
DT_retrieved TIMESTAMP,
referrer URL TEXT, session_I D TEXT,
session_view s INTEGER) ; [ НИ
Цосле
function recordPageHit($db_host,$db_user,$db_pass,$db_name,$sessionID)
{
global
// Для
// URL
// URL
$referer = explode("?",
// Вызвать
if (connectToDB
{
// Вставить
// посетитель
// чество посещений за сеанс в столбце
$query = "UPDATE usageLog " .
"SET session_views = session views + 1 ".
"WHERE session ID '= '$sessionID' ".
" AND page_URL = ' $PHP_JSELF' " ;
$result = executeQuery($query);
// Проверить присутствует ли оператор UPDATE в строке для страницы.
// Если нет, вставить в таблицу
// содержать
if (!mysql_affected_rows ($link) )
{
$query = "INSERT INTO usageLog " .
" (visitor
"VALUES ('$REMOTE_ADDR' , '$PHP_SELF', ".
"'$referer[0]‘,’$sessionID’,1)»;
$result = executeQuery($query);
}
}
return;
}
?>
Скопируйте
MySQL в начале функции recordPageHito) на свой
chptiOTipi3.zip из сайта
//www. diasoft. kiev. ua).
chptiOTipi3.zip) содержит операторы,
лов РНР-СТранИЦ ДЛЯ Организации Сеанса И ВЫЗОВа фуНКЦИИ recordPageHit() .
Глава10.РНР4 54 1
Обратите