|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » пишем примитивный тырнет-магазин : помогите с сессиями в PHP |
|
|
пишем примитивный тырнет-магазин : помогите с сессиями в PHP
|
Старожил Сообщения: 282 |
привет народ.
нужно следующее: имеется список товаров. задача - чтобы пользователь заходил, отмечал нужные ему товары и после того как наберет все нужное нажимал кнопку "заказать" после чего письмо с указанием выбранных товаров идет ко мне на почту. то есть примитивный тырнет-магазин без кнопок персчета товара и прочего. натыкал - заказал. первый вопрос - как назначить сессию не сразу при входе на страницу а только после того как пользователь ткнул хотя бы один товар? то есть имя сессии как бы назначать самому а как? в этом месте я теряюсь что делать. хелп ![]() |
|
------- Отправлено: 17:53, 29-08-2006 |
![]() Ветеран Сообщения: 640
|
Профиль | Сайт | Отправить PM | Цитировать session_name()
если без параметра - то выведет имя установленное до, если с параметром, то изменит имя на указанное, еще удобно использовать переменные $_SESSION а также куки, тоже неплохая весч, но не гарантированная, хотя сессии тоже иногда не дают гарантию "настоящей" аунтификации, если директория где они хранятся используется другими проектами ну и т.п.. |
------- Отправлено: 18:12, 29-08-2006 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 282
|
Профиль | Сайт | Отправить PM | Цитировать E-mail а как я буду определять какое имя там задалось? я просто только начал php учить поэтому ничего не знаю
![]() |
------- Отправлено: 18:28, 29-08-2006 | #3 |
![]() Ветеран Сообщения: 640
|
Профиль | Сайт | Отправить PM | Цитировать koresaram а вы его запишите сразу как задали, зачем вам его определять?
какой алгоритм Вы себе держите в говове для реализации через сессии, можно узнать? |
------- Отправлено: 18:38, 29-08-2006 | #4 |
Старожил Сообщения: 282
|
Профиль | Сайт | Отправить PM | Цитировать E-mail
алгоритм примерно такой: имеется страница index.php на которой выводятся изначально все мои товары (на эту страницу попадает каждый новый пользователь). под каждым товаром кнопка "заказать" с value=ID. ID берется из MySQL базы. на кнопке "заказать" action=zakaz.php на этой странице все то же самое что и в index.php но уже открывается сессия для пользователя (наверное метод деревянный, но со своим уровнем знаний я ничего другого придумать не смог ![]() |
|
------- Отправлено: 18:47, 29-08-2006 | #5 |
![]() Старожил Сообщения: 302
|
Профиль | Сайт | Отправить PM | Цитировать koresaram,
А почему сразу не открывать сессию для всех пользователей? А при клике на "заказать" только прилепливать товар к сессии. |
Отправлено: 19:00, 29-08-2006 | #6 |
Старожил Сообщения: 282
|
Профиль | Сайт | Отправить PM | Цитировать benya я прочитал пример в котором сперва вводилось имя в форму и на следующем файле открывалась сессия с введенным именем ну вот по аналогии и "изобрел".
то есть теперь мы сразу открываем сессию. а каким образом приклеивать товары в эту сессию? разъясните плиз как для полного идиота ![]() ![]() |
------- Отправлено: 19:14, 29-08-2006 | #7 |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать В самом деле, почему не стартовать сессию ВСЕГДА и как можно раньше? Это нормально. К примеру в таких сложных вещах как PEAR::LiveUser так и делается. Итак, сессию стартуем и дальше оперируем с массивом $_SESSION. Это автоглобальный ассоциативный массив. Присвоение его елементам какого-то значения означает запись значения в сессию. Т.о. досаточно при обработке каждого клика по кнопке "купить" выполнять примерно следующий код:
Здесь $_REQUEST['ID'] - значения gпараметра с name='ID' переданного скрипту. Вот в сессии и будет храниться подмассив айдишников товаров, "накликанных" посетителем. P.S. Помните о безопасности, выражение $_REQUEST['ID'] без фильтрации и обработки потенциальная дыра в срипте. |
------- Отправлено: 12:10, 30-08-2006 | #8 |
![]() Ветеран Сообщения: 640
|
Профиль | Сайт | Отправить PM | Цитировать koresaram
Цитата:
на странице zakaz.php делаете sesion_start() а далее читаете переменные, те что передали скрипту и записываете в ассоциативный массив $_SESSION ну а после того как нажимаете "отправить заказ", уже на другой странице, например send.php делаете опять session_start() и читаете массив $_SESSION в тело письма |
|
------- Отправлено: 13:03, 30-08-2006 | #9 |
Старожил Сообщения: 282
|
Профиль | Сайт | Отправить PM | Цитировать PrisonerE-mail чего-то я недопонимаю блин 100%. дело еще в том, что
оно у меня динамическое. и плюс к этому на одной странице две формы. я вам сейчас поподробнее опишу что у меня творится. <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 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Пишем 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 |
|