Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/04/2006, 01h28   #1
Membre éclairé
 
Avatar de nicotine002
 
Inscription : décembre 2005
Messages : 577
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 577
Points : 345
Points : 345
Par défaut [Sécurité] info utilisateur

Bonsoir,
Voilà je me suis mis à php depuis environ 1 semaine, avant j'étais plutot du coté forum JAVA. J'ai donc installé mon ptit Apache, php et mysql.Et voilà que je me pose quelques questions:

1.Via un formulaire je recupere les info utilisateur d'inscription que je met dans mysql. Comment faire, pour quand il se log, il puisse arriver sur une sorte de page perso?

2.Comment faire également pour que l 'utilisateur inscrit, voit à sa prochaine visite, son login et mot de passe déjà inscrit dans les fields? Je pense tout de suite aux cookies mais est ce le seul moyen?

3. Qu'est ce qu'une session?j'ai recherché un peu mais je n'ai presque rien compris.

Voilà,comme vous pouvez le voir, je débute vraiment
Merci d'avance.
__________________
Pourquoi ca marche jamais?Vive le café!
nicotine002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 02h06   #2
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
Par défaut Re: info utilisateur

Salut,

et bienvenue dans la communauté PHP

pour les sessions, je te conseille un peu de lecture ici : http://php.developpez.com/faq/?page=sessions
en gros elle permettent la persistance des données entre les différentes pages de ton site.

pour mémoriser le login et le mot de passe > oui il faut utiliser les cookies >
http://php.developpez.com/faq/?page=...divers_cookies

pour créer un script d'authentification, je te conseille de faire une recherche sur le forum, il y a pas mal de threads qui décrivent comment faire...
en gros, tu fais un formulaire login/mdp avec un bouton submit, tu récupères les valeurs que tu compares avec celles contenues dans ta base de données, et si ça colle, tu crées une variable de sessions permettant de mémoriser l'authentification de ton utilisateur. Pour personnaliser la page d'accueil de cet utilisateur, tu fais une requete MySQL afin de récupérer les informations de cet utilisateur (par rapport à son ID par exemple).

bon dév
__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 09h32   #3
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut et bienvenue parmi nous !

En gros, une session est un peu comme un cookie sur le serveur mais dont la durée de vie, bien plus courte, est limitée à la présence de l'utilisateur sur le site.

Pour utiliser les sessions, il faut propager un identifiant de session entre le serveur et le visiteur. Cela se fait généralement au moyen de cookies pour ne pas rendre les liens tout laids (les cookies permettent de transmettre le SID sans le mettre dans les liens).

Le cookie permet de se souvenir de paramètres d'une page sur l'autre. Il a une durée de vie limitée.
La session aussi.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 12h19   #4
Membre éclairé
 
Avatar de nicotine002
 
Inscription : décembre 2005
Messages : 577
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 577
Points : 345
Points : 345
Merci pour vos réponses
Alors si j'ai bien tout suivi, je crée des cookies pour que l'utilisateur voit son login et mdp toujours présent lorsqu'il revient sur la page, et pour personaliser la page de cet utilisateur, je fais une session(dans laquelle je récupere ses infos dans ma base). Mais n'est il pas préférable de se servir des cookies afin d'y mettre les info utilisateur plutot que dans la base?A moins que le cookies soit moins fiable par rapport à sa durée de vie, le fait qu on puisse le supprimer, ou bien encore que le navigateur ne l 'accepte pas.
Enfin bref je vais regarder les liens et thread, encore merci.
__________________
Pourquoi ca marche jamais?Vive le café!
nicotine002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 13h08   #5
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Fais le maximum avec les sessions, c'est plus sûr. méfie-toi de tout ce qui vient de l'utilisateur (les cookies en font partie). Ne lésine jamais sur les vérifications côté serveur.
Les sessions sont la seule chose que tu n'as pas vraiment besoin de vérifier en permanence, puisqu'elles restent sur le serveur. Si tu fais attention à ce que tu mets dans une variable de session, tu n'as pas besoin de vérifier par la suite (contrairement aux cookies).

Exemple : tu ne peux pas faire confiance à un cookie pour savoir si l'utilisateur est loggué sous tel pseudo ou sous tel autre. Par contre, tu peux faire confiance à une session pour ça.
En gros, la règle est simple : stocker soit le minimum possible dans le cookie, soit des informations non sensibles qui sont uniquement destinées à être affichées dans le navigateur (économie de bande passante ou de requêtes, si tu veux).
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 14h36   #6
Membre éclairé
 
Avatar de nicotine002
 
