Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: $_REQUEST[session_name()]

Сообщения:  [1-10]   [11-16] 

 
 автор: sim5   (30.01.2011 в 10:58)   письмо автору
 
   для: selma   (30.01.2011 в 10:51)
 

Зачем хранить сессию в базе? Храните имя ее, стартуя под этим именем, если вам так уж надо имя постоянное, этого не достаточно разве для целей ваших. А нет, так и забыли об этом.
Главное, вы должны проверять некий ключ, который указывает, что авторизация прошла, а для этого и нужен механизм хранящий его - сессия.

  Ответить  
 
 автор: selma   (30.01.2011 в 10:51)   письмо автору
 
   для: sim5   (30.01.2011 в 10:45)
 

Можно ли без использования хранения сессий в базе и вообще без собственного механизма?

  Ответить  
 
 автор: sim5   (30.01.2011 в 10:45)   письмо автору
 
   для: selma   (30.01.2011 в 10:35)
 

Логин и пароль ОК.
Если не нет имени сессии, запоминаем в базе, иначе извлекаем его.
Удаление существующей сессии и старт новой.
Признак авторизации пишем в сессию.
Продолжаем сессию и проверям признак авторизации.

  Ответить  
 
 автор: selma   (30.01.2011 в 10:35)   письмо автору
 
   для: sim5   (30.01.2011 в 10:31)
 

И это тоже:

Я зашла на сайт (Сессия не должна создаваться)
Могу бродить по сайту сколько захочу, НО если я хочу написать сообщение или еще что угодно, необходимо авторизироваться, после авторизации, для меня (как уже авторизованого пользователя) создается сессия, и не изменяется пока я не выйду (уничтожу сессию).
Теперь понятен вопрос?

Все файлы сессий хранятся в определенной папке. (ответ на пост выше)

  Ответить  
 
 автор: sim5   (30.01.2011 в 10:31)   письмо автору
 
   для: selma   (30.01.2011 в 10:13)
 

Вы видимо не так вопрос задали, вам видимо хочется, чтобы у авторизованного пользователя имя сессии было постоянным?

  Ответить  
 
 автор: 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(); 

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

  Ответить  
 
 автор: sim5   (30.01.2011 в 10:05)   письмо автору
 
   для: selma   (30.01.2011 в 09:56)
 

Где сохранять? Я понимаю, что в базу поместить, но временный файл...
Имя сессии, как признак авторизации никоим образом нельзя применять. Можно передать некий временный ключ, который после старта сессии удалить, но этот ключ должен храниться на сервере для проверки, а это означает, что нужно писать собственный механизм. Зачем же писать собственный, подменяя уже имеющийся?

  Ответить  
 
 автор: selma   (30.01.2011 в 09:56)   письмо автору
 
   для: sim5   (30.01.2011 в 09:50)
 

У меня конкретная задача, сохранять сессии только авторизованных пользователей. Если знаете подскажите на примере как это осуществить?

  Ответить  
 
 автор: sim5   (30.01.2011 в 09:50)   письмо автору
 
   для: selma   (30.01.2011 в 09:20)
 

А вам, что лично приходится веником сессии выметать или они портят интерьер квартиры вашей?
Сессии не скапливаются навечно, их удаляет мусорщик, сессия пользователя А никак не мешает сессии пользователя В. В чем может быть тут проблема?

  Ответить  
 
 автор: selma   (30.01.2011 в 09:20)   письмо автору
 
   для: sim5   (30.01.2011 в 09:16)
 

Дак суть в том что задумка не скапливать ненужные файлы сессий, а только авторизованных пользователей, вот поэтому при удачной авторизации сессия стартуется...а не просто так

Уважаемый SIM5 я понимаю что большинство вещей в этом мире можно описать словами, но не покажете ли вы примером КАК это осуществить

  Ответить  

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования