|
Программирование >> Программный интерфейс приложений
Вот костяк сценария edit member.php: <?php # edit member.php - редактирование данных о членах # Исторической Лиги через Web include ( samp db.inc ); # определение констант define (INITIAL PAGE, 0); define (DISPLAY ENTRY, 1) ; define (UPDATE ENTRY, 2); /* ... здесь поместить функции */ if (empty (Saction)) $action = INITIAL PAGE; $title = Форма редактирования данных о членах Исторической Лиги ; html begin ($title, $title); samp db connect () or die ( Невозможно подключиться к серверу ); switch ($action) { case INITIAL PAGE: solicit member id (); breaJc; case DISPLAY ENTRY: display entry (); breaJc; case UPDATE ENTRY: update entry () ; breaJc; default: die ( Неизвестный код действия ($action) ); html end ( ); ?> Начальная страница представляет форму запроса идентификатора и пароля члена Исторической Лиги : function solicit member id () { global $PHP SELF; printf ( <FORM METHOD=\ post\ ACTION=\ %s?action=%d\ >\n , $PHP SELF, DISPLAY ENTRY); print ( Введите идентификатор и пароль, \n ); print ( затем нажмите кнопку Submit. \n<BR><BR>\n ); print ( <TABLE>\n ); print ( <TR> ); print ( <TD>Member ID</TD><TD> ); print ( <INPUT TYPE=text NAME=\ member id\ SIZE=10><BR>\n ); print ( </TD></TR> ); print ( <TR> ); print ( <TD>Password</TD><TD> ); print ( <INPUT TYPE=password NAME=\ password \ SIZE=10><BR>\n ); print ( </TD></TR> ); print ( </TABLE>\n ); print ( <INPUT TYPE=\ submit \ NAME=\ button\ VALUE=\ Submit\ >\n ); print </FORM>\n ; Конечно, нам потребуются какие-то пароли. Самое простое - генерировать их случайным образом. Вот операторы, которые создают таблицу member pass, затем создают пароль для каждого члена Исторической Лиги генерацией контрольной суммы методом MD5 как случайное число. Вероятно, право выбора пароля будет возложено на самого пользователя, но для примера возьмем следующий SQL-оператор и запустим его с помощью mysql: CREATE TABLE member pass ( member id INT UNSIGNED NOT NULL PRIMARY KEY, password CHAR (8) INSERT INTO member pass (member id, password) SELECT member id, LEFT (MD5 (RAND 0) , 8) AS password FROM member Добавим также специальную запись члена О с паролем, который будет служить паролем администратора (суперпользователя). Этот пользователь будет иметь доступ к любым данным: INSERT INTO member pass (member id, password) VALUES(0, secret ); После создания таблицы password может потребоваться отключить сценарий sampbrowse, созданный нами в главе 7, Программный интерфейс Perl API . Напомню, что он позволяет просматривать пользователям любую таблицу в базе данных samp db, включая, конечно, и таблицу member pass. Сценарий edit member.php отображает редактируемую запись после ввода идентификатора члена и пароля; function display entry () { global $PHP SELF; global $member id, $password; $member id = trim ($member id); if (empty ($member id)) die ( Идентификатор члена не указан ); if (!ereg ( f0-9]+$ , $member id)) # должно быть целым числом die { указан ошибочный индекс (должно быть число) ); if (empty (Spassword)) die ( Пароль не указан ); if (check pass ($member id, Spassword)) # постоянный член Sadmin = 0; else if {check pass (0, $password)) # администратор $admin = 1; else die ( Неверный пароль ); $query = SELECT last name, first name, suffix, email, . street, city, state, zip, phone, interests, . member id, expiration . FROM member . WHERE member id = $member id . ORDER BY last name ; $result = mysql query ($query) or die ( Невозможно выполнить запрос ); if (mysql num rows (Sresult) == 0) die ( Пользователь с идентификатором = $member id отсутствует ); if (mysql num rows (Sresult) > 1) die ( Обнаружено несколько пользователей с идентификатором = Smember id ); printf ( <FORM METHOD=\ post\ ACTION=\ %s?action=%d\ >\n , $PHP SELF, 0PDATE ENTRY); hidden field ( member id , $member id); hidden field ( password , Spassword); print ( <TABLE>\n ) ; # считать результаты запроса и форматировать их для редактирования Srow = mysql fetch array (Sresult); display column ( Идентификатор , Srow, member id , 0); # разрешить пользователю с паролем admin редактировать # срок действия display column ( Срок членства Srow, expiration , $admin); display column ( Фамилия , Srow, last name , 1); display column ( Имя , Srow, first name , 1); display column ( Суффикс , Srow, suffix , 1); display column ( электронная почта , Srow, email , 1); display column ( Улица , Srow, street , 1); display column ( Город , Srow, city , 1), display column ( Штат , Srow, state , 1), display column ( Индекс , Srow, zip , 1), display column ( Телефон , Srow, phone , 1); display column ( Интересы , Srow, interests , 1); print ( </TABLE>\n ); print ( <INP0T TYPE=\ submit \ NAME=\ button\ VAL0E=\ Submit\ >\n ) print </FORM>\n ; Первое, что необходимо сделать функции display entry (), - проверить пароль. Если для данного идентификатора введенный пароль соответствует значению пароля из таблицы meiiiber pass или совпадает с паролем администратора (т.е. паролем для члена 0), сценарий editmember .php отображает запись для редактирования. Функция проверки паролей check pass О генерирует пароль для выборки записи из таблицы member pass: function check pass (Sid, Spass) { Squery = SELECT password FROM member pass WHEEIE member id = Sid ;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |