Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите пожалуйста разобраться с session, с кодом - session 
:(
    Опции темы
Elina
  Дата 6.12.2005, 13:19 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Доброго времени суток,

помогите пожалуйста разобраться

написала простую программу голосования которая состоит из 3 файлов
1 файл - вход - надо ввести id

2 файл -вопросы и кнопка
Код


session_start();
$id = $HTTP_POST_VARS['id'];
.................
echo"<center>"  
. "<form action=exitbye.php  method=post><br>"
."<input  type=radio name=lots  value=1> ответ 1<br>"
."<input  type=radio  name=lots  value=2>  ответ2<br>"
."<input  type=radio name=lots value=3>  ответ3<br>"
."<br><br><input type=submit value=Submit>"                            
."</form>"            
."</center>";



3 файл -сообщение об выходе
Код




[code=cpp]
     session_start();
    $lots = $HTTP_POST_VARS['lots'];
...........
   unset($_SESSION['id']);
   unset($_SESSION['lots']);
  
  session_destroy();

[/code]

вопрос как сделать так чтобы после перехода на 3 файл нельзя было вернуться назад ни на 1-ый ни на 2-ой

даже после

Код

 unset($_SESSION['id']);
   unset($_SESSION['lots']);
  
  session_destroy();


ни id ни lots не стираются и можно вернуться назад и на тот же id проголосовать ещё раз
  Вверх
-=Ustas=-
Дата 6.12.2005, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Покажи как у тебя регистрируются пеменные сессии.

Это сообщение отредактировал(а) -=Ustas=- - 6.12.2005, 13:26


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Guest
Дата 6.12.2005, 13:46 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











2 файл -вопросы и кнопка
Код

session_start();
$id = $HTTP_POST_VARS['id'];
[b]$_SESSION['lots'] = $lots ;/b]


3 файл -сообщение об выходе
Код

session_start();
$lots = $HTTP_POST_VARS['lots'];
[b]$_SESSION['lots'] = $lots ;[/b]


первый раз работаю с сесией и вообще первая моя программа
если я не ошибаюсь регистрируются пеменные так
Код

$_SESSION['lots'] = $lots ;
..........
$_SESSION['lots'] = $lots ;


  Вверх
Elina
Дата 6.12.2005, 13:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











забыло написать имя

2 файл -вопросы и кнопка

Код
[code=php]


session_start();
$id = $HTTP_POST_VARS['id'];
[b]$_SESSION['lots'] = $lots ;/b]
[/code]

3 файл -сообщение об выходе

Код

session_start();
$lots = $HTTP_POST_VARS['lots'];
[b]$_SESSION['lots'] = $lots ;[/b]


первый раз работаю с сесией и вообще первая моя программа
Код

$_SESSION['lots'] = $lots ;
..........
$_SESSION['lots'] = $lots ;

если я не ошибаюсь регистрируются пеменные так

  Вверх
z-END
Дата 6.12.2005, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 5
Всего: 102



Цитата(Elina @ 6.12.2005, 13:19)
как сделать так чтобы после перехода на 3 файл нельзя было вернуться назад ни на 1-ый ни на 2-ой

может стоит запретить кэширование страницы?
Код

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");



--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Elina
Дата 6.12.2005, 14:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");


добавила в 3-ий файл и выдаёт
Warning: Cannot modify header information - headers already sent by (output started at /exitbye.php:5)
  Вверх
z-END
Дата 6.12.2005, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 5
Всего: 102



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


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Elina
Дата 6.12.2005, 14:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











перенесла вверх не кричит но по прежнему есть возможность возращаться назад
  Вверх
z-END
Дата 6.12.2005, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 5
Всего: 102



Цитата(Elina @ 6.12.2005, 14:50)
перенесла вверх не кричит но по прежнему есть возможность возращаться назад

а на всех страницах?!


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Elina
Дата 6.12.2005, 15:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











да на всех страницах
но всё равно можно переходить вперёд и назад

что делать
  Вверх
Dave
Дата 6.12.2005, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 17.6.2004

Репутация: -1
Всего: 1



Цитата(Elina @ 6.12.2005, 13:19)
вопрос как сделать так чтобы после перехода на 3 файл нельзя было вернуться назад ни на 1-ый ни на 2-ой


для того чтобы нельзя было вернуться на 1 и 2 страницу значит нужно сделать проверку чего то на этих страницах, если чего то нет значит не пускать.

Т.е. в начале работы твоей системы заведи в сессии переменную, флаг, присвой ей значение, например 1, а в конце присвой ей значение 0, там где надо проверяй , если 1 то пускаем на страницу, если 0 то не пускаем. Все просто.


Цитата(Elina @ 6.12.2005, 15:56)
что делать


отлаживать. Выводи на экран все данные и смотри что не так.

Это сообщение отредактировал(а) Dave - 6.12.2005, 17:18
PM MAIL   Вверх
Elina
Дата 7.12.2005, 11:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











