page profile

Par papayou12, il y a 13 ans


bonjour,
voila j'ai créer une page profile tous fonctionnne nikel sauf que si mon client veut avoir c'est information je doit changer manuellement sont id dans mon code et moi ce que je voudrais c'est que sa ce face automatiquement quand il ce connect.

merci d'avance

19 réponses

Guigs63, il y a 13 ans

Bonjour,

Un minimum de code serait appréciable pour pouvoir te répondre.
Visiblement tu devra regarder du côté des variables de session.

papayou12, il y a 13 ans

désoler je t'envoie sa

ma page profile.php :

<?php include 'includes/includes.php';
if(!Auth::islog($DB)){
        header('location:login.php');           
    }
?>
<?php include 'includes/header3.php';
?>
<!-- Message dans la session -->
  <?php if (isset($_SESSION'message'])): ?>
    <div class="message"> <?php echo $_SESSION'message']; ?></div>
    <?php unset( $_SESSION'message']); ?>
  <?php endif ?>
   <?php if (isset($_SESSION'erreur'])): ?>
    <div class="errorMessage"> <?php echo $_SESSION'erreur']; ?></div>
    <?php unset( $_SESSION'erreur']); ?>
  <?php endif ?>

<?php
include('connect.php');
if(isset($_GET'id']))
{
$info = info_utilisateur($_GET'id']);
if($info == false)
{
    }
    }
?>
<div id="formu">
<article id="formulaire">
<h1>Votre profile</h1>
<div id="avatar" style="margin:auto 630px;">
<?php
if($info'avatar'] ==true)
{
    ?>
        <p><img src="avatar/<?php echo $info'avatar']; ?>" height="150" width="150" alt="avatar"/></p>
    <?php   
    }else {
?>
<p><img src="avatar/defaut.jpg" alt="avatar" height="150" width="150"/></p>
<?php       
        }
?>
</div>
<form action="verifLogin.php" method="post">
<fieldset>
<label for="nom">Nom et prénom : <?php echo $info'nom']; ?></label>  

<label for="email">Email : <?php echo $info'email']; ?></label>
<label for="telephone">Téléphone : <?php echo $info'telephone']; ?></label>

<label for="adresse">Adresse : <?php echo $info'adresse']; ?></label>

        <label for="ville">Ville : <?php echo $info'ville']; ?></label>

        <label for="codepostale">Code postale : <?php echo $info'codepostale']; ?></label> 

</fieldset>
</form>
<br>
<?php
if($_SESSION'id'] == $_GET'id'])
{
?>
<a href='modifier.php' style="margin:10px;"><button style="color:#696969;">Modifier votre profile</button></a>
<?php   

    }
?>
</article> 
</div>
<?php include 'includes/footer.php';?>

et ma page connect.php :

<?php 
session_start();
$connect = mysql_connect('localhost','.......','.......') or die(mysql_error());
mysql_select_db('eshop') or die(mysql_error());
include('function.php');
$_SESSION'id'];

?>

ma page function.php :

<?php
function nom_utilisateur()
{
$utilisateur = array();
$query = mysql_query("SELECT id,nom FROM users") or die(mysql_error());
while($rows = mysql_fetch_assoc($query))
{
$utilisateur] = $rows;
    }   
    return $utilisateur;

    }
function info_utilisateur($id)
{
    $id = (int)$id;
    $sql = mysql_query("SELECT * FROM users WHERE id='$id'");

    return mysql_fetch_assoc($sql); 

    }

    function modifier_profile($email,$telephone,$codepostale,$adresse,$ville,$avatar,$avatar_tmp)
    {

        move_uploaded_file($avatar_tmp,'avatar/'.$avatar);

        $result = mysql_query("UPDATE profile SET email='$email',telephone='$telephone',codepostale='$codepostale',adresse='$adresse',ville='$ville',avatar='$avatar' WHERE id='{$_SESSION'id']}'");

        }
?>

et ma page modifier.php :

<?php include 'includes/includes.php';
?>
<?php include 'includes/header3.php';?>
<?php
include('connect.php');
if(isset($_POST'submit']))
{
    $email = mysql_real_escape_string(htmlentities($_POST'email']));
$telephone = mysql_real_escape_string(htmlentities($_POST'telephone']));
$adresse = mysql_real_escape_string(htmlentities($_POST'adresse']));
$codepostale = mysql_real_escape_string(htmlentities($_POST'codepostale']));
$ville = mysql_real_escape_string(htmlentities($_POST'ville']));
$avatar = $_FILES'avatar']'name'];
$avatar_tmp = $_FILES'avatar']'tmp_name'];
$erros = array();

    if(!filter_var($email,FILTER_VALIDATE_EMAIL))
    {
        $errors] = "Veuillez saisir un email valide";       
        }
        //recuperer l'ext de limage

        if(!empty($avatar))
        {
            $image = explode('.',$avatar);
            $image_ext = end($image);
            if(in_array(strtolower($image_ext),array('jpg','jpeg','gif','png')) ===false)
            {
                $errors] = "Votre avatar doit être une image valide";               
                }           

            }           

        if(empty($errors))
        {

            modifier_profile($email,$telephone,$codepostale,$adresse,$ville,$avatar,$avatar_tmp);
            ?>
            <p>Votre profile a été mis à jour <a href='profile.php?id=<?php echo $_SESSION'id']; ?>'>Voir votre profile<a></p>
            <?php

            }else{
                    foreach($errors as $error)
                {
                    echo $error;                    
                    }                   

                }
    }

    $info = info_utilisateur($_SESSION'id']);
?>
<div id="formu">
<article id="formulaire">
<h1>Modifier votre profile</h1>
<form action="" method="POST" enctype="multipart/form-data">
<fieldset>

<label for="email">Email :</label>
        <input type="text" name ="email" value="<?php echo $info'email']; ?>" placeholder="Saisissez votre adresse nouvelle Email">

        <label for="telephone">Téléphone :</label>
        <input type="text" name ="telephone" value="<?php echo $info'telephone']; ?>" placeholder="Saisissez votre noveau Téléphone">
<label for="adresse">adresse :</label>
        <input type="text" name ="adresse" value="<?php echo $info'adresse']; ?>" placeholder="Saisissez votre nouvelle adresse">
<label for="codepostale">Code postale :</label>
        <input type="text" name ="codepostale" value="<?php echo $info'codepostale']; ?>" placeholder="Saisissez votre nouveau code postale">        
        <label for="ville">ville :</label>
        <input type="text" name ="ville" value="<?php echo $info'ville']; ?>" placeholder="Saisissez votre novelle ville">
        <label>Avatar :</label>
        <input type="file" name="avatar" /><br> <br>
<input type="submit" name="submit" value="Modifier" />
</fieldset>
</form>
</article>
</div>
<?php include 'includes/footer.php'; ?>

si tu as besoin de plus dit le moi
merci.

Guigs63, il y a 13 ans

Je te conseille d'éditer ton message pour mettre ton code entre les balises "code" ça permet de mieux lire et ensuite je serais toi j'éviterai de mettre mon password en clair, surtout quand il s'agit d'un password que tu utilise ailleurs...

Quand l'utilisateur se connecte, il passe par ta fonction "nom_utilisateur"?

Une piste sur laquelle partir :

  • utiliser une variable de session pour stocker l'utilisateur
  • Renseigner cette variable à la connexion de l'utilisateur
  • Ensuite dans ta fonction "info_utilisateur" tu passe en paramètre la variable de session au lieu de ton $_GET'id']
papayou12, il y a 13 ans

merci pour ta reponse mais peut tu m'en dire d'avantage stp car je ne vois pas ou je peut modifier ce que tu m'a dit

Guigs63, il y a 13 ans

On va essayé de résumer ton problème.

Un utilisateur se connecte, il veut afficher ses infos de profil.

Où est le formulaire de connexion?
Quelle fonction est appelée lors de la connexion?
Comment récupérer les infos propres à un utilisateur? (utilisation des sessions)

