Термином сеанс обозначается ситуация, когда пользователь посещает сайт. В РНР существует множество способов управления сеансом.
1. Хранение информации на клиенте.
Данные не должны храниться на клиенте по ряду причин:
- разработчик теряет контроль над данными, пока пользователь не вернется на сайт, нельзя получить к ним доступ.
- пользователи зачастую отключают файлы персональных настроек
1. Данные должны храниться на сервере.
Где именно они хранятся, значения не имеет. Это может быть СУБД, текстовый файл и т.д.
Чтобы ассоциировать данные с конкретным пользователем, потребуется идентификационный номер сеанса – ключ, который связывает пользователя с его данными.
Как запомнить сведения о пользователе?
1. Один из вариантов – использование ip-адреса пользователя.
У способа существуют ограничения, например – прокси-сервера.
2. Создание собственного уникального идентификатора.
Пример.
<?
$rand(time()*1000000);
$session_id=md5(uniqid(rand());?>
Как сделать идентификатор сеанса доступным для всех станиц приложения?
|
|
1. Использовать файлы персональных настроек.
<?php
$session_id =md5(uniqid(rand());
setcookie(“session_id ”, $session_id, time()+3600);?>
2. Использовать ручную перезапись URL
Необходимо передавать при переходе по страницам идентификатор сеанса методами POST/GET ил поместить его в URL. Для этого нужно изменить все фреймы, все формы и все ссылки.
<?
print “<frame src=”page.php?session_id=”.$session_id.”>”;
print “<input type= “hidden” name=’session_id’ value=”.$session_id.”>”;
print “<a href=”page.php?session_id=”.$session_id.”>TEXT</a>”;?>
3. Использование собственных средств РНР – сессий.
<?
session_start();
$session_id =md5(uniqid(rand());
session_register(“$session_id”);?>
В зависимости от типа запроса вызов функции mysql_query() может приводить к различным последствиям. При успешном выполнении команды SELECT возвращается идентификатор результата, который впоследствии передается функции mysql_result() для последующего форматирования и отображения результатов запроса.
Получение и обработка результатов запроса
Функция mysql_result() используется в сочетании с mysql_query() для получения набора данных.
Синтаксис функции
Int mysql_result(int result, int record)
Пример.
@mysql_connect(“doc200”, “login”, “pwd”)
or die (“Нет подключения к серверу!”);
@mysql_select_db(“id”, “pwd”)
or die (“База данных не может быть выбрана!”);
$query =”SELECT Name FROM User”;
$result=mysql_query($query);
$i=0;
while ($i<mysql_num_rows($result))
{ print mysql_result($result, $i).”<br>”;
$i++;
}
Отсоединение от БД
После завершения работы с сервером баз данных соединение нужно закрыть.
Синтаксис функции
int mysql_close(int link)
Пример.
@mysql_connect(“doc200”, “login”, “pwd”)
or die (“Нет подключения к серверу!”);
@mysql_select_db(“id”, “pwd”)
or die (“База данных не может быть выбрана!”);
$query =”SELECT Name FROM User”;
$result=mysql_query($query);
$i=0;
while ($i<mysql_num_rows($result))
{ print mysql_result($result, $i).”<br>”;
$i++;
}
mysql_close();