Inscription : décembre 2005
Messages : 577
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 577
Points : 345
Points : 345
Ok bien reçu J'ai déjà commencé a faire les sesion, ca à l'ai de bien fonctionner.Mais je vais surment pas tarder a me reposer quelques questions je penseDonc je laisse le post ouvert.
Merci encore.
__________________
Pourquoi ca marche jamais?Vive le café!
nicotine002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2006, 00h09   #7
Membre éclairé
 
Avatar de nicotine002
 
Inscription : décembre 2005
Messages : 577
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 577
Points : 345
Points : 345
Bonsoir, me revoilà
Voilà mon problème, je desire classé mes données par ordre alphabétique et par conséquent, creer 26 liens(A,B,C...).Je voudrais donc eviter de creer 26 pages php
Page 1: Choix de la lettre
Page 2:Affichage du resultat

Je voudrais savoir comment envoyer le choix de la lettre de la page 1 à la page 2?
Merci d'avance
__________________
Pourquoi ca marche jamais?Vive le café!
nicotine002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2006, 00h12   #8
Membre éclairé
 
Avatar de nicotine002
 
Inscription : décembre 2005
Messages : 577
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 577
Points : 345
Points : 345
Rofl, j'aurais peut-être du refaire un poste.
__________________
Pourquoi ca marche jamais?Vive le café!
nicotine002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2006, 00h16   #9
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
pour envoyer une donnée d'une page à une autre, le plus simple reste le formulaire HTML.

Dans ton cas, tu va créer un formulaire qui va contenir :
- une listbox nommé choix_lettre contenant 26 éléments (tes lettres)
- un bouton valider

puis, dans ta page de récupération de la valeur, tu la récupérera comme suit :

$_GET['choix_lettre'] ou $_POST['choix_lettre'], suivant la facon dont tu fait transiter les données via le formulaire (post ou get)

courage à toi
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2006, 00h17   #10
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
tu peux envoyer l'identifiant par l'URL et boucler dans un switch pour afficher la réponse:

sommaire.html
Code :
1
2
3
4
 
// a toi d'imaginer pour afficher ceci par itération
<a href="reponse.php?id=a">a</a>
<a href="reponse.php?id=b">b</a>
reponse.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<?php
$id=(!isset($_GET['id']))?(''):($_GET['id']);
 
// tu pourrais inclure ici une page sommaire de tous les mots commencant par a par exemple à la place du echo
switch ($id) {
   case "a":
      echo "la lettre demandée est $id";
      break; 
   case "b":
      echo "la lettre demandée est $id";
      break;
   default:
      echo "aucune lettre demandée !";
      break;
}
?>
voilà, presque comme en java, on pourrait dire que la superglobale $_GET est l'équivalent de l'interface HttpServletRequest dans J2EE...

__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2006, 00h34   #11
Membre éclairé
 
Avatar de nicotine002
 
Inscription : décembre 2005
Messages : 577
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 577
Points : 345
Points : 345
Merci pour vos réponse,
En fait je voulais éviter que l'utilisateur soit obligé de cliquer sur un bouton pour valider(ils deviennent de plus en plus faignant ceux là )Mais merci qaund même titoumimi.

Et pour ska_root, je pense que c'est ca qu'il me faut.Je comprend à peu prés le fonctionnement mais que signifie ceci?:
Ca veut dire que l'on va envoyer la variable "a" par la methode GET à réponse.php?

Et pour le :
Code :
1
2
 
$id=(!isset($_GET['id']))?(''):($_GET['id']);
alors là...
Bon le GET['id'], ca va
Mais le reste ca me fait trop penser à du C et ca me donne mal à la tête, pourrais tu m'expliquer stp?
__________________
Pourquoi ca marche jamais?Vive le café!
nicotine002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2006, 00h41   #12
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
tu parles de C, mais ça existe aussi dans JAVA...

Citation:
$variable = (condition) ? (valeur) : (defaut);
Code :
1
2
 
$id=(!isset($_GET['id']))?(''):($_GET['id']);
est équivalent à :
Code :
1
2
3
4
5
6
7
8
9
 
// si $_GET['id'] n'existe pas
if (!isset($_GET['id'])) {
   // defaut
   $id='';
}else {
   // si $_GET['id'] existe
   $id=$_GET['id'];
}
ta variable est donc initialisée (même si $_GET['id'] n'existe pas) comme ça, la fonction switch() ne peut pas générer une éventuelle erreur...


pour le $_GET, oui c'est bien ça... sauf que je m'étais planté, c'est pas reponse.html mais reponse.php (j'ai réédité mon post...)

bon dév
__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2006, 00h50   #13
Membre éclairé
 