Tu as tous les éléments mais tu te mélange les pinceaux.

<p>Votre profile a été mis à jour <a href='profile.php?id=<?php echo $_SESSION'id']; ?>'>Voir votre profile<a>

Par exemple ici, étant donné que ta variable de session peut se récupérer de page en page. Tu n'a pas besoin de faire un lien de ce genre.
Tu aura juste un lien vers ta page "profile.php" et c'est à l'intérieur de celle ci que tu exploitera ta variable de session.

Dans un premier temps, concentre toi sur la variable de session :

  • Quand je me connecte, est ce que ma variable est bien rempli et est-ce que je peux y accéder depuis d'autres pages?
papayou12, il y a 13 ans

voila le formulaire de connexion

<?php require 'includes/includes.php'; ?>
<?php 
if(isset($_GET'logout'])){
    if(isset($_SESSION'user'])){
        unset($_SESSION'user']);
    }
     $_SESSION'message'] = "Vous etes maintenant deconnecte.";
}

if(isset($_POST) && !empty($_POST'password']) && !empty($_POST'email']) ){

    $email = addslashes($_POST'email']);
    $password = sha1($_POST'password']);
    $data = array(
              'password' => $password,
              'email'=>$email
            );
    $sql = 'SELECT * FROM users WHERE email=:email AND password=:password limit 1' ;
    $req = $DB->tquery($sql,$data);
    if(!empty($req)){
        // user existant
        if($req[0]'active'] ==1){  
            $_SESSION'user'] = $req[0];
            $_SESSION'message'] ="Bienvenue, Vous etes maintenant connecte.";
            header('location:index.php');
        }else{
             $_SESSION'erreur'] ="Compte user Non actif, veuillez verifier votre boite email pour activer votre compte.";
        }   
    }
    else{
      $_SESSION'erreur'] ="Votre email et/ou mot de passe sont invalides";
   }

  }
  require 'includes/header3.php'; ?>
   <!-- Message dans la session -->
  <?php if (isset($_SESSION'message'])): ?>
    <div class="message"> <?php echo $_SESSION'message']; ?></div>
    <?php unset( $_SESSION'message']); ?>
  <?php endif ?>
   <?php if (isset($_SESSION'erreur'])): ?>
    <div class="errorMessage"> <?php echo $_SESSION'erreur']; ?></div>
    <?php unset( $_SESSION'erreur']); ?>
  <?php endif ?>

<div id="formu">
<article id="formulaire">
<h1>Connexion</h1>
<form action="login.php" id="login" method="post">
<fieldset>

          <label for="email">Email :</label>
          <input type="email" name ="email" id="email" required="required" placeholder="Saisissez votre email">

          <label for="password">Mot de passe :</label>
          <input type="password" name ="password" id="password" required="required" placeholder="Saisissez votre mot de passe">

         <a href="signup.php"> <input type="submit" name="submit" value="S'inscrire"> </a>

          <input type="submit" name ="submit" value="Se connecter">

</fieldset>
</form>
</article>
</div>
<?php require 'includes/footer.php'; ?>

donc sa je doit le supprimer?

<p>Votre profile a été mis à jour <a href='profile.php?id=<?php echo $_SESSION'id']; ?>'>Voir votre profile<a>
papayou12, il y a 13 ans

si tu veux d'autre renseignement dit moi

Guigs63, il y a 13 ans

Relis ce que je t'ai dis plus haut, tu as tout.

if(!empty($req)){
        // user existant
        if($req[0]'active'] ==1){  
            $_SESSION'user'] = $req[0];
            $_SESSION'message'] ="Bienvenue, Vous etes maintenant connecte.";
            header('location:index.php');
        }else{
             $_SESSION'erreur'] ="Compte user Non actif, veuillez verifier votre boite email pour activer votre compte.";
        }   

    }

C'est pas $_SESSION'id'] qu'il te faut?
Tu pourra la retrouver dans $_SESSION'user'], tu as forcément l'id de l'utilisateur qui traîne vu que tu passe toutes ses infos en session.

