les sessions

yopla26
Invité n'ayant pas de compte PHPfrance

27 sept. 2005, 12:20

Bonjour,

j'ai besoin qu'on m'éclaire un peu sur les sessions.

Si j'ai bien compris :

- on peut garder des informations sur plusieurs pages avant de les enregistrer dans une base de donnée ?
exemple : un formulaire d'enregistrement qui à 3 pages
- donc si je n'abuse on peut rentrer des informations dans un formulaire et par exemple sur ce meme formulaire uploader un fichier ki va recharger le formulaire tout en gardant les champs déjà rempli et en ayant la possibilité de sélectionner le fichier uploader dans un menu déroulant puis de sauvegarder tout ceci dans une base de donnée ?

yopla26
Invité n'ayant pas de compte PHPfrance

27 sept. 2005, 15:12

c'est pas francais ?? peut ete que je me suis mal expliqué ?

Mammouth du PHP | 568 Messages

27 sept. 2005, 15:16

Personnellement, j'ai pas tout compris à la fin, mais ne perds pas patience, quelqu'un comprendra mieux que moi et te répondra ;)
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

yopla26
Invité n'ayant pas de compte PHPfrance

27 sept. 2005, 15:24

Mon formulaire se comporte en 2 parties : la 1 iere partie avec les champs qui vont etre enregistrés dans la base de données tels que :

Nom (text)
Prenom (text)
Mail (text)
Description (text)
Choix photo (menu déroulant)

dans la 2 ieme partie du formulaire il y a le champ upload

Ma question était de savoir si quand j'upload une photo, mes paramètres déjà rentré dans la 1 iere parti du formulaire vont se réafficher apré avoir uploader mon image. En meme temps ca rafraichira le menu déroulant photo ou je verrai ma nouvelle image.

Donc je me demandais si les sessions permettait ce genre de chose ? (garder les données inscrites apré upload de la photo)

Mammouth du PHP | 568 Messages

27 sept. 2005, 15:32

Tant que tu ne fais pas un session_unset, ou que tu fermes ton navigateur, les sessions variables sont conservés... Donc tu peux faire n'importe quel traitement...
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

27 sept. 2005, 16:14

Bonjour,
Utiliser une session n'est pas trés compliqué mais il faut d'abord comprendre comment ça marche et comment utiliser une session.
Je vais t'expliquer:
...
- on peut garder des informations sur plusieurs pages avant de les enregistrer dans une base de donnée ?
exemple : un formulaire d'enregistrement qui à 3 pages
...
C'est juste, sauf que quand tu parles de "pages" tu sous-entends "session"
Parce que c'est Kif-Kif, une session est un enchainement de pages consultées par l'utilisateur.
Quand les pages d'une session ont besoin de partager des données, ces dernières sont stockées dans le fichier "session"
Eh oui, il y a un fichier "session" de créé côté serveur pour chaque utilisateur qui consulte le lot de pages de la session

Ce qu'il faut savoir:
Pour créer une session de pages, il suffit d'indiquer au début de toutes les pages PHP concernées la fonction "session_start();"
Toute page commençant par session_start() rappelle une session existante ou crée une nouvelle session pour un utilisateur.

Quand une session existe, un fichier de session est créé côté serveur dans le répertoire /tmp de la racine du serveur apache
Ce fichier porte comme nom un n° de code aléatoire dit SID qui identifie l'utilisateur distant.
Ce fichier contient les données de la session utilisables par toutes les pages PHP de la session, on les appelle : des variables super-globales et sont notées en PHp par : $_SESSION["variable1"] ...

Quand on veut créer une variable de session dans une page X on écrit:
Page X.php
session_start();
$_SESSION["ma_variable"] = "valeur";
Quand on veut afficher par exemple cette variable super-globale dans une autre page Y dans le cadre de la même session on écrite:
Page Y.php
session_start();
echo $_SESSION["ma_variable"];
Si l'on veut voir le fichier de session : aller sur le dossier /tmp de la racine d'apache et éditer le fichier ayant le SID de la session ciblée
Pour connaitre le SID d'une session, appeler la fonction session_id().
Exemple : dans la page X.php, ajouter la ligne suivante:
echo session_id(); après session_start();

Et maintenant un petit exercice simple :

Page 1 d'entrée : accueil.htm (c'est une simple page HTML) qui affiche un formulaire de connexion au site

Code : Tout sélectionner

<h3>Connectez-vous</h2> <form method=post action=connexion.php> <p>Nom <input name=nom> Mot de passe <input type=password name=mdp> <input type=submit value=ok> </form>
Page 2 : connexion.php : programme qui valide les données du formulaire et autorise ou non l'accès au site
<?
//démarrer le session
session_start();

//Traiter le formulaire
$nom = isset($_POST["nom"]) ? $_POST["nom"] : null;
$mdp= isset($_POST["mdp"]) ? $_POST["mdp"] : null;

//Autoriser l'utilisateur
if ($nom == "admin" && $mdp == "admin"){
             //utilisateur connu : mémoriser son identité dans la session
             $_SESSION["autorisé"] = true;
             $_SESSION["nom"] = "admin";
             $_SESSION["mdp"] = "admin";
             $_SESSION["adresse"] = "72000 Le mans";
            //A ce niveau l'accès est autorisé alors afficher la page suivante
             header ("Location: page_privée.php");
             
}
//ici l'accès est refusé alors rester sur la page de connexion
else echo "Saisissez un nom et mot de passe valides!";
?>
Page 3 : page_privée.php: programme qui vérifie si une session valide est active et affiche le contenu privatisé du site
<?
//démarrer la session
session_start();

//pour savoir si l'utilisateur qui a affiché cette page est déjà autorisé 
//il suffit de vérifier si les variables le concernant son identité sont bien 
//créées dans la session et notament notre variable "autorisé" (voir page précédente)
//On teste alors cette variable : si elle existe (isset) et si elle contient true
if (isset($_SESSION["autorisé"]) && $_SESSION["autorisé"]==true) {
    //Dans ce cas l'utilisateur a été bel et bien identifié donc il est autorisé à voir cette page
    //Afficher le contenu de la page
    //On a besoin de rappeler le nom de l'utilisateur autorisé
    $nom = $_SESSION["nom"];
    echo "<marquee width=100%><h1>Bienvenue $nom</h1></marquee>";
    //etc. vous pouvez ajouter ici le contenu HTML de cette page
     

}
//La variable de session "autorisé" est absente ou incorrecte : l'accès est refusé
else echo "Cette page est privée, vous devez être autorisé!";
?>
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

yopla26
Invité n'ayant pas de compte PHPfrance

27 sept. 2005, 17:36

jvé étudié tout ceci et dès que c'est bon je publie mon ptit script pour expliquer comment jé fé et aussi pour que ca marche :)