Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » пишем примитивный тырнет-магазин : помогите с сессиями в PHP

Ответить
Настройки темы
пишем примитивный тырнет-магазин : помогите с сессиями в PHP

Старожил


Сообщения: 282
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


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

-------
настоящему корейцу завсегда везде ништяк!


Отправлено: 17:53, 29-08-2006

 

Аватара для E-mail

Ветеран


Сообщения: 640
Благодарности: 2

Профиль | Сайт | Отправить PM | Цитировать


session_name()
если без параметра - то выведет имя установленное до,
если с параметром, то изменит имя на указанное,

еще удобно использовать переменные $_SESSION

а также куки, тоже неплохая весч, но не гарантированная,

хотя сессии тоже иногда не дают гарантию "настоящей" аунтификации, если директория где они хранятся используется другими проектами ну и т.п..

-------
Основы HTML | Конференции


Отправлено: 18:12, 29-08-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 282
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


E-mail а как я буду определять какое имя там задалось? я просто только начал php учить поэтому ничего не знаю

-------
настоящему корейцу завсегда везде ништяк!


Отправлено: 18:28, 29-08-2006 | #3


Аватара для E-mail

Ветеран


Сообщения: 640
Благодарности: 2

Профиль | Сайт | Отправить PM | Цитировать


koresaram а вы его запишите сразу как задали, зачем вам его определять?

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

-------
Основы HTML | Конференции


Отправлено: 18:38, 29-08-2006 | #4


Старожил


Сообщения: 282
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


E-mail
алгоритм примерно такой:
имеется страница index.php на которой выводятся изначально все мои товары (на эту страницу попадает каждый новый пользователь). под каждым товаром кнопка "заказать" с value=ID. ID берется из MySQL базы. на кнопке "заказать" action=zakaz.php на этой странице все то же самое что и в index.php но уже открывается сессия для пользователя (наверное метод деревянный, но со своим уровнем знаний я ничего другого придумать не смог ). и дальше пользователь гуляет по страницам zakaz.php уже с сессией и набирает товары (кстати они будут где-то сохраняться при таком подходе?) также на странице zakaz.php появляется подпункт меню "корзина" в которую записыватся выбранные им товары. и форма "Отправить заказ". по задумке пользователь наберет товары, заполняет форму ФИО, тел. и e-mail и посылает мне письмо в котором также содержатся ID заказанных им товаров.

-------
настоящему корейцу завсегда везде ништяк!


Отправлено: 18:47, 29-08-2006 | #5


Аватара для benya

Старожил


Сообщения: 302
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


koresaram,
А почему сразу не открывать сессию для всех пользователей? А при клике на "заказать" только прилепливать товар к сессии.

Отправлено: 19:00, 29-08-2006 | #6


Старожил


Сообщения: 282
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


benya я прочитал пример в котором сперва вводилось имя в форму и на следующем файле открывалась сессия с введенным именем ну вот по аналогии и "изобрел".

то есть теперь мы сразу открываем сессию. а каким образом приклеивать товары в эту сессию?

разъясните плиз как для полного идиота или ткните в руководство для полных идиотов, а то все что нашел в инете я как-то не осиливаю

-------
настоящему корейцу завсегда везде ништяк!


Отправлено: 19:14, 29-08-2006 | #7


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


В самом деле, почему не стартовать сессию ВСЕГДА и как можно раньше? Это нормально. К примеру в таких сложных вещах как PEAR::LiveUser так и делается. Итак, сессию стартуем и дальше оперируем с массивом $_SESSION. Это автоглобальный ассоциативный массив. Присвоение его елементам какого-то значения означает запись значения в сессию. Т.о. досаточно при обработке каждого клика по кнопке "купить" выполнять примерно следующий код:
Код: Выделить весь код
$_SESSION['tovarIDs'][] = $_REQUEST['ID'];
Здесь $_REQUEST['ID'] - значения gпараметра с name='ID' переданного скрипту. Вот в сессии и будет храниться подмассив айдишников товаров, "накликанных" посетителем.

P.S. Помните о безопасности, выражение $_REQUEST['ID'] без фильтрации и обработки потенциальная дыра в срипте.

-------
Не могу дать более дельный совет - не хватает системных ресурсов...

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:10, 30-08-2006 | #8


Аватара для E-mail

Ветеран


Сообщения: 640
Благодарности: 2

Профиль | Сайт | Отправить PM | Цитировать


koresaram
Цитата:
benya я прочитал пример в котором сперва вводилось имя в форму и на следующем файле открывалась сессия с введенным именем
ну так и есть,
на странице zakaz.php

делаете sesion_start()
а далее читаете переменные, те что передали скрипту и записываете в ассоциативный массив $_SESSION
ну а после того как нажимаете "отправить заказ", уже на другой странице, например send.php делаете опять session_start() и читаете массив $_SESSION в тело письма

-------
Основы HTML | Конференции


Отправлено: 13:03, 30-08-2006 | #9


Старожил


Сообщения: 282
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


PrisonerE-mail чего-то я недопонимаю блин 100%. дело еще в том, что
Код: Выделить весь код
= $_REQUEST['ID'];
оно у меня динамическое. и плюс к этому на одной странице две формы. я вам сейчас поподробнее опишу что у меня творится.
Код: Выделить весь код
<html>

<head>
  <title>Примитивный тырнет магазин</title>
</head>

<body>
<input type="hidden" name="action" value="post">
<form name='realtyform' action='realty.php' method=post>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
  <tr>
    <td width="20%">
    <select size=9 name=direction[] multiple>
