Sessions en php

Da21

Membre confirmé
18 Février 2004
60
0
40
J'ai deux programmes un qui envoi un formulaire :

<?php
session_start();
$SID = session_name().'='.session_id();
?>
<html><body><?php
echo" <form action=\"2.php?".SID."\" method=POST>";
echo" <input type=\"test\" name=\"Nom\"><input type=SUBMIT></form>"; ?></body></html>

et l'autre fichier (2.php) qui reçoit les variables :
<?php
session_start();
echo " test : ".$_SESSION['Nom'];
?>

Le problème c'est que je ne comprend pas pouquoi il n'affiche pas la valeur $_SESSION['Nom']
 
Je ne comprends pas très bien ton exemple, mais d'après moi, tu devrais plutôt utiliser:
Bloc de code:
echo "Test: " . $_POST['Nom']
Ensuite si tu veux enregistrer la valeur du champ nom (du formulaire) dans la session:
Bloc de code:
$_SESSION['nom'] = $_POST['Nom']

A+
 
Ensuite si tu veux enregistrer la valeur du champ nom (du formulaire) dans la session:
Bloc de code:
$_SESSION['nom'] = $_POST['Nom']

Merci c'est ce qu'il me fallais (je pensais qui le faisait automatiquement ou plus rapidement)

Mais maintenant si j'ai des boutons radio sur le premier fichier, et que je vais au deuxieme fichier, je decide a l'aide d'une correction automatique de revenir sur le 1er programme (1er page -> 2eme page -> 1ere page), comment puis-je retrouver le radio cauché au depart sachant qu'il n'y a pas de value.
J'ai le même probleme avec <select> ?
 
Da21 a dit:
Mais maintenant si j'ai des boutons radio sur le premier fichier, et que je vais au deuxieme fichier, je decide a l'aide d'une correction automatique de revenir sur le 1er programme (1er page -> 2eme page -> 1ere page), comment puis-je retrouver le radio cauché au depart sachant qu'il n'y a pas de value.
J'ai le même probleme avec <select> ?
A ta place, à l'arrivée dans la deuxième page, j'enregistrerais toutes les valeurs du formulaire:

Bloc de code:
$_SESSION['frmData'] = $_POST;

Ensuite tu fais ton test (si j'ai bien compris) et le visiteur se fait renvoyer sur la première page... Donc sur ta première page, il te suffit de tester les valeurs enregistrées dans la session. Exemple:

Le visiteur arrive, il remplit le formulaire => submit. Enregistrement des valeurs et validation du formulaire. Si il y a une erreur, redirection sur la première page où tu y testeras:
Bloc de code:
if(isset($_SESSION['frmData']['ton_btnRadio']) && $_SESSION['frmData']['ton_btnRadio'] == "value_du_btnRadio") {
    echo "<input type=\"radio\" name=\"ton_btnRadio\" value="value_du_btnRadio" checked=\"checked\"/>";
} else {
    echo "<input type=\"radio\" name=\"ton_btnRadio\" value="value_du_btnRadio" />";
}

Il y a beaucoup solutions différentes, à toi de voir celle qui te convient le mieux.
 
Cela viendrait peut etre d'une autre erreur de ma part : es-ce que je peux renvoyer SID avec la fonction header() :heu: (c'est la fonction que j'utilise pour le retour automatique)?
Esce qu'il existe une autre fonction plus approprié?
 
dans mon programme la fonction isset() détecte toujours la présence de variable car je créer mes bouton ou champs text par des fonction (j'ai une classe formulaire).
Donc je test avec if(!$value)

Cependant ce n'est pas le problème mais un autre :mad:
Pour revenir au problème initiale les tests que j'effectuais marchaient en fait très bien mais je me suis rendu compte qu'il me tronquai des valeurs
cela revien à ceci : si j'envoi un tableau contenant des chaines de caractères contenant elle meme des caractère ' ou " il me tronque les caractères à la suite.
si j'utilise la fonction addslashes() il me m'affiche ma chaine +" \\" et il me tronque la suite

ex : chaine = "je ne comprend pas l'erreur"
sans addslashes : chaine = le ne comprend pas l
avec addslashes : chaine = le ne comprend pas l\\

en fait le problème est du au tableau parce que je n'ai aucun problème avec les champs text
 
Alors tu n'as pas trop le choix, je ne sais pas comment ta classe formulaire est construite, mais je pense que tu dois avoir une méthode pour setter la valeur "setValue($mixed)" et c'est la que ça coince. Normalement ça doit fonctionner avec le addslashes, mais si tu n'as pas d'autre idée, jette un oeil sur la fonction ereg_replace. Tu pourras facilement changer tes quotes "'" en "####" et l'inverse quand tu voudras les réutilisés...

A+
 
Ce test là
Bloc de code:
if(isset($_SESSION['frmData']['ton_btnRadio'])

n'est possible dans mon programme que si j'ai des bouton radio dans le cas contraire (champs text ou autre) il fau que je face if($_SESSION['var'])
ce qui n'est pas utilisable avec les radios

Je ne peux donc pas jumelé les 2 tests :(
Et comme je ne sais pas si j'ai des boutons radio ou des champs text a gérer (tout l'interet de ce qui est évolutif)
je me retrouve bloqué
 
Puisque tu utilises une classe pour gérer ton formulaire, pour n'ajouterais-tu pas une propriété "type" et après tout roule:

Bloc de code:
<?php

class Form {

    var $type;
    var $name;
    var $value;
    ...


   function getType()
   {
        return $this->type;
   }

}
?>

Enfin, je pense que tu vois comment...
 
En fait mon problème était autre : l'ensemble radio n'envoi pas le nom de la variable ap un submit si aucune case n'est cochées. Comme mon test est dynamique il ne détectait pas d'erreur. J'ai donc resou mon problème par l'ajout d'un HIDDDEN de même nom que l'ensemble radio. La variable est ecrasé si un radio est checked et ducou je n'est plus qu'a rajouter un test. OUFF ! :rateau:
 
fissunix a dit:
Alors tu n'as pas trop le choix, je ne sais pas comment ta classe formulaire est construite, mais je pense que tu dois avoir une méthode pour setter la valeur "setValue($mixed)" et c'est la que ça coince. Normalement ça doit fonctionner avec le addslashes, mais si tu n'as pas d'autre idée, jette un oeil sur la fonction ereg_replace. Tu pourras facilement changer tes quotes "'" en "####" et l'inverse quand tu voudras les réutilisés...

A+

Je me suis rensigné et la fonction str_replace() est plus préférable que la fonction ereg_replace() mais merci du conseil :up: