2015-04-17 2 views
0

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

<?php 
session_start(); // starting the session 

if (isset($_POST['Submit'])) { 

    $_SESSION['breakdowndate'] = $_POST['breakdowndate']; 
    $_SESSION['policyinception'] = $_POST['policyinception']; 
    $_SESSION['customername'] = $_GET['customername']; 
    $_SESSION['customersurname'] = $_GET['customersurname']; 
    $_SESSION['covertype'] = $_POST['covertype']; 
    $_SESSION['vehiclemake'] = $_POST['vehiclemake']; 
    $_SESSION['vehiclemodel'] = $_POST['vehiclemodel']; 
    $_SESSION['vehiclereg'] = $_POST['vehiclereg']; 
    $_SESSION['vehicleage'] = $_POST['vehicleage']; 
    $_SESSION['excess'] = $_POST['excess']; 
    $_SESSION['mileage'] = $_POST['mileage']; 
    $_SESSION['paid'] = $_POST['paid']; 
    $_SESSION['HSRS'] = $_POST['HSRS']; 
    $_SESSION['fault'] = $_POST['fault']; 
    $_SESSION['garage'] = $_POST['garage']; 
    $_SESSION['telephone'] = $_POST['telephone']; 

    } 

?> 

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

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

+0

Вы храните все данные POST в сеансе? –

+0

Данные сохраняются в базе данных после завершения формы, но форма состоит из двух этапов. на первом этапе происходит захват всей информации, которую вы можете увидеть в приведенном выше примере. Затем пользователь переходит к форме, требующей добавления дополнительной информации для клиента, хотя это был лучший способ сделать это? Возможно, я ошибаюсь. Если есть другой способ добавить информацию к только что созданному клиенту, тогда я открыт для предложений. – DGTLSS

+0

- это следующая страница, на которую вы отправляетесь при отправке этой формы? если это так, если действие этой формы должно перейти на эту страницу. Я хотел бы иметь доступ к значениям сообщений на следующей странице. вы можете получить его, просто сделав следующее, например: '' ** Обратите внимание, что ваш хост должен поддержка 'php short tags' ** else просто используйте' ' – SuperDJ

ответ

1

Если он не работает, попробуйте отладки.

Если это сохранение POST, то этого делать не так много.

Установить session.cookie.secure в true. Вы можете установить session.cookie_lifetime.

Что касается безопасности, подумайте, есть ли у вас что-то стоящее для защиты. Имеет ли значение, если кто-то получает cookie сессии посетителя? Если нет, забудьте об этом.

session_set_cookie_params(0, '/', '', true, false); 
session_start(); 

error_reporting(E_ALL); // debug 

if (isset($_POST['Submit'])) { 
    $_SESSION['breakdowndate'] = $_POST['breakdowndate']; 
    $_SESSION['policyinception'] = $_POST['policyinception']; 
    $_SESSION['customername'] = $_GET['customername']; 
    $_SESSION['customersurname'] = $_GET['customersurname']; 
    $_SESSION['covertype'] = $_POST['covertype']; 
    $_SESSION['vehiclemake'] = $_POST['vehiclemake']; 
    $_SESSION['vehiclemodel'] = $_POST['vehiclemodel']; 
    $_SESSION['vehiclereg'] = $_POST['vehiclereg']; 
    $_SESSION['vehicleage'] = $_POST['vehicleage']; 
    $_SESSION['excess'] = $_POST['excess']; 
    $_SESSION['mileage'] = $_POST['mileage']; 
    $_SESSION['paid'] = $_POST['paid']; 
    $_SESSION['HSRS'] = $_POST['HSRS']; 
    $_SESSION['fault'] = $_POST['fault']; 
    $_SESSION['garage'] = $_POST['garage']; 
    $_SESSION['telephone'] = $_POST['telephone']; 
} else { 
    echo '<h3>Session Not Saved</h3>'; 
} 

echo htmlentities(var_export($_REQUEST, true)); // debug 
echo htmlentities(var_export($_SESSION, true)); // debug 

DEBUG

Он должен работать - если нет, то испытание и отладка.

Показать все Предупреждения.

Проверьте $_SESSION после установки.

Оформить заявку.

$_REQUEST содержит $_COOKIE, который должен содержать cookie SESSION.

0

Нам нужно восстановить идентификатор. Попробуй это. (Извините за плохой английский)

<?php 
session_start(); // starting the session 

if (isset($_POST['Submit'])) { 
    session_regenerate_id(); 
    $_SESSION['breakdowndate'] = $_POST['breakdowndate']; 
    $_SESSION['policyinception'] = $_POST['policyinception']; 
    $_SESSION['customername'] = $_GET['customername']; 
    $_SESSION['customersurname'] = $_GET['customersurname']; 
    $_SESSION['covertype'] = $_POST['covertype']; 
    $_SESSION['vehiclemake'] = $_POST['vehiclemake']; 
    $_SESSION['vehiclemodel'] = $_POST['vehiclemodel']; 
    $_SESSION['vehiclereg'] = $_POST['vehiclereg']; 
    $_SESSION['vehicleage'] = $_POST['vehicleage']; 
    $_SESSION['excess'] = $_POST['excess']; 
    $_SESSION['mileage'] = $_POST['mileage']; 
    $_SESSION['paid'] = $_POST['paid']; 
    $_SESSION['HSRS'] = $_POST['HSRS']; 
    $_SESSION['fault'] = $_POST['fault']; 
    $_SESSION['garage'] = $_POST['garage']; 
    $_SESSION['telephone'] = $_POST['telephone']; 
    session_write_close(); 
    } 

?> 
0

Сохраните переменные в массиве и петлях, как показано ниже. Вы можете использовать session_start(); на следующей странице, и доступ к ним:

<?php 
     session_start(); // starting the session 
     $sessionItems = array('breakdowndate','policyinception','customername'...'telephone'); 

     if (isset($_POST['Submit'])) { 
      foreach($sessionItems as $item) { 
       $_SESSION[$item] = $_POST[$item]; 
      } 
      } 

     ?> 
+0

Это, по-видимому, (субъективно) лучший способ написания того же кода. Как он решает проблему, о которой спрашивает вопрос? – Quentin