<option value=Север>Север</option>
<option value=Северо-Восток>Северо-Восток</option>
<option value=Восток>Восток</option>
<option value=Юго-Восток>Юго-Восток</option>
<option value=Юг>Юг</option>
<option value=Юго-Запад>Юго-Запад</option>
<option value=Запад>Запад</option>
<option value=Северо-Запад>Северо-Запад</option>
<option value=Центр>Центр</option>

</select>
     </td>
    <td width="50%">
    <select name=dogovor>
    <option value="аренда">Аренда</option>
    <option value="продажа">Продажа</option>
    <option value="" type="hidden" selected> </option>
    </select> <br>
    Площадь: от <input type=text name=minsquare value=""> до <input type=text name="maxsquare"  value=""><br>
    Цена: от <input type=text name="minprice" value=""> до <input type=text name="maxprice" value="">
    </td>

  </tr>
  <tr>
    <td width="100%" colspan="2"><INPUT TYPE=Submit VALUE=Искать style=font-size: 8pt> <input type=reset value=Сброс style=font-size: 8pt></td>
  </tr>
</table>
</form>

<?php
session_start();
$_SESSION['tovarIDs'] = $_REQUEST['$myrow[0]'];

echo 'В вашей корзине' . $_SESSION['tovarIDs'] . "<br>";

// Данные для MySQL сервера
$DBHost = "xxx"; // Хост
$DBUser = "xxx"; // Имя пользователя
$DBPassword = "xxx"; // Пароль
$DB="xxx"; //


// Подключаемся к MySQL серверу
$Link = mysql_connect($DBHost, $DBUser, $DBPassword);
  if(!$Link) die ("Невозможно подключиться к MySQL" .mysql_error());
// Выбираем нашу базу данных
mysql_select_db($DB, $Link)or die ("дошло до строки с выбором базы!" .mysql_error());

$direction_values=$HTTP_POST_VARS['direction'];
$dogovor_values=$HTTP_POST_VARS['dogovor'];
$minsquare_values=$HTTP_POST_VARS['minsquare'];
$maxsquare_values=$HTTP_POST_VARS['maxsquare'];
$minprice_values=$HTTP_POST_VARS['minprice'];
$maxprice_values=$HTTP_POST_VARS['maxprice'];
for ($i = 0; $i <= 9; $i++) {

print "$direction_values[$i] ";
};

if ($minsquare_values=="" and $maxsquare_values=="") {$square_query="WHERE field7 >= 0";}
elseif ($minsquare_values=="" and $maxsquare_values!="") {$square_query="WHERE field8 >= $maxsquare_values";
	}
elseif ($minsquare_values!="" and $maxsquare_values=="") {$square_query="WHERE field7 >= $minsquare_values";
	}
else {
$square_query="WHERE NOT(field8 < $minsquare_values or field7 > $maxsquare_values)";
}

if ($minprice_values=="") {$minprice_query="";}

else {
$minprice_query="AND field5 >= $minprice_values";
}

if ($maxprice_values=="") {$maxprice_query="";}

else {
$maxprice_query="AND field5 <= $maxprice_values";
}

if ($dogovor_values=="") {$dogovor_query="";}

else {
$dogovor_query="AND field4 = '$dogovor_values'";
}

if ($direction_values=="") {$direction_query="";}

else {
$direction_query="AND (field1='$direction_values[0]' or field1='$direction_values[1]' or field1='$direction_values[2]' or field1='$direction_values[3]' or field1='$direction_values[4]' or field1='$direction_values[5]' or field1='$direction_values[6]' or field1='$direction_values[7]' or field1='$direction_values[8]' or field1='$direction_values[9]')";
}

print "$dogovor_values $minsquare_values $maxsquare_values $minprice_values $maxprice_values";
print "<table width='100%' border=1><tr><td>Лот</td><td>Направление</td><td>Договор</td><td>Мин./Макс. цена</td><td>Мин./Макс. площадь</td><td> </td></tr>";

$result = mysql_query("SELECT * FROM realty $square_query $minprice_query $maxprice_query $dogovor_query $direction_query" ) or die ("Попробуйте повторить запрос через некоторое время" .mysql_error());

while ($myrow = mysql_fetch_row ($result))
{
$myrow[0]=rtrim($myrow[0]);
print "<tr><td>$myrow[0]</td><td>$myrow[1]</td><td>$myrow[4]</td><td>$myrow[5]/$myrow[6]</td><td>$myrow[7]/$myrow[8]</td><td><FORM style=\"MARGIN: 0px\" action=realty.php method=post><INPUT type=image alt=\"В корзину\" src=arrow.gif  name=\"$myrow[0]\" value=\"$myrow[0]\"></FORM></td></tr>";
}
print "</table>";


?>

</body>

</html>
вот такая мощная зарисовка
имеем. БД MySQL и собственно сам этот "скрипт" пользователь задает ограничения на поиск вариантов после чего ему выдается сводная таблица в которой он соответственно начинает выбирать нужное. выборка, коннект к базе и вывод результата все работает.
собственно я поставил код как вы мне сказали но не работает. либо я не туда его поставил либо неправильно поставил вобщем что-то не так. а вот что именно?

-------
настоящему корейцу завсегда везде ништяк!


Отправлено: 17:26, 30-08-2006 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » пишем примитивный тырнет-магазин : помогите с сессиями в PHP

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Пишем JavaScript перекодировки из кириллицы в латиницу maasja Вебмастеру 16 08-06-2009 22:10
Помогите выбрать после похода в магазин! song73 Выбор отдельных компонентов компьютера и конфигурации в целом 8 12-11-2008 20:26
Разное - помогите с php morgan1991 Вебмастеру 18 26-08-2008 13:06
Структура движка. (Пишем сами...) stone_wings Вебмастеру 18 12-05-2008 14:48
Непонятки с сессиями pauluss Вебмастеру 6 23-10-2004 14:39




 
Переход