Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2010, 18:06   #11
agent007
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 53
По умолчанию

Ибо после закрытия браузера сессия очищается, как быть? чтобы она хранилась в течении 20 минут допустим, или куки (не знаю как правильно сказать)
agent007 вне форума Ответить с цитированием
Старый 14.07.2010, 23:37   #12
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Я лично вообще не использую сессии. Но это именно я. Обычно, когда нужно долго держать сессию - изменяют системную переменную session.cookie_lifetime
ini_set ('session.cookie_lifetime', 3600); //где 3600 это время в секундах (то есть 60*60=3600=1 час)
Но тут есть такая загвоздка. В PHP существует автоматический "сборщик мусора", который удаляет файлы сессии ПО УМОЛЧАНИЮ примерно через 24 минуты после создания. Так вот чтобы сессия жила до 24-ёх минут можно поменять только вышеназванную переменную. Но чтобы сессия жила более 24-ёх минут - нужно уже заморачиваться. Потому как если у тебя разные скрипты используют разное время жизни сессий, то "мусорщик" будет удалять все файлы без разбора по минимальному таймауту (24 минуты обычно). Таким образом прийдётся менять ещё и директорию, куда файлы сессии будут записываться, а это то ещё муторство (создание директории в нужном месте, установка пути, выдача прав и т.д. и т.п.).

Итого - совет: используйте куки. Храните данные пользователей (id покупок, количества и т.д.) в БД. А в куки храните хеш пользователя только.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 15.07.2010, 13:40   #13
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Цитата:
Так вот чтобы сессия жила до 24-ёх минут можно поменять только вышеназванную переменную. Но чтобы сессия жила более 24-ёх минут - нужно уже заморачиваться. Потому как если у тебя разные скрипты используют разное время жизни сессий, то "мусорщик" будет удалять все файлы без разбора по минимальному таймауту (24 минуты обычно). Таким образом прийдётся менять ещё и директорию, куда файлы сессии будут записываться, а это то ещё муторство (создание директории в нужном месте, установка пути, выдача прав и т.д. и т.п.).
Проблема решается тремя командами
ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'] .'sessions');
ini_set('session.gc_maxlifetime', 120960);
ini_set('session.cookie_lifetime', 120960);
Естественно папку sessions необходимо создать и права дать.
ssdm вне форума Ответить с цитированием
Старый 15.07.2010, 14:25   #14
agent007
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 53
По умолчанию

Ясно, спасибо, только оюъясните нубу как с печенькми сделать???
agent007 вне форума Ответить с цитированием
Старый 15.07.2010, 14:29   #15
agent007
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 53
По умолчанию

И ещё: правильно ли я понял то, что допустим создаём поле для идентификатора сессии в таблице, и просматривая корзину сверяем, если session_id==полю в базе то выводим товары так?
agent007 вне форума Ответить с цитированием
Старый 16.07.2010, 03:36   #16
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

http://phpfaq.ru/sessions
вот, почитай.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 18.07.2010, 11:41   #17
agent007
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 53
По умолчанию

Цитата:
Сообщение от Johnatan Посмотреть сообщение
http://phpfaq.ru/sessions
вот, почитай.
ну я то прочитал но всё же для конкретного своего примера не понял как связать
agent007 вне форума Ответить с цитированием
Старый 18.07.2010, 19:55   #18
agent007
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 53
По умолчанию

Мда мне без вас ГУРУ не разобратся
<?php include ("blocks/bd.php"); /*соеденяемся с БД*/
$result = mysql_query ("SELECT * FROM settings WHERE page='card'",$db);
$myrow = @mysql_fetch_array ($result);
session_start();
ini_set("session.gc_maxlifetime", "3600");
ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'] .'sessions');
ini_set('session.gc_maxlifetime', 120960);
ini_set('session.cookie_lifetime', 120960);

$Brand=$myrow["Brand"];
$Cena=$myrow["Cena"];
$Emkost=$myrow["Emkost"];
$PHPSESSID = session_id();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<?php include ("blocks/verification_bot.php"); ?>

<meta name="description" content="<?php echo $myrow['meta_d']; ?> ">
<meta name="keywords" content=" <?php echo $myrow['meta_k']; ?> ">
<title><?php echo $myrow['title']; ?></title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body onLoad="MM_preloadImages('images/imgbr_07.jpg')">
<?php include("blocks/header.php"); ?>
<?php include("blocks/navi.php"); ?>
<div class="text_bg">
<div class="text_in"><!--Тут текст-->

<?php
$result = mysql_query ("select * FROM zakaz WHERE PHPSESSID='$PHPSESSID' ORDER BY CENA",

$db);
$myrow = @mysql_fetch_array ($result);
do { $znach = $myrow["Sklad"];
printf ("<table width='880px' align='left' border='1px'>
<tr>
<td width='100px' align='center'>%s</td>
<td width='140px' align='center'>%s Ah</td>
<td width='100px' align='center'>%s A</td>
<td width='100px' align='center'>%s</td>

</tr>
</table>",$myrow["Brand"],$myrow["Emkost"],$myrow["Puskt"], $myrow["Cena"]);
}
while ($myrow = @mysql_fetch_array ($result));


while ($myrow = @mysql_fetch_array ($result)){
$summ+=$myrow["Cena"];
}
printf("AGA: %d",$summ);

?>

</div></div>
<?php include("blocks/bottom.php"); ?>
</body>
</html>

Что нужно сделать для того чтобы сессия(или куки) для определённого браузера сохранялись как можно больше после закрытия браузера?
agent007 вне форума Ответить с цитированием
Старый 18.07.2010, 21:04   #19
werewolf999
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 46
По умолчанию

на сессию после закрытия браузера лучше не расчитывать
а при создании кук можно указать время жизни (третий параметр в setcookie - дата в unix timestamp когда кука должна быть удалена, если это не указать то кука будет удалена при закрытии браузера)
werewolf999 вне форума Ответить с цитированием
Старый 19.07.2010, 13:21   #20
agent007
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 53
По умолчанию

так а как прописать и в чём различия сессий и кук?
agent007 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать интернет-магазин STill_ace Общие вопросы .NET 3 04.11.2009 12:41
БД Магазин... Непонятная ошибка... Arkuz БД в Delphi 7 01.12.2008 22:19
интернет магазин dimaxz HTML и CSS 18 04.09.2008 03:32
Интернет-магазин, отзывы. AlDelta Софт 2 06.03.2008 16:28