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 :

Page membre


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut Page membre
    Bonjour

    J'ai installé sur mon site un espace de connexion pour que certaines pas soit limité au seul membres enregistré.
    Tout fonctionne tres bien, mais maintenant, j'aimerais que chaque membres puisse avoir une page qui lui soit propre, mais je ne vois pas comment faire..

    les données des membres sont enregistré dans une base de donnée, il doit donc etre possible de vérifier ses infos, et d'afficher une page selon l'id ou le pseudo du membre non ?

    je vous met le code de la page de connexion que vous puissiez voir comment s'articule tout ca :
    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    <?
     
    // Redirige l'utilisateur s'il est déjà identifié
    if(isset($_COOKIE["ID_UTILISATEUR"]))
    {
         header("Location: index.php");
    }
    else
    {
     
         // Formulaire visible par défaut
         $masquer_formulaire = false;
     
         // Une fois le formulaire envoyé
         if(isset($_POST["BT_Envoyer"]))
         {
     
              // Vérification de la validité des champs
              if(!ereg("^[A-Za-z0-9_]{2,20}$", $_POST["TB_Nom_Utilisateur"]))
              {
                   $message = "Votre nom d'utilisateur doit comporter entre 2 et 20 caractères<br />\n";
                   $message .= "L'utilisation de l'underscore est autorisée";
              }
              elseif(!ereg("^[A-Za-z0-9]{4,}$", $_POST["TB_Mot_de_Passe"]))
              {
                   $message = "Votre mot de passe doit comporter au moins 4 caractères";
              }
              else
              {
     
                   // Connexion à la base de données
                   // Valeurs à modifier selon vos paramètres configuration
                   mysql_connect("localhost", "root", "");
                   mysql_select_db("user");
     
                   // Sélection de l'utilisateur concerné
                   $result = mysql_query("
                        SELECT ID_Utilisateur, Nom_Utilisateur, Mot_de_Passe, Compte_Active
                        FROM Comptes_Utilisateurs
                        WHERE Nom_Utilisateur = '" . $_POST["TB_Nom_Utilisateur"] . "'
                   ");
     
                   // Si une erreur survient
                   if(!$result)
                   {
                        $message = "Une erreur est survenue lors de la tentative de connexion";
                   }
                   else
                   {
     
                        // Si aucun utilisateur n'a été trouvé
                        if(mysql_num_rows($result) == 0)
                        {
                             $message = "Le nom d'utilisateur " . $_POST["TB_Nom_Utilisateur"] . " n'existe pas";
                        }
                        else
                        {
     
                             // Récupération des données
                             $row = mysql_fetch_array($result);
     
                             // Si le compte n'a pas été activé
                             if($row["Compte_Active"] == 0)
                             {
                                  $message = "Votre compte utilisateur n'a pas été activé";
                             }
                             else
                             {
     
                                  // Vérification du mot de passe
                                  if(md5($_POST["TB_Mot_de_Passe"]) != $row["Mot_de_Passe"])
                                  {
                                       $message = "Votre mot de passe est incorrect";
                                  }
                                  else
                                  {
     
                                       // Définition du temps d'expiration des cookies
                                       $expiration =
                                            empty($_POST["CB_Connexion_Automatique"]) ? 0 : time() + 90 * 24 * 60 * 60;
     
                                       // Création des cookies
                                       setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
                                       setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");
     
                                       // Fermeture de la connexion à la base de données
                                       mysql_close();
     
                                       // Redirection de l'utilisateur
                                       header("Location: index.php");
     
                                  }
     
                             }
     
                        }
     
                   }
     
                   // Fermeture de la connexion à la base de données
                   mysql_close();
     
              }
     
         }
     
    }
     
    ?>
    si quelqu'un avait une idée, parceque l'a . .je sèche complètement.
    Merci.

  2. #2
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Bonjour,

    Tu peux créer une page espacePerso.php qui par rapport a l'id de membre présent dans ton cookie, affiche des informations personnalisées.

    Dans l'ordre, ta page espacePerso.php devrait faire :
    - Verification de l'id
    - requête SQL de recup des infos nécessaires en fonction de l'id de membre
    - Affichage des données

    Je me permet de te mettre ne garde sur le fait qu'un cookie (cote client) est facilement falsifiable et tu t'exposes donc a des opérations de logins indésirables ... Je te conseillerais te compléter ta protection avec les sessions.
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par keaton7 Voir le message
    - Verification de l'id
    - requête SQL de recup des infos nécessaires en fonction de l'id de membre

    c'est justement la que je bloque j'ai essayé ca :
    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
    87
    88
    89
    90
    91
    92
    <?php
     
     
    // Redirige l'utilisateur s'il est déjà identifié
    if(isset($_COOKIE["ID_UTILISATEUR"]))
    {
         header("Location: index.php");
    }
    else
    {
     
     
     
                   // Connexion à la base de données
                   // Valeurs à modifier selon vos paramètres configuration
                   mysql_connect("localhost", "root", "");
                   mysql_select_db("user");
     
                   // Sélection de l'utilisateur concerné
                   $result = mysql_query("
                        SELECT ID_Utilisateur, Nom_Utilisateur, Mot_de_Passe, Compte_Active
                        FROM Comptes_Utilisateurs
                        WHERE Nom_Utilisateur = '" . $_POST["TB_Nom_Utilisateur"] . "'
                   ");
     
                   // Si une erreur survient
                   if(!$result)
                   {
                        $message = "Une erreur est survenue lors de la tentative de connexion";
                   }
                   else
                   {
     
                        // Si aucun utilisateur n'a été trouvé
                        if(mysql_num_rows($result) == 0)
                        {
                             $message = "Le nom d'utilisateur " . $_POST["TB_Nom_Utilisateur"] . " n'existe pas";
                        }
                        else
                        {
     
                             // Récupération des données
                             $row = mysql_fetch_array($result);
     
                             // Si le compte n'a pas été activé
                             if($row["Compte_Active"] == 0)
                             {
                                  $message = "Votre compte utilisateur n'a pas été activé";
                             }
                             else
                             {
     
                                  // Vérification du mot de passe
                                  if(md5($_POST["TB_Mot_de_Passe"]) != $row["Mot_de_Passe"])
                                  {
                                       $message = "Votre mot de passe est incorrect";
                                  }
                                  else
                                  {
     
                                       // Définition du temps d'expiration des cookies
                                       $expiration =
                                            empty($_POST["CB_Connexion_Automatique"]) ? 0 : time() + 90 * 24 * 60 * 60;
     
                                       // Création des cookies
                                       setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
                                       setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");
     
                                       // Fermeture de la connexion à la base de données
                                       mysql_close();
     
                                       // Redirection de l'utilisateur
                                       header("Location: index.php");
     
                                  }
     
                             }
     
                        }
     
                   }
     
                   // Fermeture de la connexion à la base de données
                   mysql_close();
     
              }
     
         }
     
    }
     
    ?>
    mais ca ne donne absolument rien...

  4. #4
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    "Ça ne donne rien", c'est a dire, quelle est ton erreur ? Ton probleme ? Tu peux nous en dire plus ?
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    je n'ai aucune erreur justement...

    mais en etant logé je reviens toujours la page d'accueil (ce qui est normal si je ne suis pas identifé, mais la non...)

  6. #6
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Je ne vois pas ou est le problème ?

    J'imagine que les informations personnelles en questions se trouve dans la table qui contient la liste des utilisateur, leur ID, mot de passe etc ...

    Il te fait simplement construire une page dynamiquement en PHP avec les données obtenues depuis une requête sur cette table avec comme critère principal l'ID de l'utilisateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM Comptes_Utilisateurs WHERE ID_Utilisateur=".$_COOKIE["ID_UTILISATEUR"].";"
    Mais comme te le dit keaton7, il te faudrait utiliser une SESSION plutôt qu'un cookie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session_start();
    $_SESSION['ID_UTILISATEUR'] = $row["ID_Utilisateur"];
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  7. #7
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Essaie de faire un print de $expiration ?
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    je veux bien mettre une session plutot qu'un cookie, a priori ca ne me gene pas, mais est-ce que le reste de ma connexion peut rester ainsi ou bien il faut tout revoir ? (enregistrement, connexion, deco ?)

  9. #9
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Ca ne changera pas ton probleme d'utiliser des sessions la place, on verra ca dans un second temps. Concentrons nous sur le probleme de ce script pour le moment sans tout changer .

    Verifie d'abord que expiration n'est pas negatif, pour ca fait un die($expiration); juste apres l'avoir initialise. Ensuite habitue toi a deplacer un die("je suis la"); apres chaque ligne de code pour voir ou ca commence a bloquer, si tes conditions sont bine verifiees, etc ...

    Je te préconise le die() parce que tu as des redirections, met les en commentaire, les messages d'erreurs se trouvent peut-être juste avant la redirection.

    Tiens moi au courant.
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    bah la c'est pas tellement compliqué...
    j'ai rien compris

    j'ai donc mis dans ma page, mais cela n'apporte rien, et je me doute que ca ne doit pas etre ca que tu voulais que je fasse.. mais la je suis perdu

  11. #11
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    As tu compris ce que je t'ai proposé ?
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  12. #12
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Excuse moi, j'ai peut-etre ete un peu vite. Ce que je preconise, dans une optique de debug, c'est de faire des tests soit en mettant des die("pointeur"); que tu deplaces pour tester les passages de ton script, soit de supprimer les redirections, et de ne pas hesiter a faire des echo de tes variables pour en verifier le contenu.

    Ce que tu dis riete est important egalement.
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    je pense... mais j'affirme rien

    j'ai mis le die expiration ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
       // Définition du temps d'expiration des cookies
                                       $expiration =
                                            empty($_POST["CB_Connexion_Automatique"]) ? 0 : time() + 90 * 24 * 60 * 60;
                                       die($expiration);
                                       // Création des cookies
                                       setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
                                       setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");
     
                                       // Fermeture de la connexion à la base de données
                                       mysql_close();
     
                                       // Redirection de l'utilisateur
                                       header("Location: index.php");
    ce qui ne m'affiche rien, aucune erreur...

  14. #14
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Cette manipulation te donne une information dont découlent deux hypothèses :
    - Ton script ne passe pas dans cette condition
    OU
    - Expiration est vide ! Et ton cookie ne sera jamais valide

    Continue sur cette lancée et vérifie tes données jusqu'à ce que tu aies quelque chose d'affiche
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


  15. #15
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 35
    Points : 46
    Points
    46
    Par défaut
    t'a quoi comme serveur de test ? tu as peut-etre un parse error qui ne s'affiche pas, selon ton error_reporting !

    En copiant ton second code, j'ai eu un parse error parce que des accolades étaient en trop à la fin..

    edit : bonjour !

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    bon, j'ai collé un die($expiration); apres chaque expiration, mais toujours pareil, rien ne s'affiche...

    c'est grave ?

  17. #17
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 35
    Points : 46
    Points
    46
    Par défaut
    Je m'incruste un peu dans l'histoire..

    T'a essayer de voir pour le parse error ?

    Sinon dans la liste des cookies de ton navigateur, quelque chose apparait ?

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    dans les cookies, je vois le nom d'utilisateur et l'id...

  19. #19
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 35
    Points : 46
    Points
    46
    Par défaut
    Et pour la date d'expiration ?

    Edit : et faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    die("expiration : $expiration");
    ?
    Edit 2 : ou sinon

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    a priori: oui, expire a la fin de la session...

    mais la je suis pas sur

Discussions similaires

  1. Url rewriting page membre
    Par Silverat dans le forum Apache
    Réponses: 0
    Dernier message: 11/03/2015, 13h02
  2. Réponses: 8
    Dernier message: 26/03/2006, 16h09
  3. Accès direct à la page impossible (membres seulement)
    Par FrankOVD dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/02/2006, 21h18

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