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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Правильная работа с сессиями
 
 автор: tyoma_first   (03.02.2009 в 19:32)   письмо автору
 
 

Пытаюсь разобраться как работать с ними правильно, вроде бы все понятно. Но вот с одним примером у меня никак не получится...
В общем есть форма у которой action эта же форма.
<?php
    
if(session_id() == '') {
        
session_start();
         
$_SESSION["FormSent"] = time();
        
$delta = -1;
        echo 
"Session and delta set<br>session id ".session_id()."<br>";
    }else{
        
$delta time() - $_SESSION["FormSent"];
        echo 
"delta set<br>";
    }
?>

<html>
<body>
<form name="test" method="post" action="<?php echo $HTTP_SERVER_VARS["PHP_SELF"?>">
<input type="text" name="test_field"><input type="submit" name="submit">
</form>
</body>
</html>

Насколько я понимаю после сабмита формы должна выполняться часть кода после else (ведь сессия была создана при первом показе страницы), но не выполняется. Можете подсказать почему?

  Ответить  
 
 автор: Trianon   (03.02.2009 в 19:39)   письмо автору
 
   для: tyoma_first   (03.02.2009 в 19:32)
 

$HTTP_SERVER_VARS замените на $_SERVER

во второй ветви (перед обращением к $_SESSION[] нет вызова session_start()


session_start() это вовсе не создание сессии.
Это включение модуля поддержки сессий.

  Ответить  
 
 автор: tyoma_first   (03.02.2009 в 20:10)   письмо автору
 
   для: Trianon   (03.02.2009 в 19:39)
 

Сделал как подсказали - не помогло :(

>session_start() это вовсе не создание сессии.
>Это включение модуля поддержки сессий.
А как тогда сессию создать? И почему у меня не переходит на вторую ветвь?

  Ответить  
 
 автор: sim5   (03.02.2009 в 20:13)   письмо автору
 
   для: tyoma_first   (03.02.2009 в 20:10)
 

<?php 
session_start
();
if(
$_SESSION["FormSent"]) { 
  
$_SESSION["FormSent"] = time(); 
  
$delta = -1
  echo 
"Session and delta set<br>session id ".session_id()."<br>"
} else { 
  
$delta time() - $_SESSION["FormSent"]; 
  echo 
"delta set<br>"

?>

  Ответить  
 
 автор: tyoma_first   (03.02.2009 в 20:28)   письмо автору
 
   для: sim5   (03.02.2009 в 20:13)
 

И такое я пробовал - не помогает, все равно после сабмита формы выполняется первая часть выражения...

  Ответить  
 
 автор: Trianon   (03.02.2009 в 21:07)   письмо автору
 
   для: tyoma_first   (03.02.2009 в 20:28)
 

<form name="test" method="post" action="<?php echo $_SERVER["PHP_SELF"] .'?'.SID ?>">

  Ответить  
 
 автор: Trianon   (03.02.2009 в 21:07)   письмо автору
 
   для: sim5   (03.02.2009 в 20:13)
 

if(!isset($_SESSION['FormSent']))

  Ответить  
 
 автор: sim5   (04.02.2009 в 03:46)   письмо автору
 
   для: Trianon   (03.02.2009 в 21:07)
 

Ну да. В общем понятно - работаем с сессией, стартуем/продолжаем ее, а проверяем установленные в ней переменные. Trianon, чтобы мы без вас делали, "санитар" вы наш. :)) Хорошо, когда подправят, если сам упустишь.

  Ответить  
Rambler's Top100
вверх

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