Doubt when using SESSION to store data

Asked

Viewed 35 times

0

I’m trying to display n names from a list, I’m making use of Sessions to make this possible. When I use Session through the form page the elements are added n times to the array, however when I use it by the class is not returned me the expected result, I wonder where I am missing.

Thanks in advance.

php form.

<?php
        include "Livro.class.php";  

        if($_POST){
            $livro = new Livro;

            // SESSÃO
            if(empty( $_SESSION['books'])){
                $_SESSION['books'] = [];
            }

            array_push($_SESSION['books'], [$_POST['name']]);

            // CLASSE
            $livro->add($_POST['name']);


            // OUTPUT
            echo "Da classe: <br>";
            var_dump($livro->livros);
            echo "<br>";
            echo "Da sessão: <br>";
            var_dump($_SESSION['books']);
        }
?>

<form action="#" method="POST">
    <label for="name">Name:</label>
    <input type="text" name="name" id="name">

    <button type="submit">Enviar</button>
</form>

Livro.class.php

<?php

class Livro 
{
    public $livros;

    function __construct(){
        session_start(); 

        if(empty($_SESSION['livros']))
            $_SESSION['livros'] = [];

        $this->livros = $_SESSION['livros'];
    }

    function add($nome){
        array_push($this->livros, [$nome]);
    }

}

1 answer

3

You are not updating the value of Session in your class, see the correction in the "add"

<?php

class Livro 
{
    public $livros;

    function __construct(){
        session_start(); 

        if(empty($_SESSION['livros']))
            $_SESSION['livros'] = [];

        $this->livros = $_SESSION['livros'];
    }

    function add($nome){
        array_push($this->livros, [$nome]);

        $_SESSION['livros'] = $this->livros;
    }

}

?>

Browser other questions tagged

You are not signed in. Login or sign up in order to post.