|
|
|
|
|
для: selma
(30.01.2011 в 10:51)
| | Зачем хранить сессию в базе? Храните имя ее, стартуя под этим именем, если вам так уж надо имя постоянное, этого не достаточно разве для целей ваших. А нет, так и забыли об этом.
Главное, вы должны проверять некий ключ, который указывает, что авторизация прошла, а для этого и нужен механизм хранящий его - сессия. | |
|
|
|
|
|
|
|
для: sim5
(30.01.2011 в 10:45)
| | Можно ли без использования хранения сессий в базе и вообще без собственного механизма? | |
|
|
|
|
|
|
|
для: selma
(30.01.2011 в 10:35)
| | Логин и пароль ОК.
Если не нет имени сессии, запоминаем в базе, иначе извлекаем его.
Удаление существующей сессии и старт новой.
Признак авторизации пишем в сессию.
Продолжаем сессию и проверям признак авторизации. | |
|
|
|
|
|
|
|
для: sim5
(30.01.2011 в 10:31)
| | И это тоже:
Я зашла на сайт (Сессия не должна создаваться)
Могу бродить по сайту сколько захочу, НО если я хочу написать сообщение или еще что угодно, необходимо авторизироваться, после авторизации, для меня (как уже авторизованого пользователя) создается сессия, и не изменяется пока я не выйду (уничтожу сессию).
Теперь понятен вопрос?
Все файлы сессий хранятся в определенной папке. (ответ на пост выше) | |
|
|
|
|
|
|
|
для: selma
(30.01.2011 в 10:13)
| | Вы видимо не так вопрос задали, вам видимо хочется, чтобы у авторизованного пользователя имя сессии было постоянным? | |
|
|
|
|
|
|
|
для: sim5
(30.01.2011 в 10:05)
| | Вот что нашла в интернете:
Пример авторизации с помощью сессий
Проиллюстрируем все вышенаписанное небольшим примером:
создадим файл auth.php:
<?
if (isset($_POST['auth_name'])) {
$name=mysql_real_escape_string($_POST['auth_name']);
$pass=mysql_real_escape_string($_POST['auth_pass']);
$query = "SELECT * FROM users WHERE name='$name' AND pass='$pass'";
$res = mysql_query($query) or trigger_error(mysql_error().$query);
if ($row = mysql_fetch_assoc($res)) {
session_start();
$_SESSION['user_id'] = $row['id'];
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
}
header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
exit;
}
if (isset($_GET['action']) AND $_GET['action']=="logout") {
session_start();
session_destroy();
header("Location: http://".$_SERVER['HTTP_HOST']."/");
exit;
}
if (isset($_REQUEST[session_name()])) session_start();
if (isset($_SESSION['user_id']) AND $_SESSION['ip'] == $_SERVER['REMOTE_ADDR']) return;
else {
?>
<form method="POST">
<input type="text" name="auth_name"><br>
<input type="password" name="auth_pass"><br>
<input type="submit"><br>
</form>
<?
}
exit;
?>
|
//теперь достаточно написать во всех защищаемых скриптах строчку
//require "auth.php";
Заметьте никакого собственного механизма не создано, НО есть одно но
if (isset($_REQUEST[session_name()])) session_start();
|
можно не имея авторизации прописать любое значение идентификатора, и файл сессии создасться...что не приемлемо | |
|
|
|
|
|
|
|
для: selma
(30.01.2011 в 09:56)
| | Где сохранять? Я понимаю, что в базу поместить, но временный файл...
Имя сессии, как признак авторизации никоим образом нельзя применять. Можно передать некий временный ключ, который после старта сессии удалить, но этот ключ должен храниться на сервере для проверки, а это означает, что нужно писать собственный механизм. Зачем же писать собственный, подменяя уже имеющийся? | |
|
|
|
|
|
|
|
для: sim5
(30.01.2011 в 09:50)
| | У меня конкретная задача, сохранять сессии только авторизованных пользователей. Если знаете подскажите на примере как это осуществить? | |
|
|
|
|
|
|
|
для: selma
(30.01.2011 в 09:20)
| | А вам, что лично приходится веником сессии выметать или они портят интерьер квартиры вашей?
Сессии не скапливаются навечно, их удаляет мусорщик, сессия пользователя А никак не мешает сессии пользователя В. В чем может быть тут проблема? | |
|
|
|
|
|
|
|
для: sim5
(30.01.2011 в 09:16)
| | Дак суть в том что задумка не скапливать ненужные файлы сессий, а только авторизованных пользователей, вот поэтому при удачной авторизации сессия стартуется...а не просто так
Уважаемый SIM5 я понимаю что большинство вещей в этом мире можно описать словами, но не покажете ли вы примером КАК это осуществить | |
|
|
|
|