OVH Cloud OVH Cloud

[Debutant, voire neuneu] - Formulaires, session...

13 réponses
Avatar
Pascale
Bonjour à tous,

Je tiens d'abord à demander votre indulgence si j'emploie des termes
impropres ou approximatifs, mais bon, je débute...
Je suis en train (d'essayer) de programmer un site qui comporte la
possiblité de saisir des informations (textes et photos) via un formulaire
html tout ce qu'il y a de classique. Une fois le formulaire rempli,
l'utilisateur clique sur VISUALISER et peut voir l'ensemble de ce qu'il a
saisi photo(s) comprise(s). À ce moment là, un certain nombre de contrôles
sur les données saisies sont effectués : si quelque chose ne va pas, on ne
visualise pas la demande, l'utilisateur retourne automatiquement au
formulaire (avec un message d'erreur qui explique ce qui ne convient pas).
Lorsqu'il visualise ce qu'il a saisi (ce qui signifie qu'il n'y a pas
d'anomalie), il peut soit valider sa demande, soit la corriger (retour au
formulaire), soit abandonner.
Lorsque les personnes reviennent au formulaire, quelle qu'en soit la
raison, je souhaite qu'elles retrouvent ce qu'elles ont saisi (afin de
n'avoir pas tout à retaper). À noter que, par souci de simplicité, je leur
permets d'uploader une deuxième photo si elles n'en ont chargé qu'une, mais
je ne leur laisse pas la possiblité de modifier la ou les photos déjà
chargées, je me contente de les afficher en petit, juste comme un rappel.
Lorsque l'utilisateur clique sur Valider, après avoir visualisé sa demande,
un certain nombre de traitements sont effectués dont l'entrée des données
dans des tables (MySQL).
En un mot, il y a des informations qui circulent, qu'on doit pouvoir passer
d'un programme à l'autre (saisie initiale, saisie de correction,
visualisation, validation).
Ayant jusque là un hébergeur qui fonctionnait avec register_globals sur ON,
j'utilisais le peu que je savais utiliser, à savoir les commandes
session_register, session_unregister, session_is_registered... et autres
commandes qui ne marchent que lorsque register_globals est à ON. Tout
allait bien...
MAIS, comme c'était prévisible, mon hébergeur bien aimé va passer à
register_globals OFF d'ici quelques semaines. Je peux certes forcer cela et
rester à ON, mais je sais que c'est mal (:

J'ai lu partout qu'il vaut mieux travailler avec des variables
$_SESSION['machin'] (de même que j'utilise $_POST['machin']... mais j'ai
essayé, je n'y arrive tout bonnement pas, alors que mes programmes
marchaient très bien « à l'ancienne mode ». Je me pose des zillions de
questions : je déclare déjà $machin=$_POST['machin'], qu'est-ce que je mets
comme nom de variable (la même chose ? une autre ?) avec
$_SESSION['machin']... Bref  J'EN FAIS QUOI, DE CES TRUCS ? et comment je
trouve l'équivalent de session_unregister('machin') qui me permet de
déverrouiller la variable $machin et d'enregistrer éventuellement autre
chose à la place, mais sans l'effacer si ce n'est pas nécessaire...? Bref,
des questions de neuneu, sûrement mal posées, mais bon, j'ai beau éplucher
http://fr3.php.net/manual/fr/ref.session.php et autres sites instructifs,
j'ai l'impression d'errer dans un maquis sans fin et plein de
traquenards...

Mais je me dis qu'au fond, je n'ai peut-être pas besoin d'utiliser des
sessions pour faire ce que je veux faire (à noter que ces données n'ont
rien de secret-défense), après tout, les sessions ne sont pas faites
VRAIMENT pour ça ? Si ? Et si non, comment faire les choses, disons, le
plus proprement possible, mais sans bâtir une usine à gaz ?

--
Pascale

3 réponses

1 2
Avatar
Pascale
Florian Sinatra écrivait
news::

Non, pas du tout. Mais il semblait que tu n'avais strictement rien
compris, que tu paniquais, que tout était sans-dessus-dessous, et que
tout était à faire. Ce n'est plus le cas.


J'étais agacée et un chouïa découragée, mais bon, ça peut toujours
s'arranger (:

Avant PHP, je ne programmais quasiment pas. Je n'ai aucune formation
dans ce domaine, si ce n'est en autodidacte.


Bon, tout espoir n'est pas perdu pour moi, alors (:

 Mais je trouve le manuel
plutôt clair... enfin je te comprends. Mais inutile de t'inquiéter à
propos de tes connaissances. Elles ne peuvent que croître, et elles le
feront.


Je me réfère beaucoup au manuel moi aussi, et finalement, je l'aime bien,
mais quand même, je le trouve parfois ésotérique.

Donc si le seul problème tient aux sessions, il n'a *absolument* aucun
rapport (à ma connaissance) avec register_globals. Peut-être que ton
nouvel hébergement est plus restrictif, ou que sais-je. Mais les
sessions sont indépendantes de register_globals (quel lien pourrait-il
y avoir ?). Normalement, le seul changement à faire à ton script est
d'aller chercher tes variables venant de l'extérieur dans $_GET ou
$_POST. Quels sont les changements que l'hébergeur a apporté ? A-t-il
changé de version de PHP ? Si oui, de laquelle pour laquelle ?


Lorsque j'ai démarré en PHP, je l'ai fait principalement avec le site
phpdebutant puis, inévitablement avec le manuel. Je me suis aussi appuyée
largement sur le travail fait par mon compagnon (ex-informaticien) pour un
autre site. Mais j'avais lu ici et là qu'il valait mieux travaille comme si
register_globals était à off. C'est ce que j'ai essayé de faire : pas de
problème avec les formulaires, $_POST et $_FILE sont très faciles à
utiliser. Lorsque j'ai eu besoin de sessions, je me suis dit que je
n'allais pas travailler comme mon compagnon, qui lui, utilise des
session_register, session_unregister, etc, mais le tableau $_SESSION,
puisque cela est plus sûr et vivement conseillé. Je ne suis toujours pas
parvenue à passer des variables d'un programme à un autre avec $_SESSION,
et mon compagnon, de son côté, avait essayé lui aussi, sans plus de succès
(contrairement à moi, il n'est pas, loin de là, un débutant en
programmation, même s'il est venu assez récemment au PHP).
Comme chez notre hébergeur register_globals était à on, je ne me suis pas
inquiétée, mais il vient de nous informer qu'il passait à off... Certes, je
peux mettre un .htaccess qui force register_globals à on, mais ce n'est pas
très satisfaisant.
Donc voilà pourquoi les sessions me laissent toujours perplexe (:

Mon objectif actuel est de refaire de A jusqu'à Z un site existant devenu
vieillot : peu ergonomique (à la fois pour l'administrateur et pour les
utilisateurs), trop peu automatisé dans son fonctionnement et
accessoirement assez laid. Il date de quelques années et avait été
programmé en PHP3 par une autre personne. Ayant à administrer ce site dans
sa forme actuelle, je sais donc clairement quel résultat je veux obtenir,
même s'il me faut souvent un papier et un crayon dès qu'il s'agit du détail
de certains traitements.

--
Pascale

Avatar
Florian Sinatra
Prends une page page1.php :
<?php
session_start();
$_SESSION["foo"] = "bar";
echo "<a href='page2.php'>Page 2</a>";
?>

et une page page2.php :
<?php
session_start();
echo $_SESSION["foo"];
?>

En cliquant sur le lien, tu arriveras sur la page2 qui affichera
$_SESSION["foo"].

Qu'est-ce qui ne fonctionne pas ?

Je te donne encore trois liens, peut-être y trouveras-tu ton bonheur.
* http://php.developpez.com/cours/sessions/
* http://cyberzoide.developpez.com/php4/faqsession/
*
http://www.phpfrance.com/tutoriaux/index.php/2005/07/20/34-les-sessions-php
Avatar
Pascale
Florian Sinatra écrivait
news::

Qu'est-ce qui ne fonctionne pas ?


Ahhhem... Les orties fraîches sont pas faciles à trouver, en cette
saison... Je peux me flageller avec des orties sèches ?...........

<tête couverte de cendres>
Je me suis encore fait piéger par cette fichue histoire de variable incluse
dans l'URL... En effet, lorsque, après la visualisation des données
entrées, je reviens au formulaire de départ, grâce à une URL du type
http://www.monbeaudomaine.net/monbeauprogramme.php?modif=1 Et bien
évidemment, je n'avais pas écrit $modif=$_GET['modif'];
Donc, par défaut, je revenais au formulaire vierge de départ.
Euh... oui, je sais, c'est affligeant, mais bon, hein...
</tête couverte de cendres>

Cela dit, je sens que j'ai encore du boulot pour, d'une part modifier tous
mes programmes, d'autre part, comprendre les subtilités des sessions, au
moins celles qui me sont utiles...
Il est probable que je reviendrai poser des questions ici... Ne me frappez
pas tout de suite, SVP (:

--
Pascale

1 2