IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème de session, la suite.


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 93
    Points : 49
    Points
    49
    Par défaut Problème de session, la suite.
    bonjour à tous,

    J'ai pas mal avancé sur mes soucis de sessions et la première partie marche à merveille.

    1- je vérifie via un formulaire si j'ai un utilisateur dans ma base
    2- Si oui il ouvre la page d'ajout d'une fiche (avec la session), si NON il renvoie vers la page d'inscription.

    Donc les premières étapes fonctionnent bien.

    Maintenant je voudrai faire évoluer le truc.
    1 - Garder en mémoire l'id de la personne qui a posté la fiche (récupérer la session dans la base?)
    2 - Afficher lors d'une consultation - sans session - qui a fait la fiche (à priori pas de difficulté là dessus)

    Merci de votre aide, car je ne sais pas par où commencer en fait.

    1 - modifier la table de ma base de fiche pour inclure la donnée de session?
    2 - juste faire une fonction pour récupérer les éléments stockés?

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    C'est pas hyper clair pour moi ton problème, mais ça ressemble a un cas assez classique de création d'enregistrements associés à un utilisateur...

    Alors le numéro de session, tu ne devrais pas avoir à l'utiliser autrement que pour faire une identification automatique quand la personne se connecte...
    Pour ton association fiche/user, il faut tout simplement prévoir dans ta table Fiche un champs Utilisateur, qui sera une clé étrangère vers la table des utilisateurs... De cette façon, chaque fiche sera associé de façon unique à un utilisateur...

    Dans ton programme, tu dois instancier une variable de session qui contiendra l'identifiant de l'utilisateur connecté :

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $r = mysql_query('select * from user where login_user like "'.mysql_escape_string($login).'" and pass_user like "'.md5($pass).'" limit 1') or die(mysql_error());
    if(mysql_num_rows($r))
       $_SESSION['usr'] = $id_user;
    De cette façon, tu auras a tout moment l'identifiant de l'utilisateur connecté dans la variable globale $_SESSION['usr']...

    Quand tu enregistre une fiche, il faudra alors juste insérer le contenu de cette variable dans le champs utilisateur de ta fiche prévu a cet effet !

    Et quand quelqun visite une fiche, il suffit alors de tester si l'identifiant utilisateur associé à la fiche correspond à la valeur contenue dans ta session ou non...
    Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    ok, je vois le concept, par contre tu donnes quoi comme valeur à ceci?

    Fiche un champs Utilisateur, qui sera une clé étrangère vers la table des utilisateurs...

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    Je me posais la question, il n'y a pas d'insert dans la base de ces sessions?

    Je vois que l'on fait un sélect mais au préalable il aurait fallu l'insérer non?

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Justement, tes fiches doivent être associés a des utilisateurs... Donc dans la table ou tu stocks tes fiches, tu dois indiquer pour chaque enregistrement (chaque fiche) l'identifiant de l'utilisateur qui l'a créé...

    Plus concrètement, tu dois normalement avoir une table utilisateur, dans laquelle tu stock identifiants, mot de passe et données personnelles de chaques utilisateurs (arrete moi si c'est pas le cas, mais tu vas avoir un soucis sans ça). Chaque enregistrement utilisateur doit avoir une clé unique (primaire) permettant de les différentier (son login, ou mieux, son identifiant numérique si tu l'as prévu). C'est cette référence unique que tu dois insérer dans chaque fiche pour savoir quel utilisateur a créé la fiche.

    Ensuite, l'insert, normalement, c'est un autre problème (création de compte) puisque à ce stade, tu est déjà censé avoir un utilisateur enregistré et identifié pour qu'il puisse créer une fiche.
    Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    J'ai bien ajouter un champ "login_user" dans ma table info utilisateur.

    mais quand tu dis :
    Quand tu enregistre une fiche, il faudra alors juste insérer le contenu de cette variable dans le champs utilisateur de ta fiche prévu a cet effet !
    cela signifie que je dois ajouter dans l'insertion de mes données dans la table, le champ "login_user" qui reprendra les données de la session (nom user, ...), j'ai bon?

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    J'ai un formulaire de saisie d'informations qui va vérifier les données dans une page extérieure.

    Page de formulaire avec la session en haut et la requête cité en amont

    Page formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <? include('top.php');?>
    <? include('config.php');?>
    <?
    $r = mysql_query('select * from membre where username like "'.mysql_escape_string($login).'" and password like "'.md5($pass).'" limit 1') or die(mysql_error());
    if(mysql_num_rows($r))
    $_SESSION['usr'] = $id_user;
    ?>
    Page extérieure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    <?php
    if ($_POST['valide'] == 1) 
    {
    	$nickFR = (htmlentities ($_POST['nickFR']));
    	$nickGB = (htmlentities ($_POST['nickGB']));
    	$nom = (htmlentities ($_POST['nom']));
    	$univers = (htmlentities ($_POST['univers']));
    	$pouvoirs = (htmlentities ($_POST['pouvoirs']));
    	$shortdesc = (htmlentities ($_POST['shortdesc']));
    	$S1 = (htmlentities ($_POST['S1']));
    	$S2 = (htmlentities ($_POST['S2']));
    	$S3 = (htmlentities ($_POST['S3']));
    	$S4 = (htmlentities ($_POST['S4']));
    	$S5 = (htmlentities ($_POST['S5']));
    	$apparition = (htmlentities ($_POST['apparition']));
    	$situation = (htmlentities ($_POST['situation']));
    	$equipe = (htmlentities ($_POST['equipe']));
    	$description = (htmlentities ($_POST['description']));
     
    	if ($nickFR == '' || $nickGB == '' || $nom == '' || $pouvoirs == '' ||
    	    $shortdesc == '' || $S1 == '')
    	{
    		if($nickFR == '')
    			echo "<b>Merci de renseigner le champ nom du personnage français</b><br>";
    		if($nickGB == '')
    			echo "<b>Merci de renseigner le champ nom du personnage anglais</b><br>";
    		if($nom == '')
    			echo "<b>Merci de renseigner le champ nom civil</b><br>";
    		if($pouvoirs == '')
    			echo "<b>Merci de renseigner le champ pouvoirs</b><br>";
    		if($shortdesc == '')
    			echo "<b>Merci de renseigner le champ résumé</b><br>";
    		if($S1 == '')
    			echo "<b>Merci de renseigner au moins une source</b><br>";
    	}
     	else
    	{
    /* Connexion a la base */
     
    /* On link sur un fichier de conf à la racine */				
    require("config.php");
     
    // On vérifie si le nomFR et nomGB existe déjà ou pas
    		$sql =	"SELECT * FROM heros WHERE nickFR = '". addslashes($nickFR)."' OR nickGB = '".addslashes($nickGB)."'";
    		$req =	mysql_query($sql);
     
    // On compte le nombre de ligne reçu par la requête
    		$count = mysql_num_rows($req);
     
     
    		if($S2 == '') {
    			$S2=='0';
    			}
    		if($S3 == '') {
    			$S3=='0';
    			}
    		if($S4 == '') {
    			$S4=='0';
    			}
    		if($S5 == '') {
    			$S5=='0';
    			}
     
    		$sources = $S1."|".$S2."|".$S3."|".$S4."|".$S5;
    		echo ("".$sources."");
    // Si le nom n'existe pas
    		if ($count == 0)
    		{
    			$sql = 	"INSERT INTO heros (nickFR, nickGB, nom, univers, apparition, situation, equipe, pouvoirs, shortdesc, description, source)
    				 VALUES ('$nickFR', '$nickGB', '$nom', '$univers', '$apparition', '$situation', '$equipe', '$pouvoirs', '$shortdesc', '$description', '$sources')";
     
    			mysql_query($sql) or die('Erreur SQL '.mysql_error().'<br />Requête utilisée : '.$sql);
     
    // Affichage d'un message pour décrire le bon déroulement
    			echo '<br><div align=\"center\"><font color=\"green\"><b>Le nouveau personnage a été ajouté, merci de votre participation.</b></div>';
    		}
    		else
    		{
    			echo "<br><div align=\"center\"><font color=\"red\"><b>Le personnage est déjà en base, merci de refaire une saisie.</b></div>";
    		}
     
    // On ferme la connexion à la base de données
    		mysql_close();
    	}
    }
    ?>
    J'ai créé un champ dans ma base de donnée dans la table "heros" = id_user

    Comment envoyer donc ma donnée de session dans cette table?

    personnellement je serai tenté de faire un else if à la suite de l'insertion et de mettre la variable de session, mais je ne sais pas comment l'amener.


    Merci de ton aide.

Discussions similaires

  1. [Servlets - JSP] Problème de session
    Par the java lover dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 28/11/2011, 09h54
  2. Problème de session
    Par kephy dans le forum Langage
    Réponses: 11
    Dernier message: 24/11/2005, 10h08
  3. Problème de session
    Par meda dans le forum Langage
    Réponses: 13
    Dernier message: 25/10/2005, 18h25
  4. problème de session en cours
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2005, 14h36
  5. Gros problème de session/cookies
    Par valfredr dans le forum XMLRAD
    Réponses: 18
    Dernier message: 03/06/2004, 09h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo