Данные сеанса не отображаются

У меня есть страница, которая проверяет, установлен ли $_POST, а затем сохраняет данные сообщения в переменную сеанса $_SESSION. Когда страница перенаправляется, она не отображает данные сеанса на странице результатов. Когда я делаю print_r($_SESSION), он показывает пустой массив. На каждой странице я добавляю файл include.php. На этой странице я делаю следующее

<?php session_start(); ?>

index.php

<?php 

 include 'assets/include.php';
 require 'assets/dbinfo.php';

 $query = "SELECT * FROM Authors ORDER BY first_name";
 $resultObj = $connection->query($query);

 if (count($_POST))
 {
   $_SESSION['formPostData'] = $_POST;
   header('Location: final.php');
 }

?>

<!DOCTYPE html>
<html>
    <head>
        <title>PHP Fundamentals</title>
        <link href = "assets/styles.css" rel = "stylesheet" type = "text/css" />
    </head>
    <body>
        <div id = "Header">
            <img src = "assets/Dickens_Gurney_head.jpg" border = "0" alt = "">
            <h2>
                Join Our Literature Mailing List
            </h2>
        </div>        
        <div id = "Body">
            <form method = "post" action = "index.php" >
                <div>
                    <label>Favorite Author:</label>
                    <select name = "author">
                        <?php while($row = $resultObj->fetch_assoc()): ?>
                            <option value = "<?=$row['id']?>"><?=$row['first_name']?> <?=$row['last_name']?></option>
                        <?php endWhile; ?>
                    </select>
                </div>      
                <div class = "multiple">
                    <label>Favorite Century:</label>
                    17th Century <input type = "checkbox" name = "century[]" value = "17th">
                    18th Century <input type = "checkbox" name = "century[]" value = "18th"> 
                    19th Century <input type = "checkbox" name = "century[]" value = "19th"> 
                </div>
                <div>
                    <label>Comments:</label>
                    <textarea name = "comments"></textarea>
                </div>
                <div>
                    <label>Name:</label>
                    <input type = "text" name = "name" />
                </div>
                <div>
                    <label>E-mail Address:</label>
                    <input type = "text" name = "email" />
                </div>
                <div  class = "multiple">
                    <label>Receive Newsletter:</label>
                    Yes <input type = "radio" name = "newsletter" value = "yes">
                    No <input type = "radio" name = "newsletter" value = "no">
                </div>
                <div class = "multiple">
                    <label>&nbsp;</label>
                    <input type = "submit" name = "submit" value = "Join Mailing List">
                </div>
            </form>
        </div>
    </body>
</html>

финал.php

<?php

include 'assets/include.php';

echo "<pre>";
print_r($_SESSION);
echo "</pre>";

$postedData = $_SESSION['formPostData'];

?>

<!DOCTYPE html>
<html>
    <head>
        <title>PHP Fundamentals</title>
        <link href = "assets/styles.css" rel = "stylesheet" type = "text/css" />
    </head>
    <body>
        <div id = "Header">
            <img src = "assets/Dickens_Gurney_head.jpg" border = "0" alt = "">
            <h2>
                Mailing List Information
            </h2>
        </div>        
        <div id = "Body">
            <div>
                <label>Favorite Author:</label> 
                <span><?=$postedData['author']?>&nbsp; </span>
            </div>      
            <div>
                <label>Favorite Century:</label>
                <span><?=$postedData['century']?>&nbsp; </span>
            </div>
            <div>
                <label>Comments:</label>
                <span><?=$postedData['comments']?>&nbsp; </span>
            </div>
            <div>
                <label>Name:</label>
                <span><?=$postedData['name']?>&nbsp; </span>
            </div>
            <div>
                <label>E-mail Address:</label>
                <span><?=$postedData['email']?>&nbsp; </span>
            </div>
            <div>
                <label>Receive Newsletter:</label>
                <span><?=$postedData['newsletter']?>&nbsp; </span>
            </div>
        </div>
    </body>
</html>

Я бы изменил include 'assets/include.php' на require_once 'assets/include.php' У вас, вероятно, есть куча ошибок уровня уведомлений для этого ... / вызов запуска сеанса несколько раз.

ArtisticPhoenix 19.07.2019 06:16
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
119
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Похоже, ваша форма публикуется непосредственно в final.php, поэтому вы должны иметь доступ к опубликованным данным в $_POST.

Он не будет установлен для сеанса, потому что код в index.php не запущен (форма отправляется в другой файл)

Если вы хотите установить данные в сеанс, вы должны сделать это в final.php.

Я больше не включаю session_start(); в index.php, но final.php по-прежнему показывает пустой массив. Массив ( [formPostData] => Массив ( ) )

jesse 19.07.2019 06:29

Вы должны получать данные публикации из $_POST вот так: $postedData = $_POST

atymic 19.07.2019 06:30

Спасибо атимик. Я обновил свой код в вопросе, чтобы отразить рабочую копию.

jesse 19.07.2019 08:50

В соответствии с вашим действием формы, которое находится в index.php, ваша форма публикуется в final.php, где вы не устанавливаете никаких данных сеанса, поэтому ваши данные сеанса представляют собой пустой массив.

Если вы хотите, чтобы ваши данные сеанса печатались в final.php, поэтому вам нужно изменить действие формы на index.php после настройки данных сеанса, которые вам нужно перенаправить на final.php Затем вы получите данные сеанса.

Нужно ли устанавливать данные сеанса в final.php или index.php для печати в final.php?

jesse 19.07.2019 08:29

Вам нужно установить сеанс в final.php

Suraj15689 19.07.2019 11:19

Другие вопросы по теме