Problème avatar
- Accueil
- Forum
- Programmation
- PHP
- Problème avatar
papayou Le 20 octobre 2019 à 17:13 (Édité le 24 novembre 2019 à 21:07)
j'ai un souci quand je valide mon image pour le mettre en avatar il me mais une erreur et rien ne s'affiche dans ma bdd
<?php require 'include/header.php';?>
<?php
session_start();
$bdd = new PDO('mysql:host=localhost;dbname=cismareuil;charset=utf8', 'mareuil', 'pomme60100');
if(isset($_SESSION['id'])) {
$requser = $bdd->prepare("SELECT * FROM membre WHERE id = ?");
$requser->execute(array($_SESSION['id']));
$user = $requser->fetch();
if(isset($_POST['newnom']) AND !empty($_POST['newnom']) AND $_POST['newnom'] != $user['nom']) {
$newnom = htmlspecialchars($_POST['newnom']);
$insertnom = $bdd->prepare("UPDATE membre SET nom = ? WHERE id = ?");
$insertnom->execute(array($newnom, $_SESSION['id']));
header('Location: profile.php?id='.$_SESSION['id']);
}
if(isset($_POST['newmdp']) AND !empty($_POST['newmdp'])) {
$mdp = sha1($_POST['newmdp']);
$insertmdp = $bdd->prepare("UPDATE membre SET password = ? WHERE id = ?");
$insertmdp->execute(array($mdp, $_SESSION['id']));
header('Location: profile.php?id='.$_SESSION['id']);
}
if(isset($_POST['newmdp1']) AND !empty($_POST['newmdp1']) AND isset($_POST['newmdp2']) AND !empty($_POST['newmdp2'])) {
$mdp1 = sha1($_POST['newmdp1']);
$mdp2 = sha1($_POST['newmdp2']);
if($mdp1 == $mdp2) {
$insertmdp = $bdd->prepare("UPDATE membre SET password = ? WHERE id = ?");
$insertmdp->execute(array($mdp1, $_SESSION['id']));
header('Location: profile.php?id='.$_SESSION['id']);
} else {
$msg = "Vos deux mots de passe ne correspondent pas !";
}
}
//----------------------------------------------------------------------------------------------------------------------------------------------
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 = "avatar/".$_SESSION['id'].".".$extensionUpload;
$resultat = move_uploaded_file($_FILES['avatar']['tmp_name'], $chemin);
if($resultat) {
$updateavatar = $bdd->prepare('UPDATE membre SET avatar = :avatar WHERE id = :id');
$updateavatar->execute(array(
'avatar' => $_SESSION['id'].".".$extensionUpload,
'id' => $_SESSION['id']
));
header('Location: editionprofile.php?id='.$_SESSION['id']);
} else {
$msg = "Erreur durant l'importation de votre photo de profil";
}
} 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 2Mo";
}
}
?>
<head>
<title>Profil</title>
<meta charset="utf-8">
<link rel="stylesheet" href="css/inscription.css" media="all" />
</head>
<div class="signup-form">
<h1>Edition de mon profil</h1><br />
<form method="POST" action="" enctype="multipart/form-data">
<label style="color:#fff";>Nom :</label>
<input type="text" name="nom" placeholder="Prénom.Nom" value="<?php echo $user['nom']; ?>" class="txtb"/>
<label style="color:#fff";>Mot de passe :</label>
<input type="password" name="newmdp1" placeholder="Votre mot de passe" class="txtb"/>
<label style="color:#fff";>Confirmation mot de passe :</label>
<input type="password" name="newmdp2" placeholder="Confirmez mot de passe" class="txtb"/>
<label style="color:#fff";>Avatar :</label>
<input type="file" name="avatar" value="Afficher Avatar" class="signup-text"/>
<input type="submit" value="Mettre à jour" class="signup-btn"/>
</form>
<?php if(isset($msg)) { echo $msg; } ?>
</div>
<?php
}
else {
header("Location: index.php");
}
?>
<?php require 'include/footer.php';?>
didoub74 Le 20 octobre 2019 à 22:51 (Édité le 20 octobre 2019 à 22:54)
$bdd = new PDO('mysql:host=localhost;dbname=cismareuil;charset=utf8', 'mareuil', 'pomme60100');
par un fichier externe avec un include : fichier test dispo https://gist.github.com/didoub74/ef0e5f962316ea456efa5ff2ca5f50cc
De 2
Il y a t'il une erreur qui s'affiche si tu n'as pas activer les erreur active les grâce à ce site : https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/4238821-configurez-php-pour-visualiser-les-erreurs
De 3
Si ça ne marche toujours pas essaye de recommencer la vidéo en suivant bien tout
papayou Le 21 octobre 2019 à 08:00 (Édité le 21 octobre 2019 à 08:19)
je viens de regarder et sa ne marche toujours pas je ne sais plus quoi faire et en plus ma mise à jours de mon profil ne fonctionne plus
didoub74 Le 21 octobre 2019 à 08:42 (Édité le 1 janvier 1970 à 01:00)
Est ce que il y a une erreur qui s'affiche ? Ou Y a t-il une page blanche
papayou Le 21 octobre 2019 à 13:03 (Édité le 1 janvier 1970 à 01:00)
didoub74 Le 23 octobre 2019 à 09:08 (Édité le 1 janvier 1970 à 01:00)
papayou Le 24 octobre 2019 à 18:26 (Édité le 1 janvier 1970 à 01:00)
oui j'ai vue sa marche en partie il me l'enregistre bien dans mon dossier mais pas dans ma basse de données
didoub74 Le 28 octobre 2019 à 08:31 (Édité le 28 octobre 2019 à 08:32)
Moi j'ai ce code : (page : avatar.php)
<?php
session_start(); // Pour récupèrer nos données dans les variables : $_SESSION
include('connexionDB.php'); // Pour faire la connexion à notre base de données
if(!empty($_POST)){
extract($_POST); // On extrait toutes les informations
$valid = true;
if (isset($_POST['avatar'])){ // On se positionne sur le bon formulaire
if (isset($_FILES['file']) and !empty($_FILES['file']['name'])) { // On vérifie qu'il y a bien un fichier
$filename = $_FILES['file']['tmp_name']; // On récupère le nom du fichier
list($width_orig, $height_orig) = getimagesize($filename); // On récupère la taille de notre fichier (l'image)
if($width_orig >= 400 && $height_orig >= 400 && $width_orig <= 6000 && $height_orig <= 6000){ // On vérifie que la taille de l'image et correcte
$ListeExtension = array('jpg' => 'image/jpeg', 'jpeg'=>'image/jpeg', 'png' => 'image/png', 'gif' => 'image/gif');
$ListeExtensionIE = array('jpg' => 'image/pjpg', 'jpeg'=>'image/pjpeg');
$tailleMax = 5242880; // Taille maximum 5 Mo
// 2mo = 2097152
// 3mo = 3145728
// 4mo = 4194304
// 5mo = 5242880
// 7mo = 7340032
// 10mo = 10485760
// 12mo = 12582912
$extensionsValides = array('jpg','jpeg'); // Format accepté
if ($_FILES['file']['size'] <= $tailleMax){ // Si le fichier et bien de taille inférieur ou égal à 5 Mo
$extensionUpload = strtolower(substr(strrchr($_FILES['file']['name'], '.'), 1)); // Prend l'extension après le point, soit "jpg, jpeg ou png"
if (in_array($extensionUpload, $extensionsValides)){ // Vérifie que l'extension est correct
$dossier = "public/avatars/" . $_SESSION['id'] . "/"; // On se place dans le dossier de la personne
if (!is_dir($dossier)){ // Si le nom de dossier n'existe pas alors on le crée
mkdir($dossier);
}else{
if(file_exists("public/avatars/". $_SESSION['id'] . "/" . $_SESSION['avatar']) && isset($_SESSION['avatar'])){
unlink("public/avatars/". $_SESSION['id'] . "/" . $_SESSION['avatar']);
}
}
$nom = md5(uniqid(rand(), true)); // Permet de générer un nom unique à la photo
$chemin = "public/avatars/" . $_SESSION['id'] . "/" . $nom . "." . $extensionUpload; // Chemin pour placer la photo
$resultat = move_uploaded_file($_FILES['file']['tmp_name'], $chemin); // On fini par mettre la photo dans le dossier
if ($resultat){ // Si on a le résultat alors on va comprésser l'image
if (is_readable("public/avatars/" . $_SESSION['id'] . "/" .$nom . "." . $extensionUpload)) {
$verif_ext = getimagesize("public/avatars/" . $_SESSION['id'] . "/" .$nom . "." . $extensionUpload);
// Vérification des extensions avec la liste des extensions autorisés
if($verif_ext['mime'] == $ListeExtension[$extensionUpload] || $verif_ext['mime'] == $ListeExtensionIE[$extensionUpload]){
// J'enregistre le chemin de l'image dans filename
$filename = "public/avatars/" . $_SESSION['id'] . "/" .$nom . "." . $extensionUpload;
// Vérification des extensions que je souhaite prendre
if($extensionUpload == 'jpg' || $extensionUpload == 'jpeg' || $extensionUpload == "pjpg" || $extensionUpload == 'pjpeg'){
$image2 = imagecreatefromjpeg($filename);
}
// Définition de la largeur et de la hauteur maximale
$width2 = 720;
$height2 = 720;
list($width_orig, $height_orig) = getimagesize($filename);
// Redimensionnement
$image_p2 = imagecreatetruecolor($width2, $height2);
imagealphablending($image_p2, false);
imagesavealpha($image_p2, true);
// Cacul des nouvelles dimensions
$point2 = 0;
$ratio = null;
if($width_orig <= $height_orig){
$ratio = $width2 / $width_orig;
}else if($width_orig > $height_orig){
$ratio = $height2 / $height_orig;
}
$width2 = ($width_orig * $ratio) + 1;
$height2 = ($height_orig * $ratio) + 1;
imagecopyresampled($image_p2, $image2, 0, 0, $point2, 0, $width2, $height2, $width_orig, $height_orig);
imagedestroy($image2);
if($extensionUpload == 'jpg' || $extensionUpload == 'jpeg' || $extensionUpload == "pjpg" || $extensionUpload == 'pjpeg'){
// Content type
header('Content-Type: image/jpeg'); // Important !!
$exif = exif_read_data($filename);
if(!empty($exif['Orientation'])) {
switch($exif['Orientation']) {
case 8:
$image_p2 = imagerotate($image_p2,90,0);
break;
case 3:
$image_p2 = imagerotate($image_p2,180,0);
break;
case 6:
$image_p2 = imagerotate($image_p2,-90,0);
break;
}
}
// Affichage
imagejpeg($image_p2, "public/avatars/" . $_SESSION['id'] . "/" . $nom . "." . $extensionUpload, 75);
imagedestroy($image_p2);
}
$DB->insert("UPDATE utilisateur SET avatar = ? WHERE id = ?",
array(($nom.".".$extensionUpload), $_SESSION['id']));
$_SESSION['avatar'] = ($nom.".".$extensionUpload); // On met à jour l'avatar
$_SESSION['flash']['success'] = "Nouvel avatar enregistré !";
header('Location: profil'); // Pour la redirection
exit;
}else{
$err = "Le type MIME de l'image n'est pas bon";
}
}
}else
$messer = "Erreur lors de l'importation de votre photo.";
}else
$messf = "Votre photo doit être au format jpg.";
}else
$messt = "Votre photo de profil ne doit pas dépasser 5 Mo !";
}else
$messdim = "Dimension de l'image minimum 400 x 400 et maximum 6000 x 6000 !";
}else
$messim = "Veuillez mettre une image !";
}elseif(isset($_POST['dltav'])){
if(file_exists("public/avatars/". $_SESSION['id'] . "/" . $_SESSION['avatar']) && isset($_SESSION['avatar'])){
unlink("public/avatars/". $_SESSION['id'] . "/" . $_SESSION['avatar']);
rmdir("public/avatars/". $_SESSION['id'] . "/");
$DB->insert("UPDATE utilisateur SET avatar = ? where id = ?",
array(NULL, $_SESSION['id']));
$_SESSION['avatar'] = NULL;
}
$messsupp = "Votre avatar a été supprimé !";
header('Location: profil');
exit;
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mon profil</title>
<link rel="stylesheet" type="text/css" href="style3.css" />
</head>
<body>
<?php
require_once'menu.php';
?>
<br/>
<div align="center" class="container">
<div class="row">
<div class="col-sm-0 col-md-2 col-lg-1"</div>
<div class="col-sm-12 col-md-8 col-lg-10">
<div class="cdr-ins">
<?php
if(file_exists("public/avatars/". $_SESSION['id'] . "/" . $_SESSION['avatar']) && isset($_SESSION['avatar'])){
?>
<img src="<?="public/avatars/". $_SESSION['id'] . "/" . $_SESSION['avatar']; ?>" width="120" class="sz-image"/>
<?php
}else{
?>
<img src="public/avatars/default/default.png" width="120" class="sz-image" />
<?php
}
?>
<span class="image-upload">
<form method="post" enctype="multipart/form-data">
<label for="file" style="margin-bottom: 0; margin-top: 5px; display: inline-flex">
<input id="file" type="file" name="file" class="file" />
<h3 class="fa fa-plus image-plus"></h3>
<input type="submit" class="button" name="avatar" value="Envoyer"/><br />
</label>
</form>
</span>
<div style="border-top: 2px solid #eec; margin-top: 20px; padding-top: 20px">
<form method="post">
<label><b>Supprimer l'avatar</b></label>
<input type="submit" class="button" name="dltav" value="Supprimer"><br />
<?php
if (isset($messsupp)){
?>
<div><?= $messsupp ?></div>
<?php
}
?>
<?php
if (isset($err)){
?>
<div><?= $err ?></div>
<?php
}
?>
<?php
if (isset($messer)){
?>
<div><?= $messer ?></div>
<?php
}
?>
<?php
if (isset($messf)){
?>
<div><?= $messf ?></div>
<?php
}
?>
<?php
if (isset($messt)){
?>
<div><?= $messt ?></div>
<?php
}
?>
<?php
if (isset($messdim)){
?>
<div><?= $messdim ?></div>
<?php
}
?>
<?php
if (isset($messim)){
?>
<div><?= $messim ?></div>
<?php
}
?>
</form>
</div>
</div>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
Et ça dans ma base de donnés :
BDD
papayou Le 1 novembre 2019 à 10:53 (Édité le 1 janvier 1970 à 01:00)
papayou Le 2 novembre 2019 à 15:38 (Édité le 1 janvier 1970 à 01:00)
je viens de regarder et de modifier le code par contre maintenant il me dit que
Le type MIME de l'image n'est pas bonalors que j'ai bien importer le bon format du jpg donc je ne comprend ce qui cloche.
merci