Смекни!
smekni.com

Робота з MYSQL (стр. 2 из 2)

<table border=0>

<tr><td>ISBN</td><td><input type=text name=isbn maxlength=13 size=13><br></td></tr>

<tr><td>АВТОР</td><td> <input type=text name=author maxlength=30 size=30><br></td></tr>

<tr><td>НАЗВА</td><td> <input type=text name=title maxlength=60 size=30><br></td></tr>

<tr><td>ЦІНА </td><td><input type=text name=price maxlength=7 size=7><br></td></tr>

<tr><td colspan=2><input type=submit value="Реєстрація"></td></tr>

</table> </form></body></html>

Файл "insert.php"

<html><head><title> БІБЛІОТЕКА </title></head>

<body><h1>БІБЛІОТЕКА</h1>

<?

$isbn=$_POST["isbn"];

$author=$_POST["author"];

$title=$_POST["title"];

$price=$_POST["price"];

if (!$isbn || !$author || !$title || !$price)

{echo "Не всі поля введені"."Повторіть ще раз.";

exit; }

$isbn = addslashes($isbn);//форматування полів перед внесеним в базу даних

$author = addslashes($author);

$title = addslashes($title);

$price = doubleval($price);

@ $db = mysql_pconnect("localhost","root");//з’єднаємося с базою даних

if (!$db)//є така база

{ echo "Error: Не можливо під’єднатися до БД";

exit; }

mysql_select_db("books");//вибрана база даних

$query = "insert into books values ('".$isbn."', '".$author."', '".$title."', '".$price."')";

// запит на вставку значень

$result = mysql_query($query);//виконуємо запит

if ($result)

echo mysql_affected_rows()." КНИГА ДОБАВЛЕНА";

//якщо все успішно з’являється повідомлення

?></body></html>

Пошук книги

<title>БІБЛІОТЕКА</title>

</head>

<body>

<h2>ПОШУК ІНФОРМАЦІЇ</h2>

<form action="results.php" method="post">

КРІТЕРІЙ Пошуку: <br>

<select name="searchtype">

<option value="author">АВТОР

<option value="title">НАЗВА

<option value="isbn">ISBN

</select><br>

ВВЕДІТЬ Значення: <br>

<input name="searchterm" type=text><br>

<input type=submit value="Search"> </form></body></html>

Файл "results.php"

<html><head><title>БІБЛІОТЕКА</title></head>

<body><h1>РЕЗУЛЬТАТИ ПОШУКУ</h1>

<?

$searchtype =$_POST["searchtype "];

$searchterm =$_POST["searchterm "];

if (!$searchtype || !$searchterm)

{echo "You have not entered search details. Please go back and try again.";

exit;}

$searchtype = addslashes($searchtype);

$searchterm = addslashes($searchterm);

$db = mysql_pconnect("localhost","root");

if (!$db)

{echo "Error: Немає з’єднання з базою даних.";

exit;}

mysql_select_db("books");

$query = "select * from books where ".$searchtype." like '%".$searchterm."%'";

$result = mysql_query($query);

$num_results = mysql_num_rows($result);

for ($i=0; $i <$num_results; $i++)

{ $row = mysql_fetch_array($result);

echo "<p><strong>".($i+1).". Title: ";

echo stripslashes($row["title"]);

echo "</strong><br>Author: ";

echo stripslashes($row["author"]);

echo "<br>ISBN: ";

echo stripslashes($row["isbn"]);

echo "<br>Price: ";

echo stripslashes($row["price"]);

echo "</p>";}

?></body></html>

5. Аутентифікація за допомогою РНР й MySQL

Розглянемо, як використати різні можливості РНР й MySQL для аутентифікації користувачів.

Web - це досить анонімне середовище, проте корисно знати, хто відвідав ваш сайт. На щастя, для конфіденційності відвідувачів, без їхньої допомоги можна одержати тільки дуже незначну інформацію.

Сервери можуть отримати інформації про комп'ютери й мережі, з якими з'єднуються, оскільки Web-браузер ідентифікує себе, вказуючи назву браузера, версію браузера й операційну систему, розміри вікна браузера.

Кожен підключений до Internet комп'ютер має унікальну IP-адресу. Можна довідатися, хто володіє цією адресою, та з певною імовірністю припустити географічне положення відвідувача. В основному, люди з постійним підключенням до Internet мають постійні IP-адреси. А клієнти, які додзвонюються до Internet-провайдерів, у більшості випадків одержують у тимчасове користування один з IP-адрес провайдера. Коли наступного разу ви побачите цю адресу вона вже може використовуватися іншим комп'ютером, а коли ви побачите попереднього користувача, у нього, можливо, буде інша IP-адреса.

