2010-09-24 14 views
15

Me preguntaba si sería posible almacenar datos procedentes de un formulario como una variable de sesión.Almacenar datos de formulario como una variable de sesión

Heres lo que tengo hasta ahora, pero no sé qué poner para la acción de formulario.

¡Gracias por mirar!

<strong>Test Form</strong> 
<form action="" method"post"> 
    <input type="text" name="picturenum"/> 
    <input type="submit" name="Submit" value="Submit!" /> 
</form> 

<? 
    if (isset($_POST['Submit'])) { 
     $_session['picturenum'] = $_POST['picturenum']; 
    } 
?> 

<strong><? echo $_session['picturenum'];?></strong> 
+3

Respuesta

7

Eso está perfectamente bien y funcionará. Pero para usar las sesiones, debe poner session_start(); en la primera línea del código php. Básicamente,

<?php 
session_start(); 

//rest of stuff 

?> 
+0

# en acción recargará el actual página que es lo que quiere que haga para que se ejecute php. –

2

Sí, esto es posible. Kizzie está en lo correcto con el session_start(); teniendo que ir primero.

otra observación que hice es que se necesita para filtrar los datos del formulario usando:

strip_tags($value); 

y/o

stripslashes($value); 
+0

¿Básicamente esto solo desinfecta los datos? –

+1

-1 Esta es una respuesta totalmente inútil. 'stripslashes()' es inútil ahora que las comillas mágicas están desactivadas de manera predeterminada (y también esto "desinsectará" tus datos, en todo caso). Además, ¿por qué querría hacer 'strip_tags()' (o 'stripslashes()') en la información que guarda en las sesiones? – NullUserException

+1

No se puede garantizar que las comillas mágicas estén desactivadas. He trabajado con demasiados clientes que usaban hosting que no tenían control y comillas mágicas. Es una buena práctica no asumir nada. ¿Qué pasa si el código se mueve o el host cambia la configuración, etc. ... –

28

Para utilizar variables de sesión es necesario para iniciar la sesión utilizando el session_start función, esto le permitirá almacenar sus datos en la variable global $_SESSION de una manera persistente.

lo que el código finalmente se parece a esto:

<strong>Test Form</strong> 
<form action="" method"post"> 
<input type="text" name="picturenum"/> 
<input type="submit" name="Submit" value="Submit!" /> 
</form> 

<?php 

// starting the session 
session_start(); 


if (isset($_POST['Submit'])) { 
$_SESSION['picturenum'] = $_POST['picturenum']; 
} 
?> 

<strong><?php echo $_SESSION['picturenum'];?></strong> 

para que sea fácil de usar y de evitar el olvido de nuevo, se puede crear un session_file.php que se incluye en todos sus códigos y comenzará la la sesión para que

session_start.php

<?php 
    session_start(); 
?> 

y luego incluirlo RCEst siempre que lo desee:

<strong>Test Form</strong> 
<form action="" method"post"> 
<input type="text" name="picturenum"/> 
<input type="submit" name="Submit" value="Submit!" /> 
</form> 

<?php 

// including the session file 
require_once("session_start.php"); 


if (isset($_POST['Submit'])) { 
$_SESSION['picturenum'] = $_POST['picturenum']; 
} 
?> 

esa es la forma más portátil y fácil de mantener en el futuro. otros

observaciones

  • si está utilizando Apache versión 2 o más, ten cuidado en lugar de
    <?
    para abrir las etiquetas de PHP, utilice <?php, de lo contrario su código no será interpretado

  • nombres de variables en php son mayúsculas y minúsculas en vez de escribir $ _session, escribir $ _SESSION en mayúscula ers

buen trabajo!

+0

¿Es posible recuperar valores de entrada utilizando su id en lugar de nombre? – Amyunimus

+0

pregunta tonta. Si comienza una sesión y luego lo hace (accidentalmente) otra 'session_start();' limpia todos los datos de la primera sesión? – BeNice

+1

@OldMauiMan, invocar 'session_start();' (accidentalmente) dos veces en el mismo código no hará nada incorrecto. La única forma de eliminar todos los datos es usar 'session_destroy();' –

1

Puede resolver este problema utilizando este código:

if(!empty($_GET['variable from which you get'])) 
{ 
$_SESSION['something']= $_GET['variable from which you get']; 
} 

para que pueda obtener la variable de un formulario GET, se almacenará en la variable $ _SESSION [ 'lo que sea'] sólo una vez cuando $ _GET [' variable de la que obtiene '] está establecida y si está vacía $ _SESSION [' algo '] almacenará el parámetro anterior

Cuestiones relacionadas