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 :

Avis pour page de profil


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 54
    Points : 25
    Points
    25
    Par défaut Avis pour page de profil
    Bonjour à tout ceux qui verront ce message

    Aujourd'hui, pour une fois, je ne poste pas de problème. Mais une idée dont j'aimerais des avis et de l'aide (si il y a) pour créer ma page de profil pour un forum. En effet, pour ma page de profil, j'aimerais créer un code spécial pour faire en sorte que :
    1. Si une personne non connecté au forum veut voir un profil, elle ne puisse pas et sera directement redirigé vers la page de connection.
    2. Sinon(c-à-d si elle est connecté), elle peut voir le profil de cette personne.
    3. Ensuite, si c'est la personne du profil qui le regarde, la page s'affiche mais avec les différentes commandes de modifications de fichiers.


    J'avais pensé à ce code (dans les grandes lignes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (condition = si la personne nest pas connecté) {redirection vers la page de connexion}
    else (condition = si le connecté veut voir son profil) {afficher le profil avec les liens de modifications}
    else (condition = si cest une autre personne qui veut la voir) {afficher juste le profil normal}
    Je pense que mon code à l'air bon. Seulement l'idée générale est la CONNECTION !! Or j'ai appris qu'il y avait certains problème pour savoir si une personne est connecté... On ne peut savoir si la personne est juste 'endormis' sur le site ou bien si il est partis !? Bien sur je peux créer un code qui permettrais de faire au connecté 'endormis' la possibilité de faire savoir à la page qu'il est bien connecté. Mais je crois que ce code va aussi effacer la première condition et créer à une personne non connecté de voir le profil...

    Qu'en pensez vous ??

  2. #2
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 475
    Points : 4 685
    Points
    4 685
    Par défaut
    Salut,
    moi j'aurai plutot vu ca comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(pas connecte) { redirection }
    else {
     affichage profile normal
     if(profile du membre connecte) { affichage liens de modification en plus }
    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 54
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Doksuri Voir le message
    Salut,
    moi j'aurai plutot vu ca comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(pas connecte) { redirection }
    else {
     affichage profile normal
     if(profile du membre connecte) { affichage liens de modification en plus }
    }
    Ne risque pas d'y avoir des erreurs ?? Le code que tu propose est compliqué. Tu affiche d'abords le profil normal pour ensuite savoir si c'est bien le membre qui veut voir son profil, le voie avec les liens... Or faudrais remettre tout le code dans le if !! Ne serais-ce pas plus compliquer ??

    Je m'intéresse plutôt sur le fait de la connexion ^^
    si vous aviez des idées pour savoir si un membre est juste endormis sur le site ou si il est déconnecté =)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 76
    Points : 62
    Points
    62
    Par défaut
    en fait les deux choses n'ont rien à voir ensemble directement

    Si tu ordonnes tes if ils vont s'éxécuter dans l'ordre donc

    if (pas connecté) { redirection}
    if (profil=connecté) {affichage des liens}

    ce qui fait que la redirection empêchera l'éxécution du second if

    Ensuite pour la partie "réveillé" si tu veux simplement protéger tes données de qqun qui est parti en laissant une page ouverte fais un timout avec un compteur.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 54
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par shaihulud1979 Voir le message
    en fait les deux choses n'ont rien à voir ensemble directement

    Si tu ordonnes tes if ils vont s'éxécuter dans l'ordre donc

    if (pas connecté) { redirection}
    if (profil=connecté) {affichage des liens}

    ce qui fait que la redirection empêchera l'éxécution du second if

    Ensuite pour la partie "réveillé" si tu veux simplement protéger tes données de qqun qui est parti en laissant une page ouverte fais un timout avec un compteur.
    Justement c'est le problème que je disais à Doksuri
    Moi je pensais plus à mon if, else, else qui ne peut se tromper car si le membre est connecté il pourra voir la page !! Mais je peux intelligemment refaire le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (condition = si le connecté veut voir son profil) {afficher le profil avec les liens de modifications}
    else (condition = si cest une autre personne qui veut la voir) {afficher juste le profil normal}
    else (condition = si la personne nest pas connecté) {redirection vers la page de connexion}

  6. #6
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2011
    Messages : 70
    Points : 67
    Points
    67
    Par défaut
    Salut ade!

    Je te propose ma vision des choses. En supposant que tu as un code lors de la soumission du formulaire de login, qui vérifie dans la base de donnée le pseudo et le mot de passe du membre. Si tout est bon, faire un $_SESSION['pseudo'] = pseudodumembre. Du coup, sur ta page profil.php:
    Code php : 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
     
    <?php
    // Requêtes SQL pour récupérer le profil demandé par le visiteur
    // Fetch array sur la requete on va dire $data[] par exemple
    if(isset($_SESSION['pseudo'])) { // Si la variable de session pseudo est initialisée
    switch($_SESSION['pseudo']) {
         case $data['pseudo']:
             // Le pseudo du profil demandé est le même que la variable de session pseudo donc le membre est sur sa page
            $status=3;
         break;
     
     
          default:
            // La variable de session pseudo n'est pas la meme que le profil, donc un membre visite la page d'un autre membre
             $status=2;
           break;
     
    }
    }
    else { // Si la variable de session pseudo n'est pas initialisée, donc simple visiteur non loggué 
    $status=0;
    }
    ?>

    Du coup ensuite, tu affiches ta page de profil, et tu te sert de $status pour savoir ce qu'il faut afficher ou non (avec des if)
    (J'espère que je suis pas à coté de la plaque =P)

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 54
    Points : 25
    Points
    25
    Par défaut
    Belle vision des choses l'histoire du statue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    if (isset($_SESSION['pseudo'])) { switch($_SESSION['pseudo'])  {case $data['pseudo']: $status=2; break;
    default: $status=1; break; } }
    else { $status=0; }
    ?>
    J'ai mon formulaire et ma page de connexion, il faudrait que je puisse créer des cookies alors ^^ si une personne à un cookie et ba elle passe sinon rien !!
    Mais petite question, si deux personnes ont le même pseudo !? (car elles auront le droit) Devrais-je faire par rapport à l'IP ou bien autre chose comme l'ID !?

  8. #8
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Citation Envoyé par ade-9774 Voir le message
    Belle vision des choses l'histoire du statue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    if (isset($_SESSION['pseudo'])) { switch($_SESSION['pseudo'])  {case $data['pseudo']: $status=2; break;
    default: $status=1; break; } }
    else { $status=0; }
    ?>
    J'ai mon formulaire et ma page de connexion, il faudrait que je puisse créer des cookies alors ^^ si une personne à un cookie et ba elle passe sinon rien !!
    Mais petite question, si deux personnes ont le même pseudo !? (car elles auront le droit) Devrais-je faire par rapport à l'IP ou bien autre chose comme l'ID !?
    Je pense que le mieux est d'utiliser l'ID de l'utilisateur, sinon j'aurais proposé quasiment la même solution que flozza en remplaçant le pseudo par l'ID de l'utilisateur.
    Ensuite pour l'affichage des données en fonction du statut, je pense que tu peut faire une sorte de gestion de droits en listant toutes les fonctionnalités de la page, tu les stocks en base avec le niveau de droit correspondant (en l'occurence le statut), et pour chaque fonctionnalité, tu vérifie via une petite fonction si le niveau de droit de l'utilisateur correspond a celui de la fonctionnalité, ca reviens au même que de faire un if ($status == 3) a chaque fois, mais la c'est évolutif

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 54
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par amoiraud Voir le message
    Je pense que le mieux est d'utiliser l'ID de l'utilisateur, sinon j'aurais proposé quasiment la même solution que flozza en remplaçant le pseudo par l'ID de l'utilisateur.
    Je pense que cela sera mieux aussi

    Citation Envoyé par amoiraud Voir le message
    Ensuite pour l'affichage des données en fonction du statut, je pense que tu peut faire une sorte de gestion de droits en listant toutes les fonctionnalités de la page,
    MY GOD je n'ai rien compris !! Aurais-tu juste un exemple codé si possible ?? :$

    Citation Envoyé par amoiraud Voir le message
    c'est évolutif
    Évolutif !!? C'est-à-dire ??

  10. #10
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Citation Envoyé par ade-9774 Voir le message
    Évolutif !!? C'est-à-dire ??
    C'est évolutif dans le sens ou si tu veux changer une des règles (du style les admin peuvent avoir des fonctionnalités supplémentaires, ou si d'un coup tu décide que les utilisateurs non connectés peuvent voir quelques informations au lieu d'être redirigé), tu aura juste a modifier les droits dans la base.


    Citation Envoyé par ade-9774 Voir le message
    Aurais-tu juste un exemple codé si possible ??
    Je viens de fouiller dans ma banque de code et malheureusement je n'ai rien sur la gestion des droits, par grave on peut tenter de faire ca dans les grandes lignes :

    Base de données :
    - Une table status qui contiendra les divers statuts (non connecté, connecté, connecté et propriétaire du profil, admin, etc...) avec un champs statusId (clé primaire, auto incrément) et nomStatus.
    - Une table fonctionnalites qui va lister les fonctionnalités, avec un champs fonctId et un champs fonctName.
    - Une table status_droits qui va faire le lien entre les status et les fonctionnalités, un champs statusId_fk, un champs fonctId_fk et un champs droit en booleen.

    Récupération du type de droit (ou statut)

    La tu peut reprendre le code de flozza avec quelques petites modifs :

    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
     
    if (isset($_SESSION['userId'])) {
      switch($_SESSION['userId']) {
         case $_GET['profilId']:
             // En supposant que tu appel ta page profil comme ca : profil.php?profilId=... sinon faut adapter
            $status = 3;
         break;
     
          default:
            // La variable de session userId n'est pas la meme que le profilId, donc un membre visite la page d'un autre membre
             $status = 2;
           break;
     
      }
    } else { // Si la variable de session userId n'est pas initialisée, donc simple visiteur non loggué 
     $status = 0;
    }
    Page profil
    Pour la page profil, tu peut ensuite gérer les choses comme ca (je prend l'exemple de l'affichage de l'avatar, avec un lien "modifier" pour l'utilisateur correspondant au profil) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <div class="avatar">
      <img src="<?php echo $imgAvatar; ?>" /><br/>
      <?php
        // On verifie si l'utilisateur a le droit de visualiser cette fonctionnalité
        if (Droits::hasAccess($status, 'editAvatar')) {
      ?>
        <a href="editavatar.php?userId=<?php echo $_SESSION['userId']; ?>">Modifier l'avatar</a>
      <?php
        }
      ?>
    </div>
    Classe Droits :

    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
     
    class Droits
    {
        public static function hasAccess($statusId, $fonctName) {
          // Recuperation de l'ID de la fonctionnalite
          $res = mysql_query("SELECT fonctId FROM fonctionnalites WHERE fonctName LIKE '" . $fonctName . "'");
     
          // Recuperation du resultat de la requete...
     
          // On verifie si le status a le droit pour cette fonctionnalite
          $res = mysql_query("SELECT droit FROM status_droits WHERE statusId_fk = " . $statusId . " AND fonctId_fk = " . $fonctId);
     
          // Recuperation du resultat de la requete...
     
          return $droit;
        }
    }

    Voila, après tu peut te faire un module de gestion des Droits dans l'admin en ajoutant des fonctions dans la classe Droits afin de modifier et gérer les droits facilement, et si demain tu décide que l'admin peut modifier l'avatar de l'utilisateur, ba tu change juste la valeur du champs droit de la table status_droits pour le status de l'admin et pour la fonctionnalité "editAvatar"

    PS : J'ai tapé ca a l'arrache donc y'a surement moyen de faire plus optimisé, et rien ne t'oblige de le faire exactement comme ca c'était juste pour te montrer le principe

    PS2 : Ce code est plus adapté pour une gestion des droits avec des profils d'utilisateurs, la on utilise des status disponibles uniquement sur la page profil donc c'est pas super utile si tu ne l'utilise que sur cette page, mais bon si tu développe un forum je pense que t'aura besoin d'une gestion des droits à d'autres endroits, dans ce cas il faudra placer le statusId dans la table des membres.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 54
    Points : 25
    Points
    25
    Par défaut
    Déjà un grand merci pour ta réponse
    Très explicatif ^^
    Mais tu m'as maintenant créé un doute Quand un forum est lancé sur le net, nous avons plus le droit de changer le code ?? Nous pouvons plus y toucher ??

    Ensuite Pour mes pages (généralisons un peu). J'ai mon formulaire et je créé plusieurs champs (id, Nom, Prénom, Sexe, Adresse, Ddn, Identifiant, Mdp, mail, numtel) et ma personne est tout de suite redirigé vers la page de connexion !! Dis que la personne se connecte (là c'est l'explication, fais attention ) La personne qui est maintenant connecté est redirigé directement sur la page d'accueil. Donc je peut créé, comme je l'avais déjà dis, des cookies,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php setcookie('ID', 'mysql_query('select id from session where mail="'.$email.'"')', time() + 365*24*3600, null, null, false, true); ?>
    <?php setcookie('email', 'htmlentities($_POST["email"], ENT_QUOTES)', time() + 365*24*3600, null, null, false, true); ?>
    <?php setcookie('Mdp', 'htmlentities($_POST["password"], ENT_QUOTES)', time() + 365*24*3600, null, null, false, true); ?>
    Est-ce que pour l'instant c'est bon !?
    Si oui, je continue... Maintenant la personne possède deux cookies permettant de savoir qu'il est connecté ^^ (en quelque sorte, plutôt inscrit)
    Dans mes pages, je vais donc inscrire un petit code de vérification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $ID = stripslashes($_COOKIE['ID'])
    $email = stripslashes($_COOKIE['email'])
    $password = stripslashes($_COOKIE['Mdp'])
    $v-email = mysql_query('select mail from session where mail="'.$email.'"')
    $v-password = mysql_query('select Mdp from session where mail="'.$email.'"')
    $v-ID = mysql_query('select ID from session where mail="'.$email.'"')
     
    if ($email == $v-email and $password == $v-password and $ID == ...)
    ?>
    Je me rencontre à un problème :O ma page de profil n'a pas d'ID "http://localhost/Lifenet/Profil/Profil-Information.php" je devrais faire comme ça je supose : "http://localhost/Lifenet/Profil/Profil-Information?id={id}.php"

    Je reprends :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    if ($email == $v-email and $password == $v-password and $ID == $_GET['id']) {// J'affiche le profil avec les liens de modifications}
    else ($email == $v-email and $password == $v-password and $ID != $_GET['id']) {// Là j'affiche juste le profil sans rien d'autre}
    else ($email == '' or $password == '' or $ID == '' ) {redirection vers la page de connexion}
    ?>
    Voilà !! J'espère que vous avez eu le courage de bien regarder mon code ^^
    Maintenant je veux juste savoir si mon code est bon, si il marche et enfin si il peut y avoir des choses à améliorer
    TOUT POINT POSITIF OU NÉGATIF SERA PRIS EN COMPTE

  12. #12
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Oh là là c'est dangereux des cookies avec les identifiants et mot de passe de l'utilisateur en clair.

    Je te conseille d'utiliser les variables de session comme ça le client ne stocke que son ID de session en local et les variables sont elles stockées sur le serveur.

    Enfin, ne stocke que l'ID de l'utilisateur dans ces variables, cela ne sert à rien de stocker son identifiant et encore moins son mot de passe.

    A la place de ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php setcookie('ID', 'mysql_query('select id from session where mail="'.$email.'"')', time() + 365*24*3600, null, null, false, true); ?>
    <?php setcookie('email', 'htmlentities($_POST["email"], ENT_QUOTES)', time() + 365*24*3600, null, null, false, true); ?>
    <?php setcookie('Mdp', 'htmlentities($_POST["password"], ENT_QUOTES)', time() + 365*24*3600, null, null, false, true);
    tu auras ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $id = mysql_query('select id from session where mail="'.$email.'"');
    $_SESSION[ID]=$id;
    Vérifie aussi à bien protéger les variables entrées par l'utilisateur pour te protéger notamment des injections SQL.

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 54
    Points : 25
    Points
    25
    Par défaut
    Merci pour ta réponse Marc mais si une personne à juste quitter le site (inscrite mais elle a quitté) elle fait alors une session destroy !! Et qu'elle veuille voir une des pages de mon site. Comment je vais savoir qu'elle est encore 'connecté' mais elle qu'elle fait une session destroy !?
    Je crois avoir lu quelque part que cela n'était pas très bien de laisser une session ouverte alors que l'user n'y est est plus... Dites moi si je me trompe ?

  14. #14
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Effetivement tu peux utiliser les cookies dans ce cas ùais plutot avec un jeton qu'avec directement les données sensibles dedans.

    L'idée c'est que le cookie doit contenir un jeton (chaîne aléatoire) générée par l'appli et utilisable une seule fois.

    Quand le user se connecte à l'appli, tu génères un jeton que tu stockes dans le cookie et en base dans une table qui ne sert qu'à ça (avec le lien jeton - user en base).
    Quand le user revient sur le site après s'être délogué tu checks le jeton (conservé car dans un cookie) et vérifie dans la base qu'il est valide, tu loggues directement le user et tu regénères un jeton pour ce user.

  15. #15
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par ade-9774 Voir le message
    Merci pour ta réponse Marc mais si une personne à juste quitter le site (inscrite mais elle a quitté) elle fait alors une session destroy !! Et qu'elle veuille voir une des pages de mon site. Comment je vais savoir qu'elle est encore 'connecté' mais elle qu'elle fait une session destroy !?
    Tout dépend comment elle quitte le site.
    Si, comme sur ce forum, tu as prévu un bouton/lien "déconnexion" et quelle clic dessus, tu feras en sorte que la session sera détruite.
    Après cela elle deviendra un internaute lambda (dès déconnexion on peu la rediriger vers la page d'accueil par exemple).
    Théoriquement, on devrait pouvoir visiter le site (la partie "publique") sans avoir besoin de session.

    Si une autre personne utilise la même machine (cas courant dans une entreprise), il n'y aura plus de problème, car il faudra à nouveau s'identifier.
    Grosso modo, il n'y a pas lieu de tenter de savoir qu'on a affaire à la même personne (même poste client/navigateur/même IP), et tenter de la ré-identifier automatiquement, c'est là où on favoriserait une usurpation d'identité.
    Il est préférable qu'après déconnexion, que la personne se ré-identifie elle même.

    Citation Envoyé par ade-9774
    Je crois avoir lu quelque part que cela n'était pas très bien de laisser une session ouverte alors que l'user n'y est est plus... Dites moi si je me trompe ?
    Si on poursuit le cas précédent, donc si la personne ne clique pas sur "deconnexion", ou si tu ne prévois pas de se système, alors effectivement il peu avoir un problème.

    Si une autre personne utilise la même machine, elle pourra utiliser le site identifiée avec le même profil, les mêmes droits que l'autre personne.
    Mettre un système de déconnexion devient ici réellement utile (voir indispensable).
    Mais si la personne oubli de le faire, alors c'est là où on ne peu pas faire grand chose.
    C'est un peu le même problème que d'oublier son porte monnaie sur un comptoir, on ne peu guère tout gérer.

    Ceci dit pas vraiment, car une session à une durée de vie, par défaut c'est 24 minutes (1440 secondes).
    Donc s'il y a aucune activité, la session sera automatiquement détruite au-delà de ce délai.
    D'où l'utilité de définir une durée ni trop courte, ni trop longue.
    Une sorte de compromis entre laisser suffisamment la personne de lire un contenu (donc physiquement inactif coté navigateur, mais actif pour la personne qui lis), et pas trop long dans le cas où une personne qui quitte le site sans cliquer sur "déconnexion" et donc ne pas favoriser une usurpation.

    A savoir aussi que, si une personne ferme un onglet, mais pas la fenêtre du navigateur, cela sans cliquer sur déconnexion, la session restera active car le cookie coté navigateur n'est pas détruit.
    En général les cookies sont détruits lorsqu'on ferme le navigateur. (ça dépend du navigateur et comment il est configuré cependant).

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 54
    Points : 25
    Points
    25
    Par défaut
    Alors déjà grand merci pour ces magnifiques informations RunCodePhp

    Pour éditer ma page de profil (générale), j'ai réutilisé l'ingénieuse idée de Marc ^^ : donc j'ai créer un code aléatoire (changeante à chaque fois, bien sur) puis je le stocke dans un bon cookie puis dans une table de donnée.
    Alors voici le problème auquel je suis confronté en ce moment et dont je ne comprends plus grand chose :
    Quand l'user reviens sur le site, il a le cookie et peu donc rentré. Seulement il va bien falloir connaître son ID à cette personne, sinon si elle veut voir un profil je ne vais pas savoir si c'est un user quelconque ou bien l'user du profil... Donc je me suis "permis" d'y installer l'email ainsi que son ID...

    Alors voilà le problème
    Je n'arrive pas à enregistrer l'ID à partir d'une autre table. Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $_idp = mysql_query('select id from session where mail="'.$email.'"');
    $sql="INSERT  INTO `temporaire` (`idp`, `email`, `hsah`)
    VALUES ( '" . $_idp . "', '" . $email . "', '" . $chaine . "')";
    $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
    Le code aléatoire s'inscrit bien ainsi que l'email. Or l'ID dans ma base est normal... Même en rajoutant auto_increment ou bien PRIMARY, ba cela ne marche pas... Il me refrabrique un nouvel ID !!
    Donc en gros c'est la cata

    Exemple pour bien comprendre le problème.
    Mon ID c'est 12 !! Quand je me connecte, le site m'envoie un cookie qu'avec le code aléatoire (sans l'ID et l'email... trop dangereux, j'ai appris) et il m'inscrit dans une base de donnée le code mais enregistre à partir des inputs l'email et donc l'ID de cette email (enregistrer grâce au formulaire). Mais quand je vais regardé dans ma base (phpadmi), je remarque que l'ID est 0 !! Donc qu'il n'a pas enregistrer l'ID de l'email que je possède...

  17. #17
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Citation Envoyé par ade-9774 Voir le message
    Le code aléatoire s'inscrit bien ainsi que l'email. Or l'ID dans ma base est normal... Même en rajoutant auto_increment ou bien PRIMARY, ba cela ne marche pas... Il me refrabrique un nouvel ID !!
    Il est normal que si tu crées le champs ID en auto_increment ce soit mysql qui attribut une valeur à ce champ. C'est le but de auto_increment. Enlève le il ne correspond pas à ton besoin.

    Le primary par contre ne devrait gueuler que si tu essaies d'ajouter une ligne avec une valeur qui existe déjà sur ce champ. Tu dois pouvoir le laisser mais dans ton code tu dois donc vérifier qu'aucune ligne avec ce champ existe avant d'insérer une ligne.

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 54
    Points : 25
    Points
    25
    Par défaut
    Merci marc pour tes réponses
    Sur un autre forum, j'ai réussi à régler ce léger détail ^^
    je continue pour faire en sorte que ma page de profil respecte mes contrainte imposé

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 54
    Points : 25
    Points
    25
    Par défaut
    Alors nouveau problème... oui je sais encore

    Bon en rapide résumé :
    Je vais sur ma page de connection, je me connecte (création du code aléatoire sur un cookie et enregistrer dans une table). Redirection vers ma page d'accueil, lien vers lequel je veux accéder à mon profil, je clique...


    Alors voilà, pas de page de profil...
    Il ne veut pas pas récupérer mon ID !! le code si vous voulez voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php session_start();
    mysql_connect('localhost', 'root', '');
    mysql_select_db('lifenet');
     
    $hash = stripslashes($_COOKIE['hsah']);
    $email = mysql_query('select email from temporaire where hash="'.$hash.'"');
    $ID = mysql_query('select idp from temporaire where hash="'.$hash.'"');
    $v_hash = mysql_query('select hash from temporaire where email="'.$email.'"');
    $_SESSION['ID'] = $ID;
    ?>
     
    <a href="Profil/Profil-Information?id=<?php echo '"'.$_SESSION['ID'].'"'; ?>.php">Profil</a>

  20. #20
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Ajoute des logs ou des traces pour savoir où ça coince...

    Dans ta base tu vois ton hash?
    Il est bien lié au bon ID?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 12
    Dernier message: 07/05/2013, 21h08
  2. Réponses: 30
    Dernier message: 05/08/2009, 19h25
  3. Besoin d'avis pour la mise en page
    Par jmjmjm dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 12/09/2006, 00h49

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