спасибо
попробывала завела флаг ,но дело втом что при переходе назад впрёд не загружется файл занова (следовательно нет возможности для проверок ) а загружается уже использованный(с выбранным ответом)

как от этого избавиться ?


  Вверх
z-END
Дата 7.12.2005, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 5
Всего: 102



Цитата(Elina @ 7.12.2005, 11:57)
как от этого избавиться ?

1. запретить кэширование (Как показано выше)
2. использовать проверку флага (как сказал Dave)
если это не работет значит где-то глюк..


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Elina
Дата 7.12.2005, 12:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
1. запретить кэширование (Как показано выше)
2. использовать проверку флага (как сказал Dave)

если это не работет значит где-то глюк..


где искать глюк.

  Вверх
Dave
Дата 7.12.2005, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 17.6.2004

Репутация: -1
Всего: 1



Цитата(Elina @ 7.12.2005, 11:57)
попробывала завела флаг ,но дело втом что при переходе назад впрёд не загружется файл занова (следовательно нет возможности для проверок ) а загружается уже использованный(с выбранным ответом)

А можно попросить у вас кусок кода который проверят флаг ?
Мне интересно что вы делаете в случае если флага нет или он невалидный.

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

Это сообщение отредактировал(а) Dave - 7.12.2005, 13:59
PM MAIL   Вверх
Elina
Дата 7.12.2005, 14:44 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered












index.php
Код

session_start();
$_SESSION['flag2'] = 1;

  echo" <center>"
   ."<form action=entry.php  method=post>"
   ."...........<br><br> <input type=text  name=tz><br><br><br>"
    ."<input  type=Submit >"
    
  ."</form>"
." </center>";
   



entry.php
Код

  session_start();
$name="guest";

$tz1 = $HTTP_POST_VARS['tz'];
unset($tz);
  if (empty($tz1) || ($_SESSION['flag2']==0))       // if tz is empty
  {
     echo"<h1>.......</h1>";
     include "index.php";
  }
  else
  {
         if(  (is_numeric($tz1)==TRUE ) )
         {
     $_SESSION['flag2'] = 0;
            if (!mysql_pconnect($dbhost,$dbuname,$dbpass))  echo " Unable to conect ";
                mysql_select_db($dbname) or die ("Unable to select database "); 

                 $sql="select * from  p  WHERE    sTZ ='$tz1' ";
    
                  $st=mysql_query( $sql);
                    if($st){                   
                         
                         echo"<center>"  
                        . "<form action=exitbye.php  method=post><br>"
                        ."<input  type=radio name=lots  value=1>  1<br>"
                        ."<input  type=radio  name=lots  value=2>  2<br>"
                    ."<input  type=radio name=lots value=3>  3<br>"
                                     ."<br><br><input type=submit value=Submit>"        
                ."</form>"            
                               ."</center>";
                   }
                           else "<p>Error:".mysql_error()."</p>";
                            exit();
                    }    
                     else{
                         echo "<p>Error:".mysql_error()."</p>";
                         exit();
                          }
                    
                    mysql_close(); 
              }
         else   //  if tz is not numeric
            {
               echo"<h1>.........</h1>";
               include "index.php";
             }
  }


  Вверх
Dave
Дата 7.12.2005, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 17.6.2004

Репутация: -1
Всего: 1



entry.php нерабочий, parse error на линии 44.
рабочий пример ускорит процесс.
но , по ходу, напиши что у тебя не получается в этом скрипте.

насколько я понимаю, в этом месте (у тебя там 2 таких места):
Код

  if (empty($tz1) || ($_SESSION['flag2']==0))       // if tz is empty
  {
     echo"<h1>.......</h1>";
     include "index.php";
  }


ты отображаешь index.php вместо entry.php, в этом случае нужно делать не include а redirect на этот скрипт (index.php), в этом тебе поможет функция header, вот пример из мануала
Код

header("Location: http://www.example.com/"); /* Redirect browser */

/* Make sure that code below does not get executed when we redirect. */
exit;


у тебя есть мануал по php ? рекомендую ман в виде chm файла, там есть поиск, очень удобно.

Это сообщение отредактировал(а) Dave - 7.12.2005, 15:39
PM MAIL   Вверх
Elina
Дата 8.12.2005, 11:42 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











index.php
Код

session_start();

$flag2=1;
$_SESSION['flag2'] = $flag2 ;

echo" <center>"
  ."<form action=entry.php  method=post>"
  ."..................<br><br> <input type=text  name=tz><br><br><br>"
  ."<input  type=Submit >"
    
 ."</form>"
." </center>";
   



entry.php
Код

  session_start();
$name="guest";

