Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

289
Vistas
Session lost after form submit in wordpress

The session I set is lost after the form is submitted.

I had built the session class to set new session, unset and so on. In function.php of wordpress template.

function.php

if (!session_id()) {
    session_start();
}
include get_template_directory() . "/custom/session.php";

Session.php

class session {
    function __construct() {

    }

    function set_flashdata($name, $value) {
        $_SESSION[$name] = $value;
    }

    function flashdata($name) {
        if (isset($_SESSION[$name])) {
            $str = $_SESSION[$name];
            return $str;
        } else {
            return FALSE;
        }
    }

    function userdata($name) {
        if (isset($_SESSION[$name])) {
            return $_SESSION[$name];
        } else {
            return FALSE;
        }
    }

    function set_userdata($name, $value) {
        $_SESSION[$name] = $value;
    }

    function unset_userdata($name) {
        if (isset($_SESSION[$name])) {
            unset($_SESSION[$name]);
        }
    }
}

I try to set session as :

<?php 
    $sess = new session();
    $sess->set_userdata('sess_name',"some value");
?>
<form action="get_permalink(212);">
    //input buttons
</form>

After submit the form it goes to the permalink(212). Then I tried.

<?php
    $sess = new session();
    $value = $sess->userdata('sess_name');
    var_dump($value);      //returns false. That means session is lost after form submit. Why?
?>
about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

You have to call always session_start() for each request.

The mission of session_start() is:

  • Creates a new session
  • Restart an existing session

That means, if you have created a session, and you don't call to the method session_start(), the variable $_SESSION is not going to be fulfilled.

Except: If in your php.ini you have set the option session.auto_start to 1, then, in that case it is not needed to call the session_start() because the variable $_SESSION is fulfilled implicitly.

about 4 years ago · Santiago Trujillo Denunciar

0

You need to move session start/resume into your Session's constructor.

Like so:

class session
{
    function __construct()
    {
        if (! session_id()) {
            session_start();
        }
    }

Another thing to mention, every time you'll do new Session you'll be getting an object of the same functionality working with same global variable $_SESSION.

You don't need more than one $session object, it would be a good time to look into Singleton pattern.

about 4 years ago · Santiago Trujillo Denunciar

0

You need to use wordpress global variable for condition that session is set or not something like :

global $session;
if (!session_id()) {
    session_start();
}
include get_template_directory() . "/custom/session.php";
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda