Tengo problemas para mantener el valor de la variable a través de varias páginas (en realidad a través de la misma página pero a través de muchas actualizaciones).
La primera vez que accedo a una nueva página, el valor de la variable se conserva y puede usarse con echo, pero después de actualizar la página, ese valor no se puede reutilizar, muestra un error de que la variable no tiene ningún valor.
Estoy haciendo una aplicación web para chatear en php.
Quiero mostrar el nombre del usuario (remitente) en cada página (cada página de envío del mensaje). Entonces estoy usando el código

<?php 
$writtervar = $_POST['writter'];
echo $writtervar;
?> 

Estoy recibiendo información a través de una página separada, el código es

<form action="ddd.php" method="post">
     Enter your name   <input type="text" name="writter" >
     <input type="submit"  id="submit" value="Press" >
</form>
1
HN Singh 26 dic. 2016 a las 20:55

3 respuestas

La mejor respuesta

HTTP no tiene estado. La matriz $_POST se completa cuando un usuario realiza una solicitud. Si desea tener acceso a un valor en las vistas web, lea setcookie o sesiones.

Si no desea utilizar cookies, deberá volver a enviar sus parámetros en cada solicitud (probablemente ocultada de alguna manera). O envíe un identificador en cada solicitud y mantenga su servidor de información (de todos modos, puede hacerlo con sesiones php). Pero hacer eso no es conveniente ni seguro.

2
yivi 26 dic. 2016 a las 18:18

Puedes configurar una cookie

$value = 'something from somewhere';
setcookie("TestCookie", $value);

Y obtener el valor:

echo $_COOKIE["TestCookie"];

También puedes usar sesiones:

session_start();

// Set session variables
$_SESSION["TestSession"] = $value;

// Get session
echo $_SESSION["TestSession"];

Será mejor que use un marco como Laravel que puede ayudarlo a manejar sesiones, formularios, redirigir con valores, etc.

Puede encontrar la documentación en php.net

0
Samuel 26 dic. 2016 a las 18:20

Puede usar sesión . basado en su código puede probar esto: En la página de inicio (ddd.php) debe establecer los valores de su sesión.

<?php
  session_start();
  $_SESSION["writer"] = $_POST["writter"];
?>
...

En otra página use los valores de su sesión como, por ejemplo:

<?php
  session_start();
  ...
  echo $_SESSION["writer"];
?>

Tenga en cuenta que desarmar y destruir su sesión al final de su trabajo.

<?php
    // remove all session variables
    session_unset();

    // destroy the session
    session_destroy(); 
?>
1
Yousef Rahimy Akhondzadeh 26 dic. 2016 a las 18:15