Как отобразить php Session при использовании объектов - PullRequest
0 голосов
/ 11 октября 2011

Я не могу понять это и попробовал это несколькими способами.

У меня есть многостраничная форма, где form_1.php после отправки отправляет информацию в БД и перенаправляет на form_2.php.

Я начинаю сеанс на form_1.php с:

<?PHP
if ($_POST)
{
    session_start();

    foreach ($_POST as $field => $value)
    {
        $_SESSION['formdata'][$field] = $value; 
    }
}
.....code that sends info to db and then redirects page to form_2.php
?>

Когда я добираюсь до form_2.php, у меня есть:

<?php

session_start();

if (!empty($_POST)) {

    // Used for later to determine result
    $success = $error = false;

    // Object syntax looks better and is easier to use than arrays to me
    $post = new stdClass;

    // Usually there would be much more validation and filtering, but this
    // will work for now.
    foreach ($_POST as $key => $val)
        $post->$key = trim(strip_tags($_POST[$key]));

....more code that loads dompdf and sends a pdf to email
?>

Если я использую что-то вроде:

<?php echo $post->Name; ?>
<?php echo $post->Address; ?>
<?php echo $post->City; ?>
<?php echo $post->State; ?>

Где я хочу отображать данные, я ничего не получаю.

Есть ли способ написать это, что эквивалентно:

<?php echo $_SESSION['Name'] ?>

Это потому, что я использую объекты?

Если я вытираю все из form_2.php и просто печатаю сессию, используя:

<?php 
 session_start(); 
 Print_r ($_SESSION);
 ?> 

Я вижу нужные данные:

Array ( [sfm_from_iframe] => 0 [formdata] => Array ( [sfm_form_submitted] => yes [Employer_Zip] => 33333 [Injury_type] => Array ( [0] => Head [1] => Left Shoulder [2] => Chest ) [FirstName] => test [LastName] => tester [Address] => 1212 myaddy [City] => city1 [State] => Maine [Zip] => 55555 [Country] => AntiguaAndBarbuda [Phone] => 555-555-5555 [Email] => me@mydomain.com [Employer_Name] => my employer [Employer_Address] => 1212 empaddy [Employer_City] => city2 [Employer_State] => Georgia [DBA_Carrier] => mycarrier [Employer_Phone] => 333-333-3333 [Accident_Date] => 10-03-2011 [Message] => asefsafsadf sadf asdfsdafsadf [yes_no] => yes [SocialSecurity] => 333-33-3333 [Submit_x] => 57 [Submit_y] => 13 ) ) 

Дополнительные примечания, которые могут быть полезны ...

Когда я просто использую POST для form_2.php и использую

<?php echo $post->Name; ?> 
<?php echo $post->Address; ?> 
<?php echo $post->City; ?> 

все показывается и работает нормально, но только используя POST непосредственно к этой странице. Я не использую редирект, потому что думаю, что что-то напортачил с записью, как отобразить объект SESSION.

Есть мысли?

Ответы [ 2 ]

0 голосов
/ 11 октября 2011

Вы смешиваете код, предоставляемый вашей OOP Framework (возможно, какой-то CMS), и вы пытаетесь использовать $ post, когда данных там нет.

$ _ SESSION используется для хранения данных между изменениями страницы. Вы можете в своем form2.php использовать следующий код для объединения всех вместе:

foreach ($_POST as $key => $val){
        $post->$key = trim(strip_tags($_POST[$key]));
}
foreach($_SESSION['formdata'] as $key => $val){
        $post->$key = trim(strip_tags($_POST[$key]));
}

Затем, когда вы проверяете свой объект $ post, вы должны иметь там свои данные.

Удачи

0 голосов
/ 11 октября 2011

Вы перенаправляете так:

form1 -submit-> файл, который вставляется в DB -redirect-> form2

Если это так, то вы должны знать, что данные POST неперенаправляется на третью страницу.Трудно дать хороший ответ без дополнительной информации, но, возможно, вам следует включить скрипт вставки БД в верхнюю часть формы 2 и переслать форму 1 непосредственно в форму 2 или сохранить данные POST в своем сеансе, чтобы затем получить их в верхней части формы 2.

Надеюсь, это поможет:)

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