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
Bonjour,
Un minimum de code serait appréciable pour pouvoir te répondre.
Visiblement tu devra regarder du côté des variables de session.
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.
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 :
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
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 :
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>
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.
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'];
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.
ok
je l'ai écrit avec un tutoriel
et la je ne voit pas ce que tu veux dire.
je suis perdue
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?
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.
sa marche je te remercie je suis content et sa ma permis de voir mon erreur maintenant je sais faire trop cool