Je ne t'ai pas dis de supprimer, je t'ai dis de faire un lien simple vers profile.php sans ajouter de variable en GET.
Sinon n'importe qui peut changer le "?id=" et mettre la valeur qu'il veut pour tomber sur le profil de quelqu'un d'autre.

papayou12, il y a 13 ans

ok
j'ai déja modifier sa

<p>Votre profile a été mis à jour <a href='profile.php'>Voir votre profile<a></p>

et ensuite dans ma page connect.php je doit modifier sa

$_SESSION'id'] = 1;

par ceci

$_SESSION'user'];
Guigs63, il y a 13 ans

Essaye d'afficher ta variable de session avec un print_r($_SESSION'user'])
Tu va voir que tu aura ton identifiant du user.
Ensuite ton connect.php ne te sert qu'a faire ta connexion à ta bdd, ton problème ne vient pas de là.
Quand tu te connecte ta variable de connexion est remplie correctement, tu peux ensuite la réutiliser pour récupérer tes infos.

Je ne sais pas si c'est toi qui a tout écrit dans ce code mais quoi qu'il en soit il faut déjà que tu comprennes le cheminement sinon tu ne va pas pouvoir avancer.

papayou12, il y a 13 ans

ok
je l'ai écrit avec un tutoriel
et la je ne voit pas ce que tu veux dire.
je suis perdue

papayou12, il y a 13 ans

peut tu m'aider stp je suis désespérer merci

Guigs63, il y a 13 ans

Il ne faut pas désespérer! C'est pas la dernière fois que tu sera bloquer sur un bout de code.

On va commencer par une question : As-tu compris le fonctionnement des variables de session?

papayou12, il y a 13 ans

non je ne suis pas sur d'avoir bien compris

Guigs63, il y a 13 ans

Regarde d'abord comment marche les variables de session. En gros tu stocke des informations réutilisables de pages en pages.
Quand est t'il pour le cheminement de la connexion :

  • le visiteur à créé son compte

  • il décide de s'authentifier

  • il va sur la page login.php

  • il envoi le formulaire

  • chouette il a rentré le bon login/password

    $sql = 'SELECT * FROM users WHERE email=:email AND password=:password limit 1' ;
    $req = $DB->tquery($sql,$data);

    if(!empty($req)){
        // user existant
        if($req[0]'active'] ==1){  
            $_SESSION'user'] = $req[0];
            $_SESSION'message'] ="Bienvenue, Vous etes maintenant connecte.";
            header('location:index.php');
        }else{
             $_SESSION'erreur'] ="Compte user Non actif, veuillez verifier votre boite email pour activer votre compte.";
        }   
    
    }
  • Ma requête a fonctionnée et j'ai maintenant dans $_SESSION'user'] toutes les infos de mon user.

Maintenant c'est bien beau mais je voudrais pouvoir avoir accès à une page de profil par utilisateur.
-"Oui mais quand je vais sur ma page profil je dois changer dans la barre d'adresse l'id de l'utilisateur pour tomber sur le bon!"
-"Oui c'est très moche et ça permet a quiconque d'accéder au profil et de le modifier."
-"D'accord mais comment faire?"

Tu as une variable de session avec notamment l'id unique de l'utilisateur, quand tu va sur la page profil.php tu peux récupérer cette valeur :
$_SESSION'user']'id'].

-"Mais c'est génial, j'ai fais tout un lot de fonction dans lequel je passe l'id de l'utilisateur et il me renvoi les informations le concernant!".

Et la tu affiche dans un premier temps les informations de l'utilisateur à partir de ta variable de session.
Pour l'édition tu verra pas la suite, quand tu aura fait ça tu sera déjà pas mal.

papayou12, il y a 13 ans

ok je vois sa et je te tien au courant merci encore

papayou12, il y a 13 ans

sa marche je te remercie je suis content et sa ma permis de voir mon erreur maintenant je sais faire trop cool

Guigs63, il y a 13 ans

De rien n'oubli pas de mettre ton sujet en résolu ;)

papayou12, il y a 13 ans

Comment je fait pour mettre en resolu