$tz1 = $HTTP_POST_VARS['tz'];
unset($tz);
  if (empty($tz1) || ($_SESSION['flag2']==0))       // if tz is empty
  {
     echo"<h1>.........</h1>";
     include "index.html";
  }
  else
  {
         if(  (is_numeric($tz1)==TRUE ) )
         {    
     $_SESSION['flag2'] = 0;
            if (!mysql_pconnect($dbhost,$dbuname,$dbpass))  echo " Unable to conect ";
                mysql_select_db($dbname) or die ("Unable to select database "); 

                 $sql="select * from  p  WHERE    sTZ ='$tz1' ";
             $st=mysql_query( $sql);
                    if($st){                   
                           $stud=mysql_fetch_array($st);
                         
                           if($stud) {
                               $sTZ=$stud['sTZ'];
                               $name=$stud['n'];
                               $vote=$stud['v'];
                               $entry=$stud['e'];
                         echo" ! .... ".$name."   <br>";
                         echo"<center>"  
                        . "<form action=exitbye.php  method=post><br>"
                ."<input  type=radio name=lots  value=1>  îôìâä1<br>"
                    ."<input  type=radio  name=lots  value=2>  îôìâä2<br>"
                    ."<input  type=radio name=lots value=3>  îôìâä3<br>"
                         ."<br><br><input type=submit value=Submit>"        
                    ."</form>"            
                ."</center>";
                       }
                       else "<p>Error:".mysql_error()."</p>";
                       exit();
                    }    
         else{
             echo "<p>Error:".mysql_error()."</p>";
             exit();
                          }
                    
            mysql_close(); 
              }
         else   //  if tz is not numeric
            {
               echo"<h1>........</h1>";
               include "index.php";
             }
  }


Код

$lots = $HTTP_POST_VARS['lots'];
 if(isset($_REQUEST['lots'])){
   $lots=$_REQUEST['lots'];

if($lots==1){print "1111";}
if($lots==2){print "2222";}
if($lots==3){print "3333";} }

unset($tz);
unset($lots);


в принципе это весь код
  Вверх
PARROT
Дата 8.12.2005, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Elina , пора уже зарегистрироваться на Нашем Форуме. Это займет минуту, зато преимуществ море!


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Elina
Дата 8.12.2005, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 8.12.2005

Репутация: нет
Всего: нет



уже зарегистрировалась

хотела бы получить мануал по php ,где он находиться

изменила include на header("Location: index.php");

спасибо
PM MAIL   Вверх
PARROT
Дата 8.12.2005, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



тут книги и мануалы: http://forum.vingrad.ru/index.php?showtopic=34297


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
starmaster
Дата 8.12.2005, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 29.3.2004

Репутация: нет
Всего: нет



К слову: есть ещё такая замечательная технология Remote Scripting, одна из замечательнейших её сторон - это то, что она не захламляет history, что в вашем случае и нужно.
PM MAIL WWW ICQ   Вверх
Elina
Дата 8.12.2005, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 8.12.2005

Репутация: нет
Всего: нет



почитала про кэширование

но
Код

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

не помогает ,не знаю и что делать
Добавлено @ 15:17
можно пример с Remote Scripting
PM MAIL   Вверх
Dave
Дата 8.12.2005, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 17.6.2004

Репутация: -1
Всего: 1



Elina,
Вот пример с запрещенной страницей:
page1.php
Код

<?php
session_start();
$_SESSION['flag'] = 1;
print_r($_SESSION);

?>
<a href="page2.php">page2</a>


page2.php
Код

<?
session_start();
if (!isset($_SESSION['flag'])) {
    //echo 'suda nelza';
    header ('location:page1.php');
}

echo"<center>"  
. "<form action=\"page3\"  method=post><br>"
."<input  type=radio name=lots  value=1 checked>  1<br>"
."<input  type=radio  name=lots  value=2> 2<br>"
."<input  type=radio name=lots value=3>  3<br>"
."<br><br><input type=submit value=Submit>"                            
."</form>"            
."</center>";

?>


page3.php
Код

<?
session_start();

echo 'Lot:'.$_POST['lots'];
unset($_SESSION['flag']);
session_destroy();
?>


в первом скрипте заводим флаг в сессии,
во втором, показываем форму если есть флаг, иначе редирект на первый скрипт.
в третьем : показываем результат и уничтожаем флаг.


PM MAIL   Вверх
Elina
Дата 8.12.2005, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 8.12.2005

Репутация: нет
Всего: нет



попробывала вот что происходит

из page1.php попадаю(при верном пароле) на page2.php потом на page3.php
на этом голосование должно быть законченно но

потом возвращаюсь из page3.php на page2.php потом на page1.php

и вот когда дохожу до page1.php нет возможности перейти на page2.php (даже при верном пароле )

даёт возращаться назад но не вперёд

наверное где то теряется значение
PM MAIL   Вверх
Dave
Дата 8.12.2005, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 17.6.2004

Репутация: -1
Всего: 1



Цитата(Elina @ 8.12.2005, 16:44)
даёт возращаться назад но не вперёд

наверное где то теряется значение

Я так понимаю скрипт ты изменила.
если что не получается то выводи все данные на экран и смотри в каком месте значение теряется и почему теряется.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0719 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.