Скачиваний:
73
Добавлен:
15.03.2015
Размер:
47.58 Кб
Скачать

Задание 28.

28.php:

<?php

session_start();

require_once('db_login.php');

$user = $_SERVER["PHP_AUTH_USER"];

$password = $_SERVER["PHP_AUTH_PW"];

if (empty($_SESSION['user_id'])) {

//если переменные существуют

if (isset($user) && isset($password)) {

//Подключаемся к базе данных

$connection = mysql_connect($db_host, $user, $password);

if (!$connection) {

die ("Невозможно подключиться к базе данных: " . mysql_error());

}

//Выбираем нужную базу

$db_select = mysql_select_db($db_database);

if (!$db_select) {

die ("Невозможно выбрать БД: " . mysql_error());

}

if (get_magic_quotes_gpc()) {

$user = stripslashes($user);

$password = stripslashes($password);

}

$user = mysql_real_escape_string($user);

$password = mysql_real_escape_string($password);

//Получаем данные пользователя

$query = "SELECT * FROM users WHERE username='" . $user . "' AND password='" . md5($password) . "' LIMIT 1";

$result = mysql_query($query);

$result_row = mysql_fetch_array($result, MYSQL_BOTH);

//Проверяем результат выполнения mysql_fetch_row()

if ($result_row == FALSE) {

//Если не получили данные пользователя - просим перелогиниться

header('WWW-Authenticate: Basic realm="Member Area"');

} else {

//Иначе выводим сообщение

echo "Подключение осуществлено<br/><br/>";

echo "Имя: $result_row[1]<br/>";

echo "Фамилия: $result_row[2]<br/>";

echo "Имя пользователя: $result_row[3]<br/>";

echo "Хэш-значение пароля: $result_row[4]<br/>";

$_SESSION['user_id'] = $result_row['user_id'];

$_SESSION['username'] = $result_row['username'];

}

} else {

//иначе диалог аутентификации

header('WWW-Authenticate: Basic realm="Member Area"');

}

} else {

echo "Вы посетили страницу под логином " . $_SESSION['username'] . "<br/>";

}

echo "<form action='28.1.php'><input type='submit' value='Прервать сессию'></form><br/>";

?>

28.1.php:

<?php

//подключаем файл 28.1

require_once('28.php');

//уничтожаем сессию

session_destroy();

//выводим переменную

echo "Переменная " . $_SESSION['username'] . " еще доступна.<br/>";

//уничтожаем переменную

unset ($_SESSION['username']);

//проверяем, что переменная уничтожена

if (is_null($_SESSION['username'])) {

echo "Переменные сеанса теперь недоступны.";

}

?>

Задание 29.

<?php

class Controller {

private $error;

private $result;

function __construct() {

$this->error = false;

$this->result = false;

}

function processData() {

$this->userRequest();

if ($this->error)

View::displayError($this->error);

else

if ($this->result)

View::displayResults($this->result);

else

View::displayDefault();

}

function userRequest() {

// данные отправлены

if (isset($_POST['send'])) {

$this->validate();

if (!$this->error) {

// основные вычисления

$model = new Model();

$model->calculate($_POST['passw']);

$result = $model->getData();

// проверка на ошибки в самой модели

if (!is_array($result))

$this->error = $result;

else

$this->result = $result;

}

}

}

function validate() {

if (empty($_POST['passw']))

$this->error = 'Не введено слово!';

else

if (strlen(strval($_POST['passw'])) < 3)

$this->error = 'Слишком слабый пароль!';

}

}

class View {

static function displayDefault() {

echo "<form method='POST' action=''>";

echo "<p>Введите пароль: ";

echo "<input type='text' name='passw' value=''> ";

echo "<input type='submit' name='send' value='Отправить'>";

echo "</form>";

}

static function displayError($error) {

echo "<p><b>Ошибка:</b> {$error}";

View::displayDefault();

}

static function displayResults($results) {

echo "<p><b>Результаты:</b>";

echo "<p>Ваш пароль <b>".$results[0]."</b> по защищенности <i>".$results[1]."</i>";

echo "<p><a href='".$_SERVER['REQUEST_URI']."'>Проанализировать ещё пароль</a>";

}

}

class Model {

private $data;

function __construct() {

$this->data = false;

}

function calculate($passw) {

$this->data[] = $passw;

$len = strlen($passw);

if ($len == 3)

$this->data[] = 'Слишком слабый пароль';

else

if (($len > 3) && ($len < 6))

$this->data[] = 'Достаточно защищенный пароль';

else

$this->data[] = 'Хорошо защищенный пароль';

}

function getData() {

if ($this->data)

return $this->data;

else

return 'Анализ не произведен!';

}

}

$controller = new Controller();

$controller->processData();

?>

Задание 30.

<?php

//Выводим строку, обработанную функцией htmlentities()

echo "Вы искали " . htmlentities($_GET['query']);

?>

Задание 31.

<?php

//Задаем класс Product

class Product {

public $name;

public $price;

public $description;

function Product() {

$this->name = "Shirt";

$this->price = 1500;

$this->description = array(

"size" => array("S", "M", "L", "XL"),

"color" => array("Red", "Green", "Blue")

);

}

}

//создаем объект $item класса Product

$item = new Product();

//Выводим поля объекта $item

echo "<br/>".$item->name;

echo "<br/>".$item->price;

echo "<br/>".$item->description['size'][1];

echo "<br/>".$item->description['color'][1];

//Кодируем объект $item в json

$sameItem = json_encode($item);

//Декодируем из json`a в массив $sameItem

$sameItem = json_decode($sameItem, TRUE);

//Выводим элементы массива $sameItem

echo "<br/>".$sameItem['name'];

echo "<br/>".$sameItem['price'];

echo "<br/>".$sameItem['description']['size'][1];

echo "<br/>".$sameItem['description']['color'][1];

?>

db_login.php

<?php

$db_host = "localhost";

$db_database = "client";

$db_username = "mikalash";

$db_password = "mysecretword";

?>

client.sql

-- phpMyAdmin SQL Dump

-- version 3.5.4

-- http://www.phpmyadmin.net

--

-- Хост: 127.0.0.1:3306

-- Время создания: Дек 11 2012 г., 21:18

-- Версия сервера: 5.5.28-log

-- Версия PHP: 5.4.9

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;zz

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8 */;

--

-- База данных: `client`

--

-- --------------------------------------------------------

--

-- Структура таблицы `authors`

--

CREATE TABLE IF NOT EXISTS `authors` (

`author_id` int(11) NOT NULL AUTO_INCREMENT,

`title_id` int(11) NOT NULL,

`author` varchar(125) DEFAULT NULL,

PRIMARY KEY (`author_id`)

) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--

-- Структура таблицы `books`

--

CREATE TABLE IF NOT EXISTS `books` (

`title_id` int(11) NOT NULL AUTO_INCREMENT,

`title` varchar(150) DEFAULT NULL,

`pages` int(11) DEFAULT NULL,

PRIMARY KEY (`title_id`)

) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--

-- Структура таблицы `users`

--

CREATE TABLE IF NOT EXISTS `users` (

`user_id` int(11) NOT NULL AUTO_INCREMENT,

`first_name` varchar(100) NOT NULL,

`last_name` varchar(100) NOT NULL,

`username` varchar(45) NOT NULL,

`password` varchar(32) NOT NULL,

PRIMARY KEY (`user_id`)

) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;

--

-- Дамп данных таблицы `users`

--

INSERT INTO `users` (`user_id`, `first_name`, `last_name`, `username`, `password`) VALUES

(1, 'Михаил', 'Калашников', 'mikalash', '6fb63889e3759de527c6bc4922f416b2');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Соседние файлы в папке phplab4