Session

Bonjour,

<config>Windows 7 / Chrome 31.0.1650.63</confi

J'ai un site où les utilisateurs peuvent déclarer leurs objets perdus et je veux ajouter les sessions pour qu'un utilisateur puisse accéder a sa déclaration dans la BD et changer ce qu'il veut à partir de son compte. ma question est comment lier les informations(déclaration) rentrée par l'utilisateur avec son compte.
Svp

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Salut, mettons que t'as deux tables:
    Celle des comptes
    +----+-----------------+-------------------------+------------------+
    | id | nom_utilisateur | hash_mot_de_passe | autres champs... |
    +----+-----------------+-------------------------+------------------+
    | 0 | test | 03cfd743661f07975fa2f12 | ... |
    | 1 | Ennemine | 3330b4373640f9e4604991e | ... |
    | 2 | EtAinsiDeSuite | ec11312386ad561674f724b | ... |
    +----+-----------------+-------------------------+------------------+
    Et celle des objets perdus:
    +----+--------------+------------------+-----------+-----------+
    | id | objet_perdu | description | id_compte | autres... |
    +----+--------------+------------------+-----------+-----------+
    | 0 | Veste noire | Elle a ... | 1 | ... |
    | 1 | Bonnet rouge | Marqué NY dessus | 2 | ... |
    | 2 | Et le reste | Description | 0 | ... |
    +----+--------------+------------------+-----------+-----------+
    La colonne
    id_compte
    contient l'
    id
    du compte qui a déclaré l'objet perdu, c'est tout bête.

    Les sessions ont une utilité ici: retenir qu'un utilisateur est connecté, en l'occurence elle ne contiendra que l'
    id
    du compte en question quand l'utilisateur se sera connecté avec le bon login+mdp. Elle ne sera pas utilisée pour lier directement les infos compte/déclaration, une requête à la BDD devra être faite pour récupérer ces infos (par ex
    'SELECT * FROM objets_perdus WHERE id_compte=' . $_SESSION['id_compte']
    )
    1. Beh, je n'ai pas utilisé l'ID dans ma table d'objet perdu il n'y a que

      +----+--------------+------------------+-----------+-----------+
      |nom | e-mail | tel |objet perdu | description | photo |
      +----+--------------+------------------+-----------+-----------+

      C'est possible de faire la session sans cet ID?
    2. Contributeur
      C'est possible de faire sans, c'est juste un poil plus lent et prends plus de place, dans ce cas la colonne
      id_compte
      sera juste
      compte
      et contiendra le nom d'utilisateur, dont on pourra récupérer les infos avec
      'SELECT * FROM comptes WHERE nom=' . $nom_de_l_utilisateur
      ; et dans l'autre sens
      'SELECT * FROM objets_perdus WHERE compte=' . $nom_de_l_utilisateur
      .
      Attention aux noms de compte dans les requêtes: inderdis les noms de compte avec des antislash (
      \
      ), guillemets (
      '
      ou
      "
      ), et utilise mysql_real_escape_string si tu utilises MySQL, ou les requêtes préparées si tu utilises PDO.
    3. Merci mon frère gravgun, je vais essayer ta solution, mais dis moi la session peut marcher à locale (Wampserver) pour la tester ?
    4. Contributeur
      Je suis 99% sûr que les sessions sont activées sur WampServer (je ne m'en sers pas du coup je suis pas 100% sûr), donc normalement ça devrait fonctionner sans pépin; vérifie quand même quelle valeur a session.use_cookies dans le php.ini.
      Pour la base de donnés, qui est une MySQL, il faut se connecter sur
      localhost:3306
      (quel que soit l'API que tu utilises: les fonctions
      mysql_*
      ou PDO)
    5. Dans php.ini : session.use_cookies = 1 ??