Новая и улучшенная проблема перенаправления сессий PHP - PullRequest
0 голосов
/ 13 июня 2011

Я работаю над многостраничной формой.Вот схема его функции:

Часть первая: Собрать поля ввода формы -> Отправляет пользователя на файл Transfer.php, используя метод POST

Часть вторая: перевод.php |Проверяет, что ничего не пусто -> Сохраняет переменные $ _POST в $ _SESSION -> Перенаправляет пользователя на следующую часть формы.

Часть третья: Вторая часть формы |Поддерживает сессию из первой формы -> Добавляет новые переменные в сессию -> Готовит все, чтобы получить по электронной почте

Я читал, как использование заголовка (location:) и т. Д. Сбрасывает информацию о сеансе.Люди, кажется, находят решение, чтобы проверить форму на странице, а затем направить пользователя с помощью поля действия формы.


Проблема, с которой я столкнулся: ГдеФорма перенаправления основана на вводе из формы.На самом деле существует 8 потенциальных форм, в которые пользователь может быть перенаправлен в зависимости от того, что он вводит во время первой формы.

Я пробовал методы SID, и переменные SESSION отображаются как зарегистрированные, но все ониdisplay & NULL.

Вопрос: Как получить переменные сеанса для отображения на следующей странице?


Вот код, который у меня есть до сих пор:

Часть 1: форма

<form method="POST" action="transfer.php">
... all my form elements with proper names
</form>

Часть 2: Transfer.php

<?php
session_start();
$_SESSION = $_POST;

// project_type would store an url for the corresponding 2nd part of the form
$redirect = $_SESSION['project_type'];
$redirect .= "?phpSESSID=".session_id();
header("Location: $redirect");
exit();
?>

Часть 3: следующая форма

<?php
// initialize a session
session_start();
echo "<p>Session ID: " . session_id() . "</p>";                     
echo "<p>Vardump Set Off Page: ";
var_dump($_SESSION);
echo "</p>";
?>

<form method="...... the rest of the form etc

Я знаю, что пост заставляет его правильно перенести .php.Я знаю, что содержимое $ _POST копируется в $ _SESSION правильно.Я знаю, что где-то во время перенаправления переменные сеанса устанавливаются в & NULL

Вот как выглядит var_dump после перенаправления пользователя во 2-ю часть формы.

array(18) { ["project_type"]=> &NULL ["project_timeframe"]=> &NULL ["company_name"]=> &NULL ["company_address"]=> &NULL ["company_city"]=> &NULL ["company_state"]=> &NULL ["company_zipcode"]=> &NULL ["company_phone"]=> &NULL ["company_website"]=> &NULL ["contact_name"]=> &NULL ["contact_title"]=> &NULL ["contact_email"]=> &NULL ["contact_phone"]=> &NULL ["contact_primary_phone_type"]=> &NULL ["contact_phone_alt"]=> &NULL ["contact_alternate_phone_type"]=> &NULL ["contact_preferences"]=> &NULL ["contact_preferences_additional"]=> &NULL } 

1 Ответ

0 голосов
/ 13 июня 2011

Просто используйте session_start(); вверху страницы.
Нет необходимости в session_id($_GET['phpSESSID']);, если вы не переходите на другой сеанс.

РЕДАКТИРОВАТЬ:

Также в transfer.php вы просто хотите, чтобы все сообщения были сохранены в сеансе, поэтому просто сделайте:

session_start();
$_SESSION = $_POST;

ТАКЖЕ: удалите эту строку: session_write_close();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...