Bonjour,
Voila je rencontre un petit problème avec mon code.
Donc, j'ai créer un espace membre dont une partie provient d'ici, et le reste de gauche à droite, plus mon css et mes lignes de codes pour formulaire etc. Tout fonctionne correctement sauf juste un détail au niveau de l'avatar.
L'avatar s'upload bien dans la bdd et dans mon répertoire.
Deux problèmes surviennent,
- Le premier: Obliger de déconnecté et reconnecté l'utilisateur pour que la photo se modifie, je cherche a se qu'elle change sans avoir à faire cette manipulation .
- Le deuxième : J'autorise jpg, gif, png et quand je change d'image avec edition de profil->changer avatar et que je mets une image en jpg alors qu' une png etait déja en place dans mon répertoire je me retrouve avec deux images avec le meme id mais des extentions différentes. Si je fais avec deux images de la même extentions il efface bien l'ancienne pour remplacer par la nouvelle.
Décrivez ici votre code ou ce que vous cherchez à faire
Mon code de l'avatar
<?php
require 'inc/bootstrap.php';
$auth =App::getAuth();
$db = App::getDatabase();
if(isset($_FILES['avatar']) AND !empty($_FILES['avatar']['name'])) {
$tailleMax = 2097152;
$extensionsValides = array('jpg', 'jpeg', 'gif', 'png');
if($_FILES['avatar']['size'] <= $tailleMax) {
$extensionUpload = strtolower(substr(strrchr($_FILES['avatar']['name'], '.'), 1));
if(in_array($extensionUpload, $extensionsValides)) {
$chemin = "membres/avatars/".$_SESSION['auth']->id.".".$extensionUpload;
$resultat = move_uploaded_file($_FILES['avatar']['tmp_name'], $chemin);
if($resultat) {
$updateavatar = $db->query('UPDATE users SET avatar = :avatar WHERE id = :id',(array(
'avatar' => $_SESSION['auth']->id.".".$extensionUpload,
'id' => $_SESSION['auth']->id
)));
App::redirect('profil.php');
}
else
{
$msg="Erreur durant l'importation du fichier !";
}
}
else
{
$msg="Votre photo de profil doit être au format jpg, jpeg, gif ou png!";
}
}
else
{
$msg="Votre photo de profil ne doit pas dépasser 2 Mo !";
}
}
?>
<div id="logphotoprofil">
<form method="POST" action="" enctype="multipart/form-data">
<label>Pseudo : </label>
<input type="text" name="newpseudo" placeholder="pseudo" value="<?php echo $_SESSION['auth']->username;?>"/><br /><br />
<label>Mail : </label>
<input type="email" name="newmail" placeholder="mail" value="<?php echo $_SESSION['auth']->email;?>" /><br /><br />
<label>Mot de passe : </label>
<input type="password" name="newmdp1" placeholder="Mot de passe" /><br /><br />
<label>Confirmez votre mot de passe : </label>
<input type="password" name="newmdp2" placeholder="Confirmation mot de passe" /><br /><br />
<label>Avatar : </label>
<input type="file" name="avatar" /><br /><br />
<input type="submit" value="Mettre à jour mon profil !" />
</form>
<?php
if(isset($msg))
{
echo $msg;
}
?>
</div>
Mon code pour afficher dans profil
<?php
require 'inc/bootstrap.php';
$auth =App::getAuth();
$db = App::getDatabase();
if(isset($_GET['id']) AND $_GET['id'] > 0)
{
require_once 'inc/db.php';
$getid =intval($_GET['id']);
$user = $db->query('SELECT * FROM users WHERE id =?',(array($getid)))->fetch();
}
require 'inc/header.php';
require 'inc/menu.php';
?>
<div align="center">
<div class="container">
<form class="form-horizontal">
<fieldset>
<div class="blockg">
<h2>Bienvenue <?= $_SESSION['auth']->username; ?> sur votre profil</h2>
<div class="logphotoprofil">
<img src="membres/avatars/<?= $_SESSION['auth']->avatar ?>" width="150" height="150">
</div>
</div>
</fieldset>
</form>
</div>
</div>
Ce que je veux
Ne plus devoir me déconnecter et reconnecter pour voir le changement de mon avatar
Pouvoir effacer dans le repertoire de destination l'image de mon avatar qui porte le meme Id mais avec une extentions différente quand je la modifie.
Ce que j'obtiens
Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(