| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Использование сессий в PHP
Очень часто при написании скриптов на php необходимо хранить некоторую информацию о посетителе в течение всего сеанса его работы. Типичным примером такой ситуации является необходимость "помнить" логин и пароль пользователя при его нахождении в закрытой части сайта (например, на форуме). Собственного говоря, именно для этого и существует механизм сессий, реализованный в php, однако давайте все по порядку. Для того, чтобы в скрипте можно было работать с сессиями, необходимо сначала инициализировать механизм сессий. Делается это с помощью функции session_start(). При этом будет создана новая сессия или восстановлена уже существующая. Как сервер узнает что ему делать: создавать или восстанавливать? Очень просто. Дело в том, что когда посетитель заходит на сайт, ему присваивается 32-х разрядный идентификатор вида: abcd1efgh2ijkl3mnop4qrs5tuv6wxyz, который "следует" за ним при всех перемещениях по сайту. "Следование" обеспечивается либо по средствам cookies, либо, если они отключены у пользователя, добавлением ко всем адресам GET-запроса вида: PHPSESSID=идентификатор, т.е. адрес myscript.php превратиться в myscript.php?PHPSESSID=идентификатор. При обработке запроса на сервере движок php ищет идентификатор в переданных ему данных и, если находит и сессия не устарела, то обновляет ее. В противном случае создается новая. Кстати, идентификатор сессии можно получить с помощью функции session_id(); После того, как механизм сессий был инициализирован в скрипте мы можем сохранять любую информацию в ассоциативном массиве $_SESSION. Этот массив является глобальной переменной сессии. Таким образом, сохранив в нем, к примеру, значения переменных login и password на странице авторизации мы можем использовать их на всех остальных страницах защищенной части сайта. Завершение сессии происходит либо автоматически по истечению определенного промежутка времени, либо принудительно при использовании функции session_destroy(). Ну вот, с теорией мы разобрались, теперь настало время применить ее на практике. Для этого напишем 3 скрипта: login.php - авторизация посетителей, protected.php - закрытая страница и logout.php - завершение работы. login.php<?
session_start(); //инициализирум механизм сесссий
if(!isset($_POST['ok'])) {
// если форма не заполнена, то выводим ее
echo"
<html>
<head>
<title>Страница авторизации</title>
</head>
<body>
<table width='100%' height='100%'>
<form method='POST' action='login.php'>
<tr><td align=center>
<table>
<tr><td>
<table>
<tr><td>Login:</td><td><input type='text'
name='login' size='15'></td></tr>
<tr><td>Password:</td><td><input
type='password' name='pass' size='15'></td></tr>
</table>
</td></tr>
<tr><td align=center><input type='submit' name='ok'
value='Вход'></td></tr>
</table>
</td></tr>
</form>
</table>
</body>
</html>
";
}
else{
//предполагается, что информацию о пользователях вы
//храните в базе данных, в таблице users, содержащей поля id, login, pass
$db=mysql_connect('host', login', 'password');
mysql_select_db('db_name', $db);
//проверяем есть ли пользователь с таким login'ом и password'ом
$res=mysql_query("SELECT * FROM users WHERE login='".$_POST['login']."'
AND pass='".$_POST['pass']."'", $db);
if(mysql_num_rows($res)!=1){ //такого пользователя нет
echo "Введены не верные логин или пароль";
}
else{ //пользователь найден
$_SESSION['login']=$_POST['login']; //устанавливаем login & pass
$_SESSION['pass']=$_POST['pass'];
Header("Location: protected.php"); // еренаправляем на protected.php
}
mysql_close();
}
protected.php<?
session_start(); //инициализирум механизм сесссий
//начинаем проверку логина и пароля
$db=mysql_connect('host', 'login', 'password');
mysql_select_db('db_name', $db);
$res=mysql_query("SELECT * FROM users WHERE login='".$_SESSION['login']."'
AND pass='".$_SESSION['pass']."'", $db);
if(mysql_num_rows($res)!=1){ //такого пользователя нет
Header("Location: login.php"); //перенаправляем на login.php
}
else{ //пользователь найден, можем выводить все что нам надо
echo "Текст закрытой страницы<br><a href='logout.php'>Выход</a>";
}
mysql_close();
?>
logout.php<?
session_start(); //инициализируем механизм сессий
session_destroy(); //удаляем текущую сессию
Header("Location: protected.php"); //перенаправляем на protected.php
?>
Ну вот, и все. Надеюсь, эта статья кому-нибудь поможет. Рубрика: PHP
Подгрузка через AJAX HTML-кода, содержащег....
При разработке CMS S.Builder наша команда активно использовала AJAX. Теперь вот решили поделиться накопленным опытом. Начнем с этого хабратопика. Не буду здесь затрагивать различные фреймворки и библиотеки. Свой код всегда роднее. Для работы с AJAX-ом в S.Builder написана библиотека sbAJAX. Можете качать и пользоваться :). В этом файле есть функция sbEvalJS. Для тех, кто не знает, объясню. При подгрузке через AJAX и вставке на страницу HTML-кода, содержащего JavaScript, JavaScript выполняться не будет или полезут баги. Эта функция как раз решает поставленную задачу.
Подробнее... |
Рубрика: AJAX
| Добавлено: 19.11.2008
Обзор нового релиза самой мощной Ajax библ....
Хотя наш обзор немного запоздал, оригинальный Dojo 1.2 вышел в релизной версии ещё 6-го октября, но сейчас мы наверстаем упущенное. И так, Dojo Toolkit — это самая мощная и гибкая ajax-библиотека из всех, что есть на рынке, она активно развивается и имеет большое комьюнити. Кстати, это самое комьюнити, совместно с компанией Sitepen, имеет ещё несколько проектов, среди которых и Cometd и некоторые другие, не менее интересные, о которых мы скоро вам расскажем. Сегодня же все внимание на флагманский продукт — Dojo 1.2.
Подробнее... |
Рубрика: AJAX
| Добавлено: 19.11.2008
Firebug 1.3 и 1.4 alpha — что нового и инт....
Если вы профессиональный веб-разработчик и постоянно имеете дело с разработкой и отладкой сложных AJAX приложений, то наверняка знаете и используете Firebug — плагин для браузера Firefox, предназначенный для отладки и исследования веб-приложений. Текущая его версия, 1.2х достаточно стабильная и функциональна, чтобы помочь в 99% проблем, которые могут возникнуть при разработке. Но и этот инструмент не лишён если не недостатков, то некоторых фич, которые могли бы облегчить работу. И даже идеальный инструмент можно сделать ещё более идеальным, как бы это не звучало.
Подробнее... |
Рубрика: Вебмастеру
| Добавлено: 19.11.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|