Avatar de nicotine002
 
Inscription : décembre 2005
Messages : 577
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 577
Points : 345
Points : 345
Ah ça me revient,j'avais perdu l'habitude de faire ce genre de code en java(c'est bien dommage).
Je vais essayer avec ce ce genre de code:
Code :
1
2
3
4
5
6
7
8
9
 
<?
for($i=0;$i<26;$i++){
?>
<a href="listclass.php?id= <? echo "$i" ?>">a</a>
<?
 
}
?>
Et dans listclass.php, si i=0 donc "A" etc...
Je suppose qu'il y a plus simple mais se fait tard
__________________
Pourquoi ca marche jamais?Vive le café!
nicotine002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2006, 00h53   #14
Membre éclairé
 
Avatar de nicotine002
 
Inscription : décembre 2005
Messages : 577
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 577
Points : 345
Points : 345
Enfin sauf pour le :
Ca va me marquer des "a" 26 fois mais bon, je vais peut être regardé du coté du code ascii
__________________
Pourquoi ca marche jamais?Vive le café!
nicotine002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2006, 00h58   #15
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
heuu oui, ça risque d'être un peu lourd avec l'ascii mais bon...

moi je ferai plutôt :
Code :
1
2
3
4
5
6
 
$arLettres = array ('a','b','c','d','e',etc....);
 
foreach ($arLettres as $lettre) {
   echo "<a href=\"listclass.php?id=$lettre\">$lettre</a>";
}
ou alors si tu veux a tout prix gérer avec les chiffres après :
Code :
1
2
3
4
5
6
 
$arLettres = array ('1'=>'a','2'=>'b','3'=>'c','4'=>'d','5'=>'e',etc....);
 
foreach ($arLettres as $key => $lettre) {
   echo "<a href=\"listclass.php?id=$key\">$lettre</a>";
}
aprés toujours pareil, les goûts les couleurs

__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2006, 01h08   #16
Membre éclairé
 
Avatar de nicotine002
 
Inscription : décembre 2005
Messages : 577
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 577
Points : 345
Points : 345
Rofl, je viens de trouver quelque chose d'assez correct avec l'ascii:
Code :
1
2
3
4
5
6
7
8
9
10
11
 
<?
$a=0;
for($i=0;$i<26;$i++){
$a=$i+65;
?>
<a href="listclass.php?id= <? echo "&#$a" ?>"><? echo"&#$a"?></a>
<?
 
}
?>
En fait le &#65 correspond au "A" ,le 66 au "B", etc...


Mais je pense que je vais peut-être prendre ton premier code.Enfin je verrais bien.
En tout cas merci pour tout, bonne soirée et surtout Bonne nuit
__________________
Pourquoi ca marche jamais?Vive le café!
nicotine002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2006, 01h58   #17
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
entièrement d'accord avec toi, c'est beaucoup plus simple que l'utilisation d'un tableau...

Code :
1
2
3
4
5
6
 
$a=0;
for($i=0;$i<26;$i++) {
   $a=$i+65;
   echo "<a href=\"listclass.php?id=$i\">&#$a</a>";
}
bonne nuit à toi aussi...
__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2006, 12h14   #18
Membre éclairé
 
Avatar de nicotine002
 
Inscription : décembre 2005
Messages : 577
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 577
Points : 345
Points : 345
Désolé de reposter alors que c'était résolu mais ca me met un problème avec ma requête SQL.
Code :
1
2
 
$result = mysql_query("SELECT * FROM argus WHERE nom LIKE '$id%'");
Normalement ceci devrait fonctionner, mais non...
J'ai fait un echo de $id, ce qui me renvoie bien la lettre, par exemple "D".
J'ai également modifier $id juste avant ma requête:
Et là ca fonctionne, ce qui voudrait dire que $id ne vaut pas "D" alors que quand je fais son eccho, ca me renvoie "D".
Enfin bref je comprend pas
__________________
Pourquoi ca marche jamais?Vive le café!
nicotine002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2006, 12h18   #19
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
tu as essayé de taper cette requête directement dans phpMyAdmin ?
__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2006, 12h23   #20
Membre éclairé
 
Avatar de nicotine002
 
Inscription : décembre 2005
Messages : 577
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 577
Points : 345
Points : 345
Je ne peux pas avec la varible non?
Sinon sans la variable, par exemple :
Code :
1
2
3
 
SELECT * FROM argus WHERE nom LIKE 'D%'
'
ca fonctionne
__________________
Pourquoi ca marche jamais?Vive le café!
nicotine002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h45.


 
 
 
 
Partenaires

Hébergement Web