Інформація, яку видає браузер, не дозволяє повністю ідентифікувати користувача. Якщо хочете знати ім'я відвідувача й інші деталі, варто запитати це безпосередньо у нього.

Прохання до користувача довести свою особистість називається аутентифікаціею. Звичайний метод аутентифікації в Web - це вимога до відвідувачів надати унікальне ім'я користувача й пароль. Аутентифікація звичайно використовується для дозволу або заборони доступу до певних сторінок або ресурсів. Аутентифікація може бути необов'язкової або використовуватися для інших цілей, наприклад, для персоналізації.

Найпростіший спосіб реалізації контролюю доступу. Існує тільки одне значення логіна та пароля.

Приклад 2. Приклад організації контролю доступу.

<?

if(!isset($name)&&!isset($password))

{

//Введіть логін та пароль

?>

<h1>Please Log In</h1>

This page is secret.

<form method = post action = "secret.php">

<table border = 1>

<tr>

<th> Username </th>

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

<th> Password </th>

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

</tr><tr>

<td colspan =2 align = center>

<input type = submit value = "Log In">

</td>

</tr></form>

<?

}

else if($name=="user"&&$password=="pass")

{

// якщо логін та пароль співпадають

echo "<h1>Here it is!</h1>";

echo "I bet you are glad you can see this secret page.";

} else

{

// якщо логін та пароль не співпадають

echo "<h1>Go Away!</h1>";

echo "You are not authorized to view this resource.";

}

?>

6. Зберігання паролів

Зберігання паролів в окремому файлі на сервері дозволить дуже просто написати програму для додавання й видалення користувачів, а також для зміни паролів.

Всередині сценарію або іншого файлу даних існує обмеження на кількість користувачів, яких можна обслуговувати. Якщо планується зберігати велику кількість елементів у файлі або робити пошук у рамках великої кількості елементів, варто розглянути можливість використання бази даних замість двовимірного файлу. Практичний метод вибору між файлом і базою даних говорить: якщо ви збираєтеся зберігати й робити пошук у більш ніж 100 елементах, варто віддати перевагу базі даних.

Використання бази даних для зберігання імен і паролів відвідувачів не сильно ускладнить сценарій, але дозволить швидко проводити аутентифікаціею безлічі користувачів. Це також спростить створення сценарію для додавання й видалення користувачів, а також дасть можливість користувачам змінювати свої паролі.

Сценарій для аутентифікації відвідувачів сторінки з використанням бази даних наведений далі.

Приклад 3. Аутентифікації відвідувачів.

create database auth;

use auth;

create table auth (

name varchar(10) not null,

pass varchar(30) not null,

primary key (name)

);

insert into auth values

('user', 'pass');

insert into auth values

('testuser', password('test123')); grant select, insert, update, delete on auth.*

to webauth@localhost


identified by 'webauth';

Файл secretdb.php

<?

$name =$_POST["name"];

$password =$_POST["password "];

if(! isset($name)&&! isset($password))

{

//Відвідувач має ввести логін та пароль

?>

<hl>Введіть логін та пароль</hl>

<form method = post action = "secretdb.php">

<table border = 1 >

<tr>

<th> Username </th>

<td> <input type = text name = name> </td>

</tr> <tr>

<th> Password </th>

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

<td colspan =2 align = center> <input type = submit value = "Log In">

</td> </tr> </form>

<?

} else

{

// підключення до бази даних

$mysql = mysql_connect( 'localhost', 'webauth', 'webauth');

if(!$mysql)

{ echo 'Cannot connect to database.';

exit;

}

// вибір нашої бази даних

$mysql = mysql_select_db( 'auth' );

if(!$mysql)

{

echo 'Cannot select database.'; exit;

}

// запит до бази даних

$query = "select count(*) from auth where

name = '$name' and

pass = '$password'"; $result = mysql_query( $query ); if(!$result)

{ echo 'Cannot run query.';

exit;

}

$count = mysql_result( $result, 0, 0 );

if($count>0)

{

// якщо логін та пароль існують в базі даних

echo "<hl>Привіт!</hl>";

} else

{

// якщо логін та пароль не існують в базі даних

echo "<hl> До побачення! </hl>";

} }