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

Форум PHP

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

 

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

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

тема: Как организовать сессию?

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

 
 автор: nicksaint   (14.05.2006 в 19:59)   письмо автору
 
   для: WebTech   (14.05.2006 в 19:54)
 

Нет, как только hotel_ID падает на XXX.php происходит простой запрос:

$query = "SELECT hotel_name FROM hotels
          WHERE hotel_ID='".$_SESSION['hotel_ID']."'";
  $prt = mysql_query($query);
  if(!$prt) puterror("ERROR!");
  if (mysql_num_rows($prt)>0)
  {
    while($par = mysql_fetch_array($prt))
    {      
$property=$par['hotel_name']; и т.д.

И выводится инфо отеля.

   
 
 автор: WebTech   (14.05.2006 в 19:54)   письмо автору
 
   для: WebTech   (14.05.2006 в 19:47)
 

Меня смущает, что у тебя в форме стоит
action = $par['link']

Получается, что для каждой формы отдельный скрипт обработчик? Если так, то получается, что при добавлении нового отеля, нужно добавлять скрипт. Или в $par['link'] фиксированное значение, одинаковое для всех форм?

Хочется довести дело до конца :-)

   
 
 автор: nicksaint   (14.05.2006 в 19:50)   письмо автору
 
   для: WebTech   (14.05.2006 в 19:47)
 

Надо и это попробывать. Потом отпишу что получилось.

   
 
 автор: WebTech   (14.05.2006 в 19:47)   письмо автору
 
   для: nicksaint   (14.05.2006 в 19:33)
 

Все-таки...
С помощью сессий - единственное, что пришло в голову, это вот что.

Если в $par['link'] хранится имя скрипта обработчика в виде xxx.php, то можно так.


<? 
    session_start
(); 
    
$i 0;
    while(
$par mysql_fetch_array($prt)) 
    { 
      
$i++;
      echo 
"<form name='".$par['hotel_name']."' action='../".$par['link']."' method=POST>";
      
$_SESSION['city'][$par['link']] = $city
      
$_SESSION['location'][$par['link']] = $location
      
$_SESSION['prop_ID'][$par['link']] = $par['hotel_ID']; 
      
$_SESSION['hotel_name'][$par['link']] = $par['hotel_name']; 
      
$_SESSION['datea'][$par['link']] = $datea
      
$_SESSION['dated'][$par['link']] = $dated
      . . .
      
// и т.д.
?>


и в каждом скрипте обработчике переменные будут извлекаться так:

<?php 
session_start
();
$city $_SESSION['city'][$_SERVER['PHP_SELF']]; 
$location $_SESSION['location'][$_SERVER['PHP_SELF']]; 
$prop_ID $_SESSION['prop_ID'][$_SERVER['PHP_SELF']]; 
$hotel_name $_SESSION['hotel_name'][$_SERVER['PHP_SELF']]; 
$datea $_SESSION['datea'][$_SERVER['PHP_SELF']]; 
$dated $_SESSION['dated'][$_SERVER['PHP_SELF']]; 
...
// и т.д.
?>

   
 
 автор: nicksaint   (14.05.2006 в 19:33)   письмо автору
 
   для: WebTech   (14.05.2006 в 19:12)
 

А Вы правы. Я наверное оставлю и не стану усложнять. Спасибо за помощь.

   
 
 автор: WebTech   (14.05.2006 в 19:12)   письмо автору
 
   для: nicksaint   (14.05.2006 в 16:29)
 

Ну и пусть изменяет. Это проблема пользователя, если он в результате подмены значения получит не то, что надо.
А если ты боишься SQL-injection, то надо просто подставляемые в запрос значения обрабатывать с помощью mysql_escape_string() и stripslashes().

   
 
 автор: nicksaint   (14.05.2006 в 16:29)   письмо автору
 
   для: WebTech   (14.05.2006 в 16:25)
 

C hidden fields все работает, но мне не очень хочется их использовать. Их можно изменить.

   
 
 автор: WebTech   (14.05.2006 в 16:25)   письмо автору
 
   для: nicksaint   (14.05.2006 в 13:30)
 

Не

$_SESSION['hotel_name']."/".$_SESSION['hotel_ID']

а

$_SESSION['hotel_name'.$i]

где $i это счетчик или

$_SESSION['hotel_name'.$_SESSION['hotel_ID']]

но тогда придется $_SESSION['hotel_ID'] приписывать к каждому имени переменной. Попробуй так и у тебя в /tmp окажутся все переменные.

Так уж ли нужны сессии в данном случае?
У тебя выводится отдельная форма для каждой гостиницы. И получается, что каждой форме назначен отдельный обработчик. Нельзя в скрытом поле передавать только hotel_ID, а в обработчике извлекать из бд все остальные данные?
Чем тебе не нравятся скрытые поля?
В данном случае сессии не очень хорошо годятся, потому что все переменные сессии будут созданы кучей и их не очень удобно будет потом "разбирать".
И сессия существует до тех пор, пока открыт браузер. Если пользователь сохранит страницу с формами, потом закроет браузер, а потом эту страницу снова откроет, то данные сессии будут потеряны.

>Но в
>/tmp они не заносятся. Значит мы где то рядом ходим.

Заносится только последнее значение, потому что имена переменных одинаковые, а цикл проходит несколько раз. Остаются только значения после последнего прохода цикла.

   
 
 автор: nicksaint   (14.05.2006 в 16:21)   письмо автору
 
   для: nicksaint   (14.05.2006 в 13:30)
 

Кто-нибудь знает как это все должно работать?

   
 
 автор: nicksaint   (14.05.2006 в 13:30)   письмо автору
 
   для: WebTech   (14.05.2006 в 13:11)
 

Нет. Имеется страница XXX.php которая принимает параметр отеля ($_SESSION['hotel_ID']) из базы данных т.е. $_SESSION['hotel_ID']=$par['hotel_ID]. Исходя из того какой отель был выбран из списка - сессия должна переслать его ID странице XXX.php для дальнейшего вывода самого отеля.
$par['link']="XXX.php";

Инфо в /tmp постоянно меняется, но инфо только по отелю что последний по списку. Именно его ID и передается хотя должен другой!
city|s:6:"Moscow";location|s:2:"dt";status|s:26:"images/hotels/fivestar.gif";hotel_ID|s:1:"8";hotel_name|s:17:"Golden Ring Hotel";datea|s:10:"05/15/2006";dated|s:10:"05/17/2006";


Я попробывал посмотреть создаются ли вообще другие переменные путем прибавления к имени отеля той-самой переменной
echo"<h3>".$_SESSION['hotel_name']."/".$_SESSION['hotel_ID']."</h3>

К какждому имени отеля прибавилась нужная переменная. Но в /tmp они не заносятся. Значит мы где то рядом ходим.

   

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

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

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