web-dev-qa-db-fra.com

Stockage des données de formulaire en tant que variable de session

Je me demandais donc s'il serait possible de stocker des données provenant d'un formulaire en tant que variable de session.

Voici ce que j'ai jusqu'à présent, mais je ne sais pas quoi mettre pour l'action de formulaire.

Merci d'avoir regardé!

<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>
18
Kevin Johnson

Pour utiliser des variables de session, il est nécessaire de démarrer la session en utilisant le session_start, cela vous permettra de stocker vos données dans la variable globale $_SESSION d'une manière persistante.

donc votre code ressemblera finalement à ceci:

<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>

pour le rendre facile à utiliser et pour éviter de l'oublier à nouveau, vous pouvez créer un session_file.php qui sera inclus dans tous vos codes et lancera la session pour vous

session_start.php

 <?php
   session_start();
 ?> 

et ensuite l'inclure où vous voulez:

<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'];
 } 
?> 

c'est le moyen le plus portable et le plus facile à entretenir à l'avenir.

autres remarques

  • si vous utilisez Apache version 2 ou plus, faites attention au lieu de
    <?
    pour ouvrir les balises php, utilisez <?php, sinon votre code ne sera pas interprété

  • les noms de variables en php sont sensibles à la casse au lieu d'écrire $ _session, écrivez $ _SESSION en majuscules

bon travail !

35

C'est parfaitement bien et cela fonctionnera. Mais pour utiliser les sessions, vous devez mettre session_start(); sur la première ligne du code php. Donc en gros

<?php
session_start();

//rest of stuff

?>
7
kjones1876

Oui c'est possible. kizzie a raison avec la session_start(); devant aller en premier.

une autre observation que j'ai faite est que vous devez filtrer vos données de formulaire en utilisant:

strip_tags($value);

et/ou

stripslashes($value);
2
Todd Moses

Vous pouvez résoudre ce problème en utilisant ce code:

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

Ainsi, vous obtenez la variable à partir d'un formulaire GET, vous stockerez dans le $_SESSION['whatever'] variable une seule fois lorsque $_GET['variable from which you get']est défini et s'il est vide $_SESSION['something'] stockera l'ancien paramètre

